五、面向对象

一、什么是面向对象的次序设计

1、面向进度的主次设计:宗旨是经过二字,进度指的是解决难点的步骤,即先干什么再干什么……面向经过的规划就好比精心设计好一条流水线,是一种机械式的合计方式。

优点是:复杂度的标题流程化,进而简单化(一个繁杂的难点,分成一个个小的步骤去落到实处,完成小的步调将会卓殊简单)

缺陷是:一套流水线或者流程就是用来缓解一个难点,生产汽水的流水线不可能生育小车,即使是能,也得是大改,改一个组件,牵一发而动全身。

接纳场景:一旦成功基本很少改变的气象,闻明的事例有Linux內核,git,以及Apache
HTTP Server
等。

2、面向对象的主次设计:焦点是目的二字

目的是特点与技术的结合体,基于面向对象设计程序就好比在创立一个社会风气,你就是那么些世界的上帝,存在的皆为目的,不设有的也足以创立出来,与面向进程机械式的想想方式形成明显相比,面向对象尤其讲究对切实世界的模拟,是一种“上帝式”的思考情势。

优点是:解决了程序的伸张性。对某一个目标单独修改,会立即反映到总连串统中,如对游戏中一个人物参数的特性和技艺修改都很简单。

缺点:

1.
编程的复杂度远超出面向进度,不打听面向对象而当时上手基于它部署程序,极不难出现过度设计的题材。一些扩张性必要低的场地使用面向对象会徒增编程难度,比如管理linux系统的shell脚本就不相符用面向对象去规划,面向进度反而尤其契合。

2.
不可能向面向进程的顺序设计流水线式的可以很精准的预测难题的拍卖流程与结果,面向对象的主次一旦初叶就由对象时期的互动解决难题,尽管是上帝也手足无措精确地预测最后结果。于是大家日常来看对战类游戏,新增一个游玩人物,在迎阵的长河中极简单并发阴霸的技艺,一刀砍死3个人,那种境况是力不从心准确预感的,只有对象之间相互才能精确地领略最终的结果。

采纳场景:要求平日转移的软件,一般须求的变更都集中在用户层,互联网使用,集团内部软件,游戏等都是面向对象的先后设计大显身手的好地方

面向对象的程序设计并不是总体。对于一个软件品质来说,面向对象的顺序设计只是用来化解扩大性。

图片 1

 

二、类与对象

此起彼伏抽时间完结。。。

三、属性查找以及类与项目

pass

四、继承与派生

pass

五、子类派生的新点子重用父类功能的措施

pass

六、组合(减弱代码冗余)

pass

七、多态与多态性

pass

八、封装

pass

九、绑定方法与非绑定方法

pass

十、反射

pass

十一、内置方法

pass

十二、python中OOP的常用术语

1、抽象/实现

空泛指对具体世界难点和实体的面目表现,行为和特点建模,建立一个有关的子集,可以用来
绘程序结构,从而落成那种模型。抽象不仅囊括那种模型的多少属性,还定义了那个数据的接口。

对某种抽象的已毕就是对此数额及与之有关接口的现实化(realization)。现实化那个历程对于客户
程序应当是透明而且毫无干系的。 

2、封装/接口

包裹描述了对数码/音信举行隐蔽的价值观,它对数据属性提供接口和做客函数。通过别的客户端直接对数据的走访,无视接口,与封装性都是违反的,除非程序员允许这几个操作。作为落到实处的
一部分,客户端根本就不须求了然在包装之后,数据属性是何许社团的。在Python中,所有的类属性都是开诚布公的,但名字可能被“混淆”了,以阻挠未经授权的访问,但仅此而已,再没有其余预防措施了。那就要求在规划时,对数据提供对应的接口,避防客户程序通过不标准的操作来存取封装的数据属性。

瞩目:封装绝不是相等“把不想让外人见到、以后可能改动的东西用private隐藏起来”

的确的卷入是,经过深远的思维,做出出色的肤浅,给出“完整且最小”的接口,并使得内部细节可以对外透明

(注意:对外透明的意思是外表调用者可以万事大吉的得到协调想要的其他效能,一齐意识不到内部细节的留存)

3、合成

合成增添了对类的
述,使得三个不等的类合成为一个大的类,来缓解具体难题。合成 述了
一个相当复杂的系统,比如一个类由其余类组成,更小的零部件也说不定是其余的类,数据属性及行为,
所有那些合在一起,相互是“有一个”的关系。

