理解面向对象(一)
UML:统一建模语言。
面向对象的程序单位是类,面向过程的程序单位是函数(方法)。
面向对象比面向过程的编程粒度大,因此更加简单易用。
面向过程的程序世界里,一切以函数为中心
吃(猪八戒,西瓜);
面向对象的程序世界里,一切以对象为中心
猪八戒 . 吃 ( 西瓜 ) ;
面向对象三大基本特征+抽象
封装 :将对象的实现细节隐藏,通过公用方法来暴露该对象的功能
继承:实现软件复用的重要手段,当子类继承父类后,直接获得父类的属性和方法
多态:子类对象可以赋值给父类变量——同一类型的变量在执行同一个方法时,可能表现不同的特征
animal.cry
dog.cry
pig.cry
(抽象):也是面向对象的重要部分。只考虑吧部分问题。之所以不是面向对象的基本特征是因为所有的编程语言都需要抽象。
由于多继承可能会引起继承结构的混乱,所以Java不支持多继承
“面向对象”与“基于对象”
- 两者都实现了封装的概念
- 不同的是,“基于对象”没有实现继承和多态,不能让开发者派生新的类,只能使用现有的对象和方法,如JavaScript
面向对象程序员分为“类库的创建者”和“类库的使用者”,后者并不都是具备了面向对象思想的人。类库只是在形式上面向对象,实质上只是函数库的一种扩展。
UML(统一建模语言)介绍
UML2.0一共包括13种正试图形。活动图,类图,通信图,组件图,复合结构图,部署图,交互概观图,对象图,包图,顺序图,状态机图,定时图,用例图。
UML图实际上是用于描述,记录软件分析设计的工具。
常用工具:例图,类图,组件图,部署图,顺序图,活动图,状态机图
用例图
主要在需求分析阶段使用,用于描述系统实现的功能,方便与顾客交流
类图
类图可以显示系统的静态结构,也可以表示实体之间的相互关系。
类之间的三种基本关系:
- 关联(包括聚类和组合)
– 类的某个属性应用到另一个类的实体时就变成关联
– 组合比聚合更加严格:两只手臂组合成学生或教师(手臂只能是这个老师或学生的),一个或多个学生聚合成篮球俱乐部或书法俱乐部(学生可以既是书法又是篮球俱乐部的) - 泛化(与继承是同一个概念)
- 依赖
一个类的改动会导致另一个类的改动时,两个类之间存在依赖关系。
例如DefaultModel中的数据模型改变,JTable中的数据表现也会改变,数据改变以来于数据模型。
组件图
现代大型应用不只是单独一个类或者一组类所能完成的,通常会有一个或多个可部署的组件。
组件图包括了组件、接口、和port等图元
部署图
软件的不同部分可能要部署在不同地方不同平台上,部署图用于描述软件系统如何部署到硬件环境中。