面向对象方法是一种运用对象,类,继承,封装,聚合,关联,消息,多态等概念和原则来构造软件系统的开发思想(方法)。
A.对象:把问题域中的事物抽象地表示为系统中的对象,做为系统的基本构成单位。
B.属性和操做:用对象的属性表示事物的数据特征;用对象的操做表示事物的行为特征。
C.对象的封装:对象的属性与操做结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节。
D.类:把具备相同属性和相同操做的对象归为一类,类是这些对象的抽象描述,对象是类的实例。
E:继承:经过在不一样程度上运用抽象的原则,能够获得较通常的类和较特殊的类。特殊类继承通常类的属性与操做,从而简化系统的构造过程及其文档。
F:多态:多态性能够简单地归纳为“一个接口,多种方法”,字面意思为多种形态。程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。
F.聚合:复杂的对象能够用简单的对象做为其构成部分。
G.类的封装:类具备封闭性,把内部的属性和操做隐藏起来,只有公共的操做对外是可见的。
H.消息:对象之间经过消息进行通信,以实现对象之间的动态联系。总之一句,向对象发出的操做请求称之为消息。即要求对象之间只能经过消息进行通信。J.关联:经过关联表达类(一组对象)之间的静态关系。
结构关系:算法
拓展:消息传递机制与函数调用机制的区别第一,在消息传递机制中,每个消息被发送给指定的接收者(对象)。在命令式编程范型中,函数调用机制没有指定的接收者。数据库
第二,消息的解释(用来完成操做请求的方法或操做/代码集)依赖接收者,而且因接收者的不一样而异。编程
第三,在面向对象的范型中,一般在运行时才能知道给定消息的特定的接收者。数据结构
子类从父类中继承属性和操做,根据须要添加本身的属性和方法。通常类与特殊类之间的关系叫泛化关系(继承关系),简称泛化。并发
多重继承:容许一个特殊类具备一个以上通常类的继承模式称做多重继承(软件工程师,有本科,有研究所,有大专学历的)编程语言
一个(较复杂的)对象由其余若干(较简单的)对象做为其构成部分,称较复杂的对象为汇集(组合),称较简单的对象为成分,称这种关系为聚合。
类之间的静态联系称做关联。在实例化后,由类产生对象,由关联产生链接对象的链。链是关联的实例。 关联的表示符号也称做实例链接
从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的作法叫抽象。分过程抽象、数据抽象
类:把具备共同性质的事物划分为一类,得出一个抽象的概念。
对象:全部的对象都是类的实例。实例可以在运行时被产生(初始化)或销毁(删除)。
把对象的属性和操做结合成一个独立的系统单位,并尽量隐蔽对象的内部细节。只是向外部提供接口,下降了对象间的耦合度。
由封装机制保证:数据不能被对象的使用者直接访问。只容许经过由对象提供的方法或代码访问数据。
封装的结果:信息隐蔽,
对象的操做定义了其余的对象怎样得到对其的访问。每个对象都将提供给全部对象的公共操做公开化。它也提供仅局限于特定对象的其它的操做(受保护的和私有的)。其余的对象对被请求的对象怎样提供操做(代码,内部数据)没有感知。
多态是指同一个命名可具备不一样的语义。面向对象方法中,在通常类中定义的属性或操做被特殊类继承以后,具备不一样的数据类型或表现出不一样的行为。用途: 把具备共同基类的对象组成一组,并对它们进行一致的处理。
如,多边形下的三角形、长方形、正多边形。函数
行为分析是咱们用来考察一个对象(类)是怎样提供它的操做的过程。静态模型:关系机制为咱们提供了用同等(关联、依赖)和层次(通常化/特殊化和聚合)结构组织类/对象的方法。不少面向对象的专家把模型的这部分结构称做静态模型。
静态行为:实现操做的代码不被任何外部或内部的事件(动做)所影响。只要咱们使用命令式编程,就能够作到这一点。spa动态行为:在行为中发生这些变化的缘由多是因为对象存在不少不一样的状态。随后,对象根据它的状态作出反映。使用命令式编程技术不能很好地处理这种类型的行为。使用另外的一种称为有限状态机的机制会更好地捕获这样的方法。线程
例如:航班定票系统中的定票过程对象“机票”的状态:预约、等待、确认、取消、使用、归档
拓展:系统中的对象是相互协做的,经过发消息共同完成某项功能。这种协做的交互性,能够用交互图来进行描述。有不少系统具备并发行为。从事物的并发行为的原由上看,每一个并发行为是主动发生的。体如今对象上,就是有一种对象是主动的,它表明着一个进程或线程,剩余的另外一种对象则是被动的。在交互图上也能体现出对象间的并发行为。
引入包(package) 的概念,使模型具备大小不一样的粒度层次,以利于控制复杂性。
天然语言和编程语言的---语言鸿沟
把数据和处理数据的过程做为一个总体,即对象---有助于软件的维护与复用
面向对象方法的主要优势:3d
把易变的数据结构和部分功能封装在对象内并加以隐藏,
一是保证了对象行为的可靠性;
二是对它们的修改并不会影响其余的对象,有利于维护,对需求变化有较强的适应性。封装性和继承性有利于复用对象。
把对象的属性和操做捆绑在一块儿,提升了对象(做为模块)的内聚性,减小了与其余对象的耦合,这为复用对象提供了可能性和方便性。在继承结构中,特殊类对通常类的继承,自己就是对通常类的属性和操做的复用。
结构化方法:从算法的角度进行建模,全部的软件都用过程或函数做为其主要构造块。人们把大量精力都集中在控制流程和大算法的分解上。这种建模的缺点是模型脆弱。需求变更、维护困难。
面向对象方法:以众多的类及交互模式(类间的协同工做)为中心。 着重于的数据库方法:以实体-关系模型为中心,该模型的行为放入触发器和存储过程当中。 对于一个给定的应用系统和开发方法,上述的任何一种方法可能都是正确的。只是代价和收益是不一样的。