面向对象的分析
概念:
对象:系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。
对象的两个基本元素:属性和服务。属性是用来描述对象静态特征的一个数据项;服务是用来描述对象动态特征的一个操作序列。
对象是属性和服务的结合体,对象的属性值只能有这个对象的服务来读取和修改。
类:服务是用来描述对象动态特征的一个操作序列。类代表一个抽象的概念或事物,对象是在客观世界中实际存在的类的实例。
封装:把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。
继承:子类可以自动拥有父类的全部属性和服务。
消息:消息是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等信息。
多态性:由于类的继承以及子类方法重载的存在,使得以父类作为形参的函数在运行时可能接受不同类型的实参。实参可能是:父类自身对象或者某个直接/间接子类的对象。多态提高了灵活性和可扩展性。
统一建模语言:
UML关系:
关联:是一种结构关系,描述一组对象之间的连接,关联两端的类可以某种角色参与关联。
聚合:是一种特殊形式的关联,它表示类之间整体和部分的关系,聚合的两端是“has a”关系。
组合:是一种特殊形式的关联,组合关系中的整体和部分具有同样的生存期,组合两端是“contains a”关系。
泛化:是一种特殊和一般的关系。
依赖:依赖是一种使用的关系,它说明一个事物的规格说明的变化可能影响到使用它的另一事物。依赖可能的原因:一个类向另一个类发消息;一个类是另一个类的某个操作参数。
实现:类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约。
类之间的四种关系:
分类关系、继承---泛化(一般和特殊)
静态联系----关联。
构成关系---聚合
构成关系---组合
使用关系----依赖
实现关系----实现
识别继承(泛化):
( 1)学习当前领域的分类学知识。
( 2)按常识考虑事物的分类。
( 3)利用泛化的定义。
( 4)考察类的属性与操作。
( 5)看两个类的对象之间是否有“是一种” 关系。
(6)考虑领域范围内的复用。
一般特殊结构的简化:取消没有特殊性的特殊类、增加属性简化一般和特殊关系、取消用途单一的一般类,减少继承层次(一般类存在理由:有两个及以上特殊类、需要用它创建实例、有助于软件复用)。
对象之间的关系:对象之间的静态联系,最终可通过对象属性来表示一个对象对另一个对象的访问关系。对象之间的动态联系,对象在行为上(操作调用)的依赖关系。使用关联表示类之间的静态关系。
判断关联关系:如果类的对象之间通过属性有连接关系,那么这些类之间的语义联系就是关联。
用例图:用例图定义了系统的功能需求,它完全是从系统的外部观看系统功能,并不描述系统内部对功能的具体实现。用例图表示了用例、参与者及其它们之间的关系。符号:。
参与者:参与者是与系统交互的外部实体,既可以是使用该系统的用户,也可以是与系统交互的其他外部系统、硬件设备或组织机构。参与者之间可以存在泛化关系,类似的参与者可以利用泛化关系组成一般与特殊的层次关系。如:
用例:是从用户角度描述的系统行为,它将系统的一个功能描述成一系列事件,这些事件最终对参与者产生有价值的可观测结果。用户之间的关系:包含关系、扩展关系、泛化关系。包含关系:指一个基本实例的行为包含另一个用例的行为,
即一个实例发生的话包含实例一定发生。