第二周作业

面向对象设计模式与原则

1、设计模式描述了软件过程中某一类常见的问题的一般性的解决方案。
2、面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。
3、GoF 23种设计模式:
《设计模式:可复用面向对象软件的基础》一书中描述了23种经典面向对象设计模式,创立了模式在软件设计中的地位。人们通常所说的设计模式隐含的表示“面向对象设计模式”。但这并不意味“设计模式”就等于“面向对象设计模式”,也不意味着GoF 23种模式就表示了所有的“面向对象设计模式”。GoF 23种设计模式是学习面向对象设计模式的起点,而不是终点。
4、面向对象设计模式:
·面向对象设计模式解决的是“类与相互通信的对象之间的组织关系”,包括它们的角色、职责、协作方式几个方面。
·面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。
·面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设计模式的最终实现仍要使用面向对象编程语言来表达。
5、面向对象:
·面向对象三大机制:
一、封装:隐藏内部实现
二、继承:复用现有代码
三、多态:改写对象行为
面向对象(OOPL)并非面向对象的全部
OOPL的三大机制“封装、继承、多态”可以表达出面向对象的概念,但这三大机制本身并没有刻画出面向对象的核心精神。也就是说不是使用了面向对象的语言(例如C#),就实现了面向对象的设计与开发。
6、什么是对象?
一、概念层面:对象是某种拥有责任的抽象
二、规格层面:对象是一系列可以被其他对象使用的公共接口
三、语言实现层面:对象封装了代码和数据
7、怎样才能设计出“好的面向对象”?
掌握“面向对象”->遵循一定的面向对象设计原则->熟练运用一些典型的设计模式
8、设计模式的三大原则:
·1.针对接口编程,而不是针对实现编程
客户不需要知道使用对象的特定类型,只需要知道对象拥有客户所期望的接口。
·2.优先使用对象组合,而不是类继承
继承在某种程度上破坏了封装性,子类父类耦合度高;而对象组合则只要求被组合的对象具有良好定义的接口,耦合度低。
·3.封装变化点
封装的代码不会影响到其他代码
9、具体的设计模式原则(5个):
1.单一职责原则( SRP)
一个类应该仅有一个引起它变化的原因(只有一个引起变化的原因)
2.开放封闭原则(OCP)
类模块应该是可扩展的,但是不可修改(对扩展开放,对更改封闭)
3.Liskov替换原则(LSP)
子类必须能够替换他们的基类
4.依赖倒置原则(DIP)
·高层模块不应该依赖于底层模块,二者都不应该依赖于抽象
·抽象不应该依赖于实现细节,实现细节应该依赖于抽象
5.接口隔离原则(ISP)
不应该强迫客户程序依赖于他们不用的方法
UML_Concept:
UML(统一建模语言)是一种直观化,明确化,构建和文档化软件系统产物的通用可视化建模语言
UML概念范围:
静态结构
动态行为
实现构造
模型组织
扩展机制
UML视图在最高层次可以划分三个领域:结构性分类,动态行为和模型管理
结构性分类描述了系统中事物和事物间的关系。分类视图包括静态视图,用例视图和实现视图
动态行为描述了系统时间上的行为。行为视图包括了状态机图,活动图和交互图
模型管理描述了用层次式的单元对模型自身的组织
静态视图
1、概述
静态视图是UML的基础。模型静态视图的元素是应用中具有意义的概念,包括现实世界概念、抽象概念、实现概念、运算概念——系统中发现的所有概念。
2、分类
分类是模型中的离散概念,它具有标识、状态、行为和关系。
分类的种类包括类、接口和数据类型。
3、关系
分类中的关系指关联、概括、流和各种依赖,包括实现和使用
4、关联
关联描述了系统中对象和其它实例之间离散的连接。
5、概括
概括是一般化和具体化描述之间的分类关系。具体化的描述构建在一般化描述之上,并对它进行扩展,后者与前者完全一致(具有所有属性、成员和关系),并可能包含新增的信息。
概括的目的:
概括具有两个目的:
1,定义当前声明存放在定类值的一个变量时,类实例可以被使用的条件。这被称为替代原理。
2,共享对祖先的描述,允许对元素进行增量描述。这被称之为继承。
6、继承与多重继承
继承允许描述的被共享部分只被声明一次,且为多个类共享;而不是在每个使用它的类中重复。
每种可概括的元素都具有一系列可继承的属性。
7、实现
实现关系将一个模型元素连接至另一个提供了行为说明而无结构或实现的模型元素,如接口。
8、依赖
依赖指明了两个或者两个以上模型元素之间语义的关系。它直接关联了模型元素本身而无需一系列实例来表达意义。
用例视图
1、概述
用例视图从外部用户的角度捕获系统、子类系统或类的行为。
用例通过系统与一个或多个活动者之间的一系列消息表述了与活动者的交互。
2、活动者:
活动者是与系统、子系统或类交互的外部人员、进程或事务的理想化。活动者可以定义成概括层次结构。
3、用例
用例是系统单元提供的外部可感知的功能单元,表达成系统单元和与之相交互的一个或多个活动者的消息序列。
用例的目的是定义清晰的行为,快而不解释系统的内部结构。
用户的动态部分可以用UML交互来指定,显示为状态图,顺序图,协作图或非正式的文本描述。
在系统级别,用例表达了外部用户所见的整个系统的外部行为。用例是一部分系统功能的逻辑描述,它不是系统实现的显示结构。用例还可以被定义为机用力的张量扩展被称为扩展关系。
用例的实现可以被建模成一个或者多个协作,一个协作是一个用例的实现

posted @ 2021-01-28 19:18  19A1  阅读(112)  评论(0)    收藏  举报