4、派生/继承/继承结构

派生描述了子类衍生出新的风味,新类保留已存类类型中颇具需求的多寡和行事,但允许修改或者其余的自定义操作,都不会修改原类的概念。
继续描述了子类属性从祖先类继承那样一种办法
后续结构意味着多“代”派生,可以述成一个“族谱”,两次三番的子类,与祖先类都有提到。

5、泛化/特化

基于继承
泛化表示拥有子类与其父类及祖先类有一致的特色。
特化描述所有子类的自定义,也就是,什么性质让它与其祖先类不相同。

6、多态与多态性

多态指的是千篇一律种东西的二种动静:水那种事物有两种不一致的景观:冰,水蒸气

多态性的定义提出了对象如何通过她们联合的属性和动作来操作及走访,而不需考虑他们现实的类。

冰,水蒸气,都持续于水,它们都有一个同名的点子就是变成云,不过冰.变云(),与水蒸气.变云()是全然不相同的经过,即便调用的法门都一样

7、自省/反射

反省也称作反射,这一个特性展现了某目的是何等在运行期取得自己音讯的。假如传一个对象给你,你能够查出它有哪些力量,那是一项强大的特色。假诺Python不帮忙某种格局的自省作用,dir和type内建函数,将很难正常干活。还有那一个特殊性质,像__dict__,__name__及__doc__

十三、面向对象的软件开发

软件的开销其实一整套业内,大家所学的只是内部的一小部分,一个整机的支付进程,须求分明每个阶段的天职,在保证一个阶段正确的前提下再拓展下一个等级的办事,称之为软件工程

    面向对象的软件工程包蕴上面多少个部分:

1.面向对象分析(object oriented
analysis ,OOA)

   
软件工程中的系统分析阶段,需求分析员和用户结成在一起,对用户的必要做出确切的剖析和明朗的表明,从大的上边剖析软件系统应该做怎么着,而不是怎么去做。面向对象的辨析要按照面向对象的概念和艺术,在对任务的剖析中,从客观存在的东西和东西之间的涉嫌,贵南出关于的对象(对象的‘特征’和‘技能’)以及对象之间的沟通,并将拥有同等属性和行事的对象用一个类class来标识。

   
建立一个能反映那是工作景况的须要模型,此时的模子是概括的。

 

2 面向对象设计(object oriented
design,OOD)

   
根据面向对象分析阶段形成的要求模型,对每一片段各自进行具体的宏图。

   
首先是类的规划,类的规划也许含有三个层次(利用三番五次与派生机制)。然后以那么些类为基础提议程序设计的思绪和艺术,包蕴对算法的陈设性。

   
在设计阶段并不牵扯任何一门具体的微机语言,而是用一种更通用的叙述工具(如伪代码或流程图)来描述

 

3 面向对象编程(object oriented
programming,OOP)

   
根据面向对象设计的结果,选用一种计算机语言把它写成程序,可以是python

 

4 面向对象测试(object oriented
test,OOT)

   
在写好程序后交给用户使用前,必须对先后开展严峻的测试,测试的目的是发现先后中的错误并改良它。

   
面向对的测试是用面向对象的办法举行测试,以类作为测试的主导单元。

 

5 面向对象维护(object oriendted soft maintenance,OOSM)

   
正如对任何产品都亟待开展售后服务和掩护一样,软件在运用时也会产出部分难题,或者软件商想创新软件的属性,那就须求修改程序。

   
由于使用了面向对象的艺术开发顺序,使用程序的爱惜相比简单。

   
因为对象的封装性,修改一个对象对任何的对象影响很小,利用面向对象的艺术维护程序,大大提升了软件维护的成效,可扩充性高。

   
在面向对象方法中,最早发展的必定是面向对象编程(OOP),这时OOA和OOD都还从未前进起来,因而先后设计者为了写出面向对象的先后,还非得深切到剖析和安排性领域,越发是布置领域,那时的OOP实际上包罗了当今的OOD和OOP五个阶段,那对程序设计者需要相比较高,许四个人备感很难领悟。

   
现在设计一个大的软件,是严酷按照面向对象软件工程的5个等级举行的,那么些5个级次的做事不是由一个人从头到尾完结的,而是由差别的人分别成功,那样OOP阶段的义务就相比较不难了。程序编写者只必要按照OOd提议的思绪,用面向对象语言编写出程序既可。

 

相关文章