2.8 面向对象,除了面试以外究竟还有何用?

我通常面试的时候会问三个面向对象的问题:
聚合和组合的区别是什么?
什么时候用接口什么时候用抽象类?
看UML图,识别他们之间的关系?

面向对象的目的
复用性:在面向对象编程中,类是定义对象结构的模板或蓝图,通过定义类,我们可以在不同的上下文中创建类的实例(即对象),这大大提高了代码的复用性。类的实例化意味着将抽象转化为具体,类中定义的属性和方法可以在多个对象之间复用,这大大减少了代码的冗余。此外,通过使用继承,子类可以继承并复用父类的属性和方法,进一步提高代码的复用性。
拓展性:面向对象编程具有很强的拓展性。我们可以通过创建新的类或者通过继承和修改现有的类来添加新的功能。多态是面向对象编程中另一个重要的特性,它允许我们将一个类的实例视为其父类或接口的实例,这提高了代码的灵活性和可扩展性。当需求变化时,我们可以通过修改现有的类或者添加新的类来满足新的需求,而不需要修改现有的代码。
是什么原因导致我们习惯忽略面向对象的能力?
1、习惯了面向技术与过程的开发,已经从大学或培训机构就开始学习了,大家都认为写代码就应该如此。
2、大家过分的追求技术,不重视设计,天天炫耀在项目上用上了什么。
3、公司只是重视交付,不重视软件工程。很多项目对于公司来说,能验收就行。不关心系统的如何设计与开发。
面向对象的学习步骤有哪些
搞清楚哪些功能与逻辑需要建模:在开始编写代码之前,我们需要理解我们正在解决的问题,找出问题中的主要实体以及这些实体之间的关系。这个过程通常被称为领域建模或面向对象分析。
熟练掌握封装与单一责任的使用:封装是面向对象的一个重要特性,它隐藏了对象的内部状态,并只通过方法来暴露对象的行为。单一责任原则是指每个对象或模块只应该有一个责任,这样可以提高代码的可维护性和可读性。
掌握模块划分的原则:依赖倒置与接口隔离:依赖倒置原则是指高层模块不应该依赖于低层模块,他们都应该依赖于抽象。接口隔离原则是指客户端不应该依赖于它不需要的接口,这样可以减少模块间的耦合。
掌握落地的方法,例如DDD、MVVM、CQRS等设计思想:这些是一些设计模式和架构模式,可以帮助我们更好地组织代码。例如,DDD(领域驱动设计)是一种将复杂业务逻辑映射到面向对象的代码的方法;MVVM(Model-View-ViewModel)是一种适用于图形用户界面的设计模式;CQRS(命令查询责任分离)是一种将命令操作(修改数据)和查询操作(读取数据)分离的设计模式。
不断的实践与优化:这可能是最重要的一步。理论知识是重要的,但是我们需要将这些知识应用到实践中,才能真正掌握它们。在编写代码时,我们应该不断地反思和优化我们的设计,以便提高代码的质量。
为什么大部分的知名的软件公司,着重这几方面的能力
面向对象的掌握:面向对象是许多编程语言的核心思想,如Java,C++,Python等。理解和掌握面向对象的概念,如封装,继承,多态,以及如何在实际编程中应用这些概念,都是非常重要的。
数据结构的掌握:数据结构如数组,链表,栈,队列,树,图,散列表等,是编程的基础,掌握这些数据结构是解决许多编程问题的关键。它们各自有不同的性质和适用场景,理解并熟练掌握它们对于编写高效、可维护的代码至关重要。
算法的能力:算法是解决特定问题的一系列步骤或指令。在面试中,你可能需要解答一些问题,展示你如何使用算法解决问题,以及你对时间复杂性和空间复杂性的理解。
开发语言的掌握熟练程度:虽然许多编程原则和概念在不同的编程语言中都适用,但是每种语言都有自己的特性和习惯用法。掌握一种或多种编程语言,了解它们的优点和缺点,以及在何种情况下使用它们,都是评估候选人编程能力的重要方面。