😀前言
面向对象技术是现代软件工程的核心,为软件设计和开发带来了一种强大且有序的方法。通过将现实世界的实体和概念映射到可操作的代码结构,该技术使我们能够更高效、清晰和可靠地创建复杂的软件系统。在本章中,我们将详细介绍面向对象技术的各个方面,包括它的基本组成部分、设计原则以及在统一建模语言(UML)中的具体实现。
🏠个人主页:尘觉主页
🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
在csdn获奖荣誉: 🏆csdn城市之星2名
💓Java全栈群星计划top前5
🤗 端午大礼包获得者
🥰阿里云专家博主
😉亚马逊DyamoDB结营
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊
文章目录
- 第七章 面向对象技术
- 对象
- 多态
- 面向对象设计的原则
- 事物
- 关系
- UML 中的图
- 类图
- 对象图
- 🔺用例图(P368)
- 交互图
- 🔺状态图
- 活动图
- 构件图(组件图)
- 部署图
- UML图汇总
- 😄总结
第七章 面向对象技术
面向对象 = 对象(Object)+ 分类(Classification)+ 继承(Inheritance)+通过消息的通信
对象
对象通常可由对象名、属性和方法 3 个部分组成。
多态
多态有不同的形式,分为了四类:
- 通用的:
- 参数多态:应用比较广泛的多态,被称为最纯的多态。
- 包含多态:在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另一个类型的子类型。
- 特定的:
- 过载多态:同一个名字在不同的上下文中所代表的含义不同。
- 强制多态:通过强制类型转换(也称为强制转型)将一个对象或变量视为另一个类型的操作。
面向对象设计的原则
面向对象方法中的五大原则:
- 单一责任原则:就一个类而言,应该仅有一个引起它变化的原因。
- 开放-封闭原则:软件实体应该是可以扩展的,即开发的;但是不可修改的,即封闭的。(扩展开放、修改关闭)
- 里氏替换原则: 子类型必须能够替换掉他们的基类型。(基类出现的地方,子类一定可以出现)
- 依赖倒置原则:抽象不应该依赖于细节,细节应该依赖于抽象。(依赖于抽象,而不依赖于细节[实现])
- 接口分离原则:不应该强迫客户依赖于它们不用的方法。(依赖于抽象,不依赖于具体)
共同封闭原则:包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
共同重用原则:一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。
面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、确定对象的操作、定义对象的内部信息。
面向对象设计的活动(OOD在复用OOA模型的基础上,包含与OOA对应如下五个活动):
- 识别类及对象
- 定义属性
- 定义服务
- 识别关系
- 识别包
事物
UML中有4中事物:
-
结构事物:结构事物是UML模型中的名词,通常是模型的静态部分,描述概念或物理元素。
-
行为事物:行为事物是UML模型的动态部分,它们是模型中的动词,描述了跨越时间和空间的行为。
-
分组事物:分组事物是UML模型的组织部分,是一些由模型分解成“盒子”。
-
注释事物:注释事物是UML模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。
关系
UML中有4种关系:依赖、关联、泛化和实现。
-
依赖:依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。
-
关联:关联是一种结构关系,它描述了一组链,链是对象之间的连接。
- 聚合:部分和整体的生命周期不一致,整体消失了,部分仍然存在,部分可以脱离整体存在。
- 组合:部分和整体的生命周期一致,整体消失了,部分也消失了,部分不可以脱离整体存在。
-
泛化:泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。子元素共享了父元素的结构和行为。
-
实现(了解):实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。
UML 中的图
类图
类图(Class Diagram)展现了一组对象、接口、协作和它们之间的关系。
符号:
+
: public 公有的
-
: private 私有的
#
: protected 受保护的
~
: package 包的
🔺通常以下述3种方式之一使用类图:
- 对系统的词汇建模。
- 对简单的协作建模。
- 对逻辑数据库模式建模。
对象图
对象图(Object Diagram)展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照。
对象图给出系统的静态设计视图或静态进程视图。
🔺用例图(P368)
用例图(Use Case Diagram)展现了一组用例、参与制(Actor)以及它们之间的关系。
一个用例执行的时候,可能会发生一些特殊的情况或可选的情况,这种情况就是这个用例的扩展用例。
参与者:参与者是与系统交互的外部实体,可能是使用者,也可能是与系统交互的外部系统、基础设备等。
用例:用例是从用户角度描述系统的行为,它将系统的一个功能描述成一系列的事件,这些事件最终对操作者产生有价值的观测结果。用例是一个类,它代表一类功能而不是使用该功能的某一具体实例。
之间的关系:
- 包含关系(用例之间)
- 扩展关系(用例之间)
- 关联关系(参与者和用例之间)
- 泛化关系(用例与用例以及参与者与参与者之间)
用例图用于对系统的静态用例视图进行建模。
可用以下两种方式来使用用例图:
- 对系统的语境建模。
- 对系统的需求建模。
交互图
交互图用于对系统的动态方面进行建模。一张交互图表现的是一个交互,由一组对象和它们之间的关系组成。包含它们之间可能传递的消息。
- 序列图(顺序图、时序图) :序列图是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。
序列图有两个不同于通信图的特征:
-
序列图有对象生命线
-
序列图有控制焦点
- 通信图(协作图):通信图强调收发消息的对象的结构组织,在早期的版本中也被称作协作图。
通信图有两个不同于序列图的特性:
- 通信图有路径
- 通信图有顺序号
-
交互概览图
-
计时图
🔺状态图
状态图(State Diagram)展现了一个状态机,它由状态、转换、事件和活动组成。
可以用状态图对系统的动态方面建模。当对系统、类或用例的动态方面建模时,通常是对反应型对象建模。
定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。
三种标准事件:entry、exit、do
- entry:入口动作,进入状态立即执行
- exit:出口动作,退出状态立即执行
- do:内部活动,占有限时间,并可以中断的工作
事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。
转换包括两个状态(源状态,目标状态)
事件,监护条件,动作
事件触发转换(迁移)
活动(动作)可以在状态(迁移)内执行,也可以在状态转换时执行。
监护条件是一个布尔表达式。
活动图
活动图(Activity Diagram)是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。
活动图一般包括活动状态和动作状态、转换和对象。
通常有两种使用活动图的方式:
- 对工作流建模。
- 对操作建模。
构件图(组件图)
构件图(Component Diagram)展现了一组构件之间的组织和依赖。
构件图专注于系统的静态实现试图。
部署图
部署图(Deployment Diagram)是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。
部署图展现了系统的软件和硬件之间的关系,在实施阶段使用。
UML图汇总
- 静态建模:类图、对象图、用例图
- 动态建模:序列图(顺序图、时序图)、通信图(协作图)、状态图、活动图
- 物理建模:构件图(组件图)、部署图
- 交互图:序列图(顺序图、时序图)、通信图(协作图)
😄总结
通过本章的探讨,我们了解了面向对象技术的各种要素,从对象的基本结构,到多态的不同形式,再到面向对象设计的原则,我们对面向对象的精髓有了更深入的了解。UML作为一个强大的工具,为我们提供了表示和设计面向对象系统的方法,通过对事物和关系的描述,我们能够更加清晰地理解和构建复杂的系统。
😁热门专栏推荐
想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集
linux合集
手写机制
微服务组件
spring_尘觉
springMVC
mybits
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
🤔欢迎大家加入我的社区 尘觉社区
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