面向对象建模和设计是使用真实世界的概念模型来思考问题的一种方法。其基本制品是对象。对象既包括数据结构又包括行为。对于理解问题,与应用领域专家交流,建模企业级应用,编写文档,设计程序和数据库来说,面向对象的模型都非常有用。
1. 什么是面向对象
表面来看,面向对象这个术语的意思是,把软件组织成一系列离散的,合并了数据结构和行为的对象。这与以前软件开发方法中数据结构和行为只是松散关联是不同的。关于OO方法确切需要哪些特征学术界是有争议的,但大致上它们都包含四个方面:标识(identity),分类(classification) ,继承(inheritance),多态(polymorphism)。
标识:数据被量化成称为对象的离散的,可辨别的实体。每个对象都有它自己的内部标识。换言之,即使所有的属性都相同,两个对象也是有差别的。
分类:拥有相同数据结构(属性)和行为(操作)的对象被分组成为一个类。
继承:多个类基于一种分层关系,共享类间的属性和操作(合称为特征)。
多态:对于不同的类来说相同的操作会有不同的动作。
2. 什么是面向对象的开发
Ø 明确要建模的是概念,而非实现
Ø 系统构思,分析,系统设计,类的设计,实现
3. OO的主题特征
抽象(abstraction): 专注于应用的本质方面,忽略细节。确定如何实现功能之前,首先关注对象是什么,做什么。使用抽象机制,可以自由的尽可能长的时间制定决策,避免不成熟的细节承偌。
封装(encapsulation):将对象的外部因素与内部实现细节分离开来。封装阻止程序的组成部分过分依赖。如果那样的话,小的变化会引起巨大的涟漪效应。
组合数据和行为:操作的调用者不需要考虑由多少种实现存在。多态的机制会将确定使用哪种实现的负担从代码调用转移到类的层次结构中。
共享:OO技术有利于不同层次上的共享.通过继承实现共享是OOP语言的一个主要优势,好处除了节省代码,最重要的是概念上的清晰,意识到不同的操作执行的实际上是相同的操作。
强调对象的本质:OO强调对象是什么,而不是如何使用它。
协同(synergy):标识(identity),分类(classification) ,继承(inheritance),多态(polymorphism),这些概念结合在一起,互为补充,相互促进