花絮
每天都在和面向对象打交道,但是我们在应用面向对象的时候感觉自己的面向对象技术应用的很合理?理解的很到位?应用的很到位?用的时候恰到好处?用的是否符合软件的发展趋势?
上面很多一连串的问题,没有把你搞晕吧!我想说的面向对象的应用也有面向对象的原则,一个程序员的编程素质从一个小例子几十行代码就可以展现出来。面向对象编程是是面向对象的基础中的基础,废话不多说,你要遵循下面向对象的原则编程,那你的编程水平才会大幅度提高!
思考
大家可以想象为什么你去面试的是时候一般会给你一小段程序让你去编写?这样的有什么意义?主考官的出题目的是什么?我们应该怎么显示自己代码素质?
我想这个问题我们在面试的时候应该好好想一下,因为这样我们才能更好的应对面试,更好的展现我们的才华,公司更喜欢录用你,而你要更高薪金是很轻而易举的事情。
答案是:一小段代码就能显示我们的代码素质,去面试实现简简单单的功能并不是很牛,而是把自己的编程思维展现给别人(编程思维培养请看:“菜鸟”程序员和“大神”程序员差距在哪里),而最重要的是展现出软件的功能的可维护性和复用性,因为这样编程的才是自己思维的结晶,编程的后期维护带来了极大的好处,所以说软件功能的可维护性和复用性是软件的发展潜力,软件的这个方面才是最重要的!
通过这两幅图片你就可以认识到他们的重要性了吧,因为他们是这个行业的顶级专家,他们的思想是这么高,我们不应该好好的学习一下巨人的思想吗?答案是肯定的。
个人理解观点:
软件的复用(Reuse)或重用拥有众多优点,如可以提高软件的开发效率,提高软件质量,节约开发成本,恰当的复用还可以改善系统的可维护性。
面向对象设计复用的目标在于实现支持可维护性的复用。
在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。
面向对象设计原则和设计模式也是对系统进行合理重构的指南针,重构(Refactoring)是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
面向对象原则综述
七大原则总脉络图:
注:1,2,3,4,5显示的重要等级
常用的面向对象设计原则包括7个,这些原则并不是孤立存在的,它们相互依赖,相互补充。
下面就是面向对象七个原则的一一解析
一、开闭原则
1.开闭原则定义 :一个软件实体应当对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。
2.开闭原则分析:
(1)开闭原则由Bertrand Meyer于1988年提出,它是面向对象设计中最重要的原则之一。
(2)在开闭原则的定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类。
(3)抽象化是开闭原则的关键。
(4)开闭原则还可以通过一个更加具体的“对可变性封装原则”来描述,对可变性封装原则(Principle of Encapsulation of Variation,EVP)要求找到系统的可变因素并将其封装起来。
3.开闭原则实例:
某图形界面系统提供了各种不同形状的按钮,客户端代码可针对这些按钮进行编程,用户可能会改变需求要求使用不同的按钮,原始设计方案如图所示:
图(1)
现对该系统进行重构,使之满足开闭原则的要求。
图(2)
对比分析
图(1):客户端的一个方法直接调用加法类,但是我想添加一个减法类,你就会发现添加减法类就得改变加法类中代码(用switch语句实现),这就违背了“开闭原则”,于是我们就应该重新重构。
如图(2)在这个图中我们添加了一个运算类的父类,这样我们再添加减法类的时候就不用修改客户端类。
开闭原则总结:面对需求,对程序的改动是通过增加新代码进行的,而不是改变原来的代码。
分享到:
相关推荐
下面是七大面向对象设计原则的总结: 一、开闭原则 开闭原则是面向对象设计中最重要的原则之一。它定义为:一个软件实体应当对扩展开放,对修改关闭。也就是说,在设计一个模块的时候,应当使这个模块可以在不被...
深入理解面向对象编程(OOP)的基本原则,如封装、继承、多态等,是构建高效、可扩展性强的Java应用程序的基础。良好的面向对象设计不仅能提高代码的复用率,还能降低系统维护的成本。 #### 九、编码规范 遵循一致...
### Java程序员必备技能详解 #### 一、语法基础 对于一名Java程序员而言,掌握扎实的语法基础至关重要。这意味着在编写代码时,面对IDE(集成开发环境)中的报错信息能够迅速定位并解决语法错误。例如,当遇到诸如...
STL极大地提高了开发效率,简化了编程工作,是C++程序员必备的知识。 九、智能指针 智能指针是一种自动管理内存的对象,如std::unique_ptr、std::shared_ptr和std::weak_ptr。它们在对象不再使用时自动释放内存,...
- **设计模式**:利用面向对象的设计模式解决常见的软件设计问题。 - **接口与实现分离**:将接口和实现分离,增强代码的灵活性和可扩展性。 - **契约编程**:通过预设条件、后置条件等方式明确函数的行为预期。 ##...
以上只是23种设计模式中的一部分,每种模式都有其独特的应用场景和价值,理解并熟练运用这些设计模式,能有效提升软件的可维护性、可扩展性和可复用性,是成为优秀C++程序员的必备技能。在实际开发中,根据项目需求...
熟练的C++程序员会深入理解类的设计原则,如单一职责原则、开闭原则等,以及接口与抽象类的区别。同时,他们会熟练运用虚函数、纯虚函数实现多态性,并理解虚析构函数的重要性。 三、STL与算法 标准模板库(STL)是...
1. **编程语言**:面试中,面试官可能会考察你对某一特定编程语言(如Java、Python、C++或JavaScript)的理解,包括语法、面向对象编程概念、异常处理、内存管理等方面的知识。你需要熟悉至少一两种主流编程语言,并...
面向对象编程(OOP)是Java设计的核心理念。掌握OOP的基本原则(封装、继承、多态)是写出高质量、可维护性强的代码的基础。 #### 八、规范 遵循良好的编码规范对于保持代码的一致性和可读性至关重要。例如,类名首...
封装、继承和多态是OOP的三大原则,封装保证数据安全,继承实现代码复用,多态则提供灵活的设计可能性。 四、模板与泛型编程 C++的模板允许我们编写泛型代码,即不依赖特定数据类型的代码。这在编写算法和容器(如...
8. **软件设计原则**:面向对象编程的三大特性(封装、继承、多态),以及设计模式(单例、工厂、观察者等)的理解和应用。 在准备这样的模拟试题时,考生应全面复习以上知识点,并通过做题来检查自己的理解和应用...
《C++面向对象程序设计(李涛)》是一本深入探讨C++编程语言,特别是其面向对象特性的经典教程。C++是一种强大的、通用的编程语言,由Bjarne Stroustrup于1979年在C语言的基础上发展而来,旨在提供更高级别的抽象和...
理解变量、控制流、函数、类等基本概念以及面向对象编程的原则至关重要。 其次,数据结构和算法是面试中的重头戏。这包括数组、链表、栈、队列、树、图、哈希表等数据结构的使用和特性,以及排序、搜索、动态规划等...
Java作为面向对象的编程语言,其特性包括平台独立性、安全性、高效性和可移植性。熟练掌握Java语法、类与对象、封装、继承和多态是Java程序员的基本功。此外,理解异常处理、集合框架(如ArrayList、LinkedList、...
3. **Java**:Java是企业级应用的主流语言,其面向对象特性、异常处理、垃圾回收机制、多线程、IO流、集合框架等都是面试常考内容。学习Java时,深入理解JVM的工作原理和Spring框架的应用也是提升竞争力的关键。 4....
2. **数据结构与算法**:这是任何程序员必备的知识,包括数组、链表、栈、队列、树、图等基本数据结构,以及排序算法(如冒泡、选择、插入、快速、归并)、查找算法(如二分查找、哈希查找)等。 3. **操作系统**:...
第十七讲可能涉及异常处理,这是编写健壮程序的关键,而第十八和第十九讲则可能涵盖了一些高级主题,如接口、内部类、集合框架或者线程编程,这些都是Java程序员必备的技能。 课件中的每一讲都可能配有实例代码,让...
Steve McConnell在书中不仅介绍了当时已有的编程语言和技术,还预测并探讨了未来可能的发展趋势,如面向对象编程、设计模式等。这些内容对于当时的读者来说,无疑是一份宝贵的技术前瞻资料。 ### 三、通用概念与...
四、面向对象设计原则 理解SOLID原则(单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则)是提升代码质量的关键。此外,还要学习模块化设计、组件化思想,以及如何实现可复用、可维护的代码。...
- **面向对象设计原则:** 如单一职责原则、开闭原则等。 #### 九、Heap与Stack的区别 - **栈(Stack):** 是一种线性集合,遵循后进先出(LIFO)原则,用于存储局部变量和方法调用。 - **堆(Heap):** 用于存储对象...