面向对象编程
艾克是大叔
这个作者很懒,什么都没留下…
展开
-
正确理解面向对象程序设计 中级篇(四)设计原则之DIP:依赖倒置
高层模块不应该依赖于底层模块。二者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。依赖倒置,这是一个颠覆前面认知的原则。稍微回顾一下前面提到过,在类跟类的关系中,组合和聚合都代表着在类中拥有子对象。而依赖代表着方法中使用了其它对象的方法,依赖被设计为方法的局部变量。(当然,方法中也会调用类的全局变量)这里面的依赖并不是严格区分对象在全局还是在局部。而是方法只要调用其它类的方法,那么就是依赖了其它类。综上依赖的本质就是一个类在方法中使用了其它类的方法。使用其它类的方式一是通过..原创 2020-09-24 20:33:34 · 141 阅读 · 0 评论 -
正确理解面向对象程序设计 中级篇(三)设计原则之LSP:Liskov替换原则
LSP:Liskov替换原则=里氏替换原则。子类型(subtype)必须能够替换掉他们的基类型(basetype)如果能够理解OCP:开放封闭原则。那么就能理解LSP:Liskov替换原则 是一种约定。 它的前提是你的程序是基于OCP设计的。即通过抽象类和接口这种上层抽象将变化封存。所以在编码当中我们会优先使用这些抽象类及接口作为方法参数传递。LSP:Liskov替换原则 是什么?Barbara Liskov 这个人发现了一个替换性质,只有子类能够替换父类时不影响程序功能,才能称这个类是父类的原创 2020-09-24 18:03:45 · 217 阅读 · 0 评论 -
正确理解面向对象程序设计 中级篇(二)设计原则之OCP:开放封闭原则
OCP:开放封闭原则:软件实体(类、模块、函数)应该是可以扩展的,但是不可修改。前言使用OCP是意图在软件设计阶段能够应对未来可能出现的需求变更。达成一种能够应对需求变更又不影响现有代码的设计结构。需求变更时我们要变更什么?在面向对象语言中模块以包的形式体现,函数以类方法的形式体现。所以我们要变更的是类和函数。OCP不允许修改。那么只剩下新增了。如何通过新增进行修改?使用抽象类已经是对象的抽象了。我们还要再向上一层,创造类的抽象。...原创 2020-09-24 17:11:37 · 238 阅读 · 0 评论 -
正确理解面向对象程序设计 中级篇(一)设计原则之SRP:单一职责原则
这是六大面向对象设计原则的第一篇。首先要固定一个角度,就是设计者的角度。使用面向对象的思想去设计程序,而不是照搬需求者提供的信息进行类、接口的设计。那么如何去设计,是我们接下来要讨论的。SRP:单一职责原则流传的解释是:引起类改变的原因只有一种。这句话不容易懂,因为这句话是单一职责这种设计理念的结果。在设计阶段,我们优先考虑的是由什么样的属性(属性也可以是其它类)、方法构成类。单一职责这种设计理念,一般是经过多次重构产生的结果而非一开始就能够做出的设计。因为我们思考的方式一般是自上而下的结构化思原创 2020-09-24 09:22:36 · 137 阅读 · 0 评论 -
正确理解面向对象程序设计 基础篇(五)类与类的关系
现在,应该了解了类是更高级的,是具体对象的抽象。思考时,应将具体对象的属性和方法抽离找到对应的名称来组成类。那么在面向对象中,类与类有怎样的关系呢?继承/泛化关系(is a =是一个)丰田卡罗拉类继承汽车类,我们说丰田卡罗拉是一个汽车。苹果类继承水果类,我们说苹果是一个水果。入库单类继承库存单据类,我们说入库单是一个库存单据。关联关系(has a =有一个)汽车有轮子,汽车有坐垫。...原创 2020-09-23 08:54:08 · 716 阅读 · 0 评论 -
正确理解面向对象程序设计 基础篇(四)为什么要使用面向对象的方式进行程序设计?
为什么要使用类和对象的方式进行程序设计?面向过程与面向对象面向对象编程是后来才出现的,之前的的软件开发方式大多是面向过程的。面向过程简单的说就是将需求看成是各种问题的解决过程(输入、执行、结果这样的过程)。每个过程中包含1个或多个函数,按照顺序执行。这样也挺清晰和简单的。所以面向对象要解决的并不是软件复杂性的问题(操作系统就很复杂)。那么面向对象要解决的是什么问题呢?软件危机诚然,程序设计我们无法在软件建模初期就考虑到回顾一下:类的特征是属性和行为(方法)。每个类的对象都具备这些属性和行为原创 2020-09-22 14:23:41 · 1929 阅读 · 0 评论 -
正确理解面向对象程序设计 基础篇(三)正确看待类和对象的关系
我们先来稍微回顾一下对象和类。对象:对象是具体的、存在的事物。对象拥有属性、行为。对象的行为分为自动和他动两种。类:类是一系列具有相同特征的对象,将这些对象与其他对象区分开来(对于其它对象来说是不同的),形成分类。以目的或目标需要来寻找用于分类的对象特征,这样会使我们更容易的建立类。这种做法叫做关注点分离。类是不具体、不存在的。想怎么分类最重要的是你想怎么分类。...原创 2020-09-21 09:56:05 · 214 阅读 · 0 评论 -
正确理解面向对象程序设计 基础篇(二)正确理解类
什么是类(class)我们中文叫做类(其实是种类这个词),英文叫做class。但是英文中的type与种类这个词的意义更接近。为什么要用class呢?class的有道词典释义:n. 阶级;班级;种类;班;等级vt. 分类;把…分等级;把…归入某等级,把…看作(或分类、归类);把…编入某一班级adj. 极好的;很好的,优秀的,出色的vi. 属于…类(或等级),被列为某类(或某级)n. (英、德)克拉斯(人名)通过释义我们似乎可以在中文中找到另一个词 分类。类 隐含的意义是分类(一个行为)原创 2020-09-19 21:32:41 · 485 阅读 · 0 评论 -
正确理解面向对象程序设计 基础篇(一)正确理解对象
什么是对象?万物皆对象吗?只要学过面向对象的语言,对这句话肯定不陌生,但这句话是会让人误解的。万物指人感知到的一切事物。这些事物中有一些不是对象!属性红色、10米、100kg、一个具体的名字,这些不是对象。可能你知道在有些语言中Color这个类,其中红色是一个对象。这是在编程上为了方便,创造了颜色这个类。而在讨论对象时,颜色单独存在是没有意义的!这些是我们感知到的对象的属性。关于对象的属性我们一般用来区分不同对象时所使用的与对象相关的信息。属性特别指事物不容易改变的、静止的那部分信原创 2020-09-19 17:36:23 · 238 阅读 · 0 评论 -
如何正确理解设计模式:前言
前言想成为一个更好的开发者(使用面向对象语言),就绕不开设计模式。设计模式的定义是:解决面向对象设计中重复出现的问题的固定解决方案。意思就是:面向对象设计的套路。设计模式似乎很难学习,我自己曾经学习过很多次,最终都以失败告终。总结出的原因只有一条:缺乏面向对象软件设计的基础知识、基础概念、基础方法。首先要理解什么是面向对象设计以及怎么做面向对象设计,然后才是如何使用设计模式解决面向对象设计中的问题。所以下一章先聊聊什么是面向对象设计。PS:以后文中出现的设计都泛指面向对象设计。...原创 2020-08-29 10:32:49 · 123 阅读 · 0 评论