面向对象编程:
复杂:与实体世界的交互很多,涉及的生命周期很长,项目周期很长。
帮助特定领域的创建:系统用户和系统开发的沟通困难,用户需求在不断变化。不得不做出一定的改变。
1.规模巨大,几千几百的模块分类;维持设计的一致和完整性,面临挑战在团队管理上。
3 灵活性很大,4. 线程多,设计阶段是连续函数,运行的时候。是离散系统,不是连续系统;所有外部事情会影响内部事件。
无法对大型离散系统的完整行为做出建模。
复杂系统的特征:1. 有一定层次结构;2. 复杂系统的结构是所有组件以及组件间的层次结构的函数;观察者不同。
3. 分离关注:组件内部联系毕组件内的联系更强 4. 共同模式:由少数不同类型子系统,按照不同组合和安排方式来的。
5,找到基础对象,在对象基础上建立更复杂的系统。找到简单工作的系统里本质。
复杂系统规范:
分解:
1. is part of 一部分 2. is a 一个类型,而1个特殊类型;
类结构:是一种;对象结构:组成结构。is a part of
1.掌握 类结构和对象结构。
1.分解:算法,自顶而上的结构化设计(金字塔的形状)2. 面对对象的分解(每个对象都要独立的行为,是某一个模型)
1. 先从算法开始,然后是从对象开始。利用得到的结构表达其他的看法。
面向对象:表达经济性,复用共同的机制;设计基于稳定的中间态。降低复杂软件系统的风险,因为从较小的系统开始增量的演进。
抽象:忽略非本质的细节,转而处理这个对象的一般化,理想化的模型。
层次结构:对象结构,展示不同对象之间,如何通过一些交互模式进行协作;类结构:强调系统中的公共结构行为。
同类对象的所有其他实例具有相应的行为;对象分成相关抽象的组,不同对象的共同属性和特有属性。
面向对象编程:
1. 利用对象作为面向对象编程的基本逻辑构建块,is a 一个类型;2.每个对象都是某个类的一个实例;3.类与类之间,可以通过继承关系联系在一起。
满足3个条件就是OOP。
1. OOD是一种设计方法,展现被设计系统的逻辑模型额物理模型,静态模型和动态模型。
面向对象:利用类和对象,抽象构建逻辑系统结构;结构化设计利用算法抽象。
编程语言:1.面向过程(算法)2. 面向对象(类和对象)3 面向逻辑(谓词演变)4 规则(如果) 5.约束(不变的规则)
抽象的意义:
1, 对一个系统的一种简单的描述,强调系统中的某些细节或属性。
2. 描述一个对象的基本特征,与其他类型的对象区分开。提供清晰定义的概念边界,与观察者的视角有关。
1.对象接口只提供行为,2. 对象捕捉某个对象的全部行为。
对于给定的问题域,决定一组正确的抽象,就是面向对象设计的核心问题。
分离对象的基本行为和她的实现。
1,有动态和静态属性的区别;改变的动作和对象的动态值是程序的中心部分。
实体抽象,动作抽象,虚拟机抽象,偶然抽象。
对象的操作:前置条件,后置条件。违反一个不变量,将破坏一个抽象相关的契约。
我们:有意义的执行一个对象上的哪些操作,以及对象该如何反应。
封装:
1.对象的抽象,优于它的实现过程。
抽象关注对象可以观察到的行为,而封装关注行为的实现。
封装通常是通过信息隐藏来实现的。信息隐藏是不涉及对象本质特征的秘密影藏起来。
类:一个接口(外部视图,所有实例共同行为的抽象)和1个实现(抽象表现和实现期望的行为的机制);
1,封装,分隔构成抽象的结构和行为的元素;封装的作用是分离抽象的概念接口以及实现。
在一个抽象层次隐藏起来的东西,在另外一个抽象层次里可能代表了外部视图。
影藏是为了防止事故。在一个抽象层次上的对象看不到较低抽象层次的实现细节。
模块化:
1.模块化讲程序划分成不同的模块;独立编译。
在一个模块里,声明对象和类。
分解为模块的总体目标是通过允许模块独立地设计和修改,从而减少软件的成本;
在不知道其他模块的实现方法,不会影响的行为的情况下,修改某个模块的实现。
1. 减少编译的成本。重新链接应用。重新编译模块接口,模块实现和其他依赖该接口的模块。
2. 模块接口尽可能小,满足其他用到它模块的需求。
尽可能东西放到模块的实现,而不是重写大量无关的接口代码。
1. 封装抽象的愿望,其他模块看到某些抽象的需要。
1. 每个模块的数据结构,只能模块内的程序调用,而不能模块外的程序调用。
调用数据,通过调用模块的程序获得。
创立 高内聚(逻辑上相关抽象在一起)低愈合(减少模块间的抵赖)
1. 方便跨应用复用,对模块打包;根据模块分配工作,总设计师负责模块的接口。其他人负责实现。
文档开发:以模块为单位,影响模块的开发。将需要保密的代码,放在独立的模块里。
模块的同一接口,也方便给不同用户。
层次结构:
1.单继承:类与类的关系。
一个自类从多个超类集成,甚至扩展或者重新定义超类的结构和行为。
网友评论