软件工程——面向对象技术

简介: 软件工程——面向对象技术

什么是面向对象?


· Coad和Yourdon给出了一个定义:“面向对象=对象+类+继承+通信”

· 如果一个软件系统是使用这样4个概念设计和实现的,则我们认为这个软件系统是面向对象的。

· 面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。


· 面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。


面向对象的三大模型


一、对象模型化技术OMT


· 对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型。


· 这个模型化的过程是一个迭代过程。


1、关联


· 在OMT中,类与类之间的关系叫做关联。


关联形式:


(1)聚合,代表整体与部分的关系,这是一种特殊形式的关联。


(2)限定,用以对关联的含义做某种约束。


(3)角色,用来说明关联的一端,由于多数关联具有两个端点,因而涉及到两个角色。


2、类和对象的关系:



二、动态模型


· 动态模型着重于系统的控制逻辑。

· 它包括两个图,一是状态图,一是事件追踪图

(1)状态图

· 状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为。



动态模型由多个状态图组成


· 各个状态图并发地执行,并可以独立地改变状态


(2)事件追踪图


事件


· 一个事件发生在某一个时刻


· 每个事件都是单独发生的


· 我们建立事件类,并给每个事件一个名字,以指明共同结构和行为


· 事件从一个对象向另一个对象传送信息。


事件追踪图


· 事件追踪图


· 事件追踪图侧重于说明发生于系统执行过程中的一个特定“场景”


· 场景也叫做脚本,是完成系统某个功能的一个事件序列


(3)状态图与事件追踪图的关系


· 状态图叙述一个对象的个体行为,事件追踪图则则给出多个对象所表现出来的集体行为。


· 例如,一个事件追踪图指出某一对象在接受一个事件之后发出另一事件,同一行为在此对象的状态图中也应当有所表示。


三、功能模型


· 功能模型表明,通过计算,从输入数据能得到什么样的输出数据,不考虑参加计算的数据按什么时序执行。


· 功能模型由多个数据流图组成,它们指明从外部输入,通过操作和内部存储,知道外部输出,这整个的数据流情况。


· 功能模型中所有的数据流图往往形成一个层次结构。


· 在这个层次结构中,一个数据流图中的过程可以由下一层的数据流图做进一步的说明。


· 数据流图中允许加入控制流,但这样做将与动态模型重复,不提倡夹带控制流。



四、基于三大模型的分析过程


· 功能模型着重于系统内部数据的传送和处理。

       功能模型定义“做什么”

       动态模型定义“何时做”

       对象模型定义“对谁做”

目录
打赏
0
0
0
0
0
分享
相关文章
|
11月前
素颜简约的个人导航网站源码
素颜简约的个人导航网站源码
987 0
素颜简约的个人导航网站源码
『软件工程2』详解软件工程和软件过程模型
该文章深入解析了软件工程的概念及其过程模型,包括软件生命周期的不同阶段和常见的软件开发模型如瀑布模型、敏捷开发等,并探讨了各自的特点与适用场景。
『软件工程2』详解软件工程和软件过程模型
|
8月前
|
使用Visual Studio 2022 创建lib和dll并使用
本文介绍了如何在Visual Studio 2022中创建静态库(lib)和动态库(dll),并展示了如何使用这些库。文章详细说明了创建新项目、编写代码、生成库文件、配置项目属性以及编写测试代码的步骤,并提供了相应的截图和代码示例。作者还分享了在创建和使用库的过程中遇到的一些问题及其解决方案。
1364 0
使用Visual Studio 2022 创建lib和dll并使用
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x80370114Err
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x80370114Err
1734 3
在Ubuntu中为ROG笔记本安装驱动asusctl
在Ubuntu中为ROG笔记本安装驱动asusctl
2049 0
在Ubuntu中为ROG笔记本安装驱动asusctl
数据分类分级-结构化数据识别与分类的算法实践
本文分享了用九智汇数据分类分级产品开发过程中,对数据识别和数据分类中涉及的算法进行抽象、融合,以形成标准化产品所做的努力和积累的经验。当然,算法只是分类分级产品的一小部分,整个产品设计,工程实现,也是支撑标准化产品的关键,但是限于作者水平有限,本文只讨论算法相关的话题,欢迎大家关注公众号以了解更多信息。
264 1
浏览器页面卡住定位分析
有童鞋在xxx系统页面反馈,遇到在弹出框后整个页面卡住无法使用的情况,属于必现问题。因此需要跟踪定位问题。
612 0
浏览器页面卡住定位分析
📕重学JavaScript:Promise 的then()、catch() 和 finally()
大部分时候,你要用的 Promise 对象是 Web API 或第三方 API 返回的。我们要设置 Promise 对象,让它在变成 fulfilled 的时候执行我们想要的成功的代码,而在变成 rejected 的时候执行我们想要的失败的代码。
494 0
📕重学JavaScript:Promise 的then()、catch() 和 finally()
Redis事务:保障数据一致性和原子性的简单机制
事务是一种用于确保数据操作的一致性和原子性的重要机制。在Redis中,虽然事务支持并不像传统关系型数据库中那样复杂,但它提供了一种简单的事务支持,称为MULTI/EXEC事务。本文将深入探讨Redis事务的实现原理、特性和适用场景,帮助开发者了解如何在Redis中充分利用事务来保障数据的完整性和正确性。
601 0