UML学习之面向对象技术
来源:互联网 发布:马云 阿里云 演讲 编辑:程序博客网 时间:2024/05/18 15:53
到了UML(Unified Modeling Language),进行了一次重温和升华面向对象技术的学习。不得不说,原来的理解还只是一些概念性的东西,现在加上了一些感性上的知识,使得对它的理解更深了一点,等真正到了工程实践后肯定会是另一番感悟。也就是说,现在还停留在认知阶段,没到应用阶段。不过,学习就是一点一点的积累,没有认知哪有应用?接下来就要开始我的UML学习之旅。
首先重新认识一下面向对象技术(提到的很多概念会在后续的学习中详细介绍):
基本原则
抽象(Abstraction)
抽象就是从真实的客观世界抽象出一个个名词,然后将名词抽象为一个个类。如:奥拓、奥迪、奔驰、玛莎拉蒂,它们是一个个名词,但可以归结为一类:汽车。
封装(Encapsulation)
封装就是对客户隐藏实现,客户仅仅看到接口。如我们用的电视机遥控,只能看到一个个按钮,按下去之后电视就会做出相应的反应,但我们并不知道这些按钮连接的线路是怎么工作的。
模块化(Modularity)
模块化就是将代码按照逻辑关系存放起来,分为各个模块,每个模块都实现其特有的某一功能。
层次性(Hierarchy)
将系统分为一层一层的类,从而实现代码的复用。如下图所示的艺术分层:
基本概念
对象(Object)
1、范畴广泛,例如:
物理实体:一辆火车
概念实体:化学药品
软件实体:一个队列
2、对象描述一个事物,它具有状态(静态信息)、行为(动态信息)、和标识(对象名字)。
3、对象的表示:类+对象名字。如小李是一个讲师。单纯的说小李,这只是一个符号,而讲师是一个类,两者结合就能说明小李的工作。
类(Class)
1、概念:类是对一组具有相同属性、行为、关系和语义的对象的描述
2、类的表示(UML图)
图1 图2 图3 图4
图1给出了类名、属性、方法;图2给出了类名、属性,隐藏了方法;图3给出了类名、方法,隐藏了属性;图4只给出了类的名字。
3、类与对象的关系:a.类定义了属性和方法
b.类提供了一个创建对象的模板
c.一个对象是一个类的实例
属性(Attribute)
1、概念:a.描述类的静态信息
b.给类赋予不同的状态值,得到不同的对象
2、举例:
操作(Operation)
1、概念:操作就是通过操作访问读取修改属性值,也叫做方法
2、举例:
接口(Interface)
1、概念:不同功能层之间的通信规则称为接口。
2、与类的区别: 接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以声明属性、方法、事件和类型(但不能声明变量),但并不能设置这些成员的
具体值,也就是说,只能定义,不能给它里面定义的东西赋值。
3、举例:
组件(Componet)
1、概念:对数据和方法的简单封装
2、包含:a.源程序(Source )
b.运行时动态库(.Dll)
c.可执行程序(.Exe)
3、举例:a.可视化源代码之间的依赖关系
b.可视化Dll、Exe之间的依赖关系
包(Package)
1、概念:包是对代码逻辑的划分,使得代码的结构更加清晰。包可以进行嵌套。
2、举例:包的一个简单内部结构
Package Animal;class Cat{}class Dog{}
子系统(Subsystem)
表示子系统实现了Interface接口
关系(Relationship)
a.关联
1、作用:表示类与类之间的连接,它使一个类知道另一个类的属性和方法
2、分类: a.1 聚合
a.2 组合
3、举例:下图中,火车头相对于火车来说就是属于聚合的关系,火车头可以单独于火车车厢存在,也可以属于不同种类如货运或者客运的火车。而节点则不能单独于链表
而存在,链表没了,节点也将不复存在。其实就是聚合的约束力比组合的约束力小而已,它们的作用是类似的。也可以称组合为强聚合。
b.依赖
1、作用:可以简单的理解为类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的,非常弱,但是类B的变化会影响到类A。
2、举例:比如下面的图示客户与供货商的关系:
c.泛化 :
1、作用:子类继承得到父类的属性和方法。最大的好处就是实现了代码的复用,更好的应对需求变化,减少了系统开发和维护工作量。
2、分类:c.1 单重继承
c.2 多重继承
3、举例:下图中Bird类为多重继承,其他的类为单重继承
d.实现
作用:指的是一个Class类实现Interface接口(可以是多个)的功能。它是类与接口之间最常见的关系。
发展历史
概括为:机器语言→汇编语言→高级程序设计语言,其中C++、Java、C#语言是目前世界上比较流行的面向对象程序设计语言。
程序设计语言特点
1、继承性:就是上面所说的泛化关系特点
2、封装性:把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,只保留有限的对外接口使之与外部发生联系。
3、多态性:统一操作作用于不同的类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。如一个乐团当中,当指挥员下达同一演奏命令的时候,各种不同的乐器就会按照相同的乐谱进行,演奏出不同的声音。
- UML学习之面向对象技术
- uml学习--面向对象技术
- UML之面向对象技术
- 面向对象技术之UML[一]
- 面向对象技术之UML[二]
- 面向对象技术之UML[三]
- 面向对象技术之UML[四]
- UML之旅—面向对象技术
- 【UML】面向对象技术
- 【UML】面向对象技术
- UML---面向对象技术
- UML-面向对象技术
- 【UML】面向对象技术
- 【UML学习】面向对象方法之RUP
- UML视频第二部分的总结之面向对象技术
- 学习笔记之开篇【面向对象技术】
- Java之学习笔记(4)---------------UML及面向对象
- UML笔记二:面向对象技术
- UVA 10106 - Product (大数相乘问题)
- 在Js调用ActiveX方法
- 使用memcached提升网站服务器性能
- 2013年理想行动计划
- Shell编程学习总结
- UML学习之面向对象技术
- [译]苹果 Cocoa 编码规范中文版
- 关于GET和POST两种提交方式的一点感悟
- 软件开发的功夫在诗外 ,‘外’在哪里?
- c++ extern const and static
- 深入浅出C语言(6)----C语言实现面向对象
- inner join cross join 创建视图
- 小结《第一次软工文档之旅》
- 如何成为一名黑客(转)