面向对象的分析与设计PPT课件

合集下载

面向对象分析与设计.ppt

面向对象分析与设计.ppt

TCP/IP协议栈(TCPIP.SYS)
网卡驱动程序(NIC Driver) 基于历史状态的包处理
第 11 页
网络中间层状态包检测防火墙系统
11
练习2:ATM机用例图。以使用ATM机的经验,给出在
ATM机上存取款操作的用例图。
第 12 页
12
10.4 静态建模
任何建模语言都以静态建模机制为基础 ,标准建模语 言 UML也不例外。所谓静态建模是指对象之间通过属性 互相联系,而这些关系不随时间而转移。 类和对象的建模,是UML建模的基础。我们认为,熟 练掌握基本概念、区分不同抽象层次以及在实践中灵活 运用,是三条最值得注意的建模基本原则。
第 2 页
2
10.1 UML概述
UML(Unified Modeling Language)是软件界第 一个统一建模语言,该方法结合了Booch, OMT, 和OOSE方法的优点,统一了符号体系,并从其它的 方法和工程实践中吸收了许多经过实际检验的概念 和技术。 它是一种标准的表示,已成为国际软件界广泛承 认的标准。是一种基于面向对象的可视化的通用 (General)建模语言。为不同领域的用户提供了统一 的交流标准 — UML图。 UML应用领域很广泛,可用于软件开发建模的 各个阶段,商业建模(Business Modeling), 也可用 于其它类型的系统。
第 4 页
4
UML的特点
(1) 统一标准 UML统一了Booch、OMT和OOSE等方法中的基本概 念,已成为 OMG 的正式标准,提供了标准的面向对象的 模型元素的定义和表示。 (2) 面向对象 UML 还吸取了面向对象技术领域中其它流派的精华。 删除了大量易引起混乱的、多余的和极少使用的符号 , 也 添加了一些新符号。 (3) 可视化、表示能力强 系统的逻辑模型或实现模型都能用 UML 模型清晰的 表示,可用于复杂软件系统的建模。 (4)易掌握、易用 UML 的概念明确,建模表示法简洁明了,图形结构 清晰,易于掌握使用。

面向对象的设计与分析课件

面向对象的设计与分析课件
例如
//myheadfile1.h
#include myheadfile2.h
……
//myheadfile2.h
#include myheadfile1.h
……
整理ppt
7
为了避免上述情况的发生,引入了条件预处 理指令,用来判断是否已经包含了某个头函 数或头函数的某个部分,若已经包含了某个 头函数或头函数的某个部分,则在以后遇到 要求再包含该头函数或头函数的该部分时, 跳过包含指令#include ,以避免头文件重复 包含或循环调用的情况。条件预处理指令包 括:
//定义四个双精度型变量
credit1 = 3.0; //给变量赋值 credit2 = 4.0; credit3 = 2.0; average =
(credit1*score1+credit2*score2+credit3*score3)/
(credit1+credit2+credit3); //计算表达式的值,并赋给变量
例如
#include <math.h> #include <iostream.h> ………
整理ppt
6
(2) 条件预处理指令 由于被预处理包含指令#include所指定的头文件
中也可以使用#include指令包含别的头文件,因此 就可能出现头文件嵌套包含甚至是头
cout<<“第一门功课成绩:”; //显示提示信息
cin>>score1;
//接受用户输入
cout<<"第二门功课成绩:";
cin>>score2;
cout<<"第三门功课成绩:";

ch01面向对象分析与设计PPT课件

ch01面向对象分析与设计PPT课件

复用
硬件逼软件发展
复用
为什么用复用
软件开发组越大,组中每 个成员的生产率就越低。 Philippe kahn,Borand 公司创始人
应变能力
面向对象分析 以稳定的问题 领域结构来封 装易变的部分, 以此形成具有 灵活性的系统 结构,使得系 统能够顺应需 求的变动。
减少变化引起的整理波动
“分析”一个含义广泛的词汇。在软件开发中, 我们关注两种类型的分析。
需求分析:调查研究系统要成功所必须满足的需求。 面向对象分析:调查研究领域对象以发现重要信息来
满足需求。
什么是设计
设计强调的是满足需求的概念上的解决方案(在 软件或硬件方面)。设计不是实现,虽然一个好 的设计在完成后可以被(编程)实现。
应用UML的三种方式
UML作为草图:非正式的、不完整的图(如白板 上的手绘草图)。用于讨论问题。
实现
在实现(Implementation)或面向对象程序设 计( Object-Oriented Programming,OOP )过程中,会实现设计出来的对象。如,, Java
中的“book”类。
实现又称为“编程”(Coding)或构建
(Construction)
如何进行面向对象分析与设计
科学的一个普遍问题是,必须对被观测的对象和 情况,建立一种有意义的分类方法,以便人们理 解这些观测结果,也有助于科学理论的持续发展
▪ Grady Booch
UML的统一(5)
UML的统一(6)
致力于并推动 UML 发展的一些重要公司有
Hewlett – Packard Microsoft Oracle IBM Unisys
“设计”一词含义也很广泛,应加以限定,如:

面向对象的设计与分析课件

面向对象的设计与分析课件

WENKU DESIGN
2023-2026
END
THANKS
感谢观看
KEEP VIEW
WENKU DESIGN
WENKU DESIGN
WENKU
REPORTING
https://
PART 01
面向对象的基本概念
对象与类
对象
现实世界中的事物或概念在面向对象 编程中的表示。每个对象都有其属性 (状态)和方法(行为)。

对象的抽象,定义了一组具有相同属 性和方法的对象的共同特征。类是对 象的模板或蓝图。
封装与继承
封装
将对象的属性和方法封装在一起,隐藏对象的内部实现细节,只通过对象的方法来访问其属性。
目的
提高类的可维护性和可复用性,降低类之间的耦 合度。
示例
一个表示用户的类,只负责存储和提供用户数据, 不包含其他如登录、注册等操作。
开闭原则
定义
软件实体应该对扩展开放,对修改封闭。即软件实体应该通过扩 展来实现变化,而不是通过修改已有的代码来实现变化。
目的
提高软件的可维护性和可复用性,降低修改代码的风险。
目的
降低类之间的耦合度,提高系统的可维护性和可复用性。
示例
使用接口或抽象类来实现高层模块和低层模块之间的依赖关系, 而不是直接依赖于具体实现类。
PART 03
面向对象的分析方法
识别对象与类
01
确定问题域中的实 体
通过分析问题背景,识别出问题 域中的实体,如人、事物、组织 等。
02
抽象出对象的属性 和行为
VS
继承的实现
继承的实现方式因编程语言而异。在Java 中,子类通过使用关键字"extends"来继 承父类。在C中,子类通过在类名前使用 冒号":"来实现继承。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

参考书
面向对象软件工程与 UML, 李飞跃, 人民邮电 出版社 ( 高职教材 )
UML与软件建模 , 徐宝文,清华大学出版社(重 点大学教材)
面向对象设计原理与模式,(美)Dale Skrien著, 清华大学出版社 (国外经典教材)
Java设计模式, 耿祥义,清华大学出版社 大话设计模式,程杰,清华大学出版社
2.实现前面设计接口 – 实现接口 ---- 开发阶段完成, 完成细节设计
思考题:
1. 为什么我们要面向接口编程? 2. Java程序设计中学会的OO方法和本课程
学习的OO有什么区别和联系 3. 按OO要求,项目中的类分几个阶段设计
开发? 每阶段的主要任务是什么?
子类型必须能替换掉它们的父类型 分析:
“企鹅不是鸟” ––子类型必须包含父类型的全部特征
依赖倒转原则
抽象不应该依赖于细节,细节应该依赖于抽象; ---- 针对接口编程,不要对实现编程
解释: 1.高层类不应该依赖低层类;两者都应依赖于 抽象; 2.抽象不应该依赖细节;细节应该依赖抽象
反转实例: 电话指挥修电脑,谁依赖谁? 抽象与实现: 电脑主板-总线插槽-PIC卡的实
例— 抽象不依赖细节,细节依赖抽象。
依赖止于接口--用接口消除强耦合
依赖
A
B
依赖
依赖
A
I
B
用通用接口消除强耦合
案例分析
计算柱体的体积 从键盘输入2个数和一个运算符号,实现简单
运算
要点:分析类的单一职责原则; 分析耦合性及面向抽象编程的基本方法
项目开发中的2个典型问题
1. 需求总是在变 2. 维护和调试花费的大量时间是确定错误
如果一个类承担的职责过多,就等于把这些职 责耦合在一起。一个职责的变化可能会引起消 弱或抑制这个类完成其他职责的功能。这种耦 合会导致脆弱的设计。当变化发生时,设计会 遭到意想不到的破坏。
开-闭原则(核心原则)
软件实体(类、模块、方法)应该可以扩展,但 不可以修改;
换个说法: 类对扩展是开放的, 对修改是封闭的; 用extends 和implements等开放,用private封闭 实际使用:
1.随时准备修改:改变是合理的; 2.原来的代码一般不要改动,合理的方法是
基于原先的代码产生新的类
3.设计之初就准备好应对变化,用抽象来隔 离变化,减少耦合。
开-闭原则的运用:
写一个相对固定的内核; 不断产生新的类,当修改发生时; 新的类给予接口或抽象类创建;
理解: 面向接口编程
里氏替换原则
实现一个最简单的实例
计算立体型几何体体积 要点: 分析其中的耦合性、 程序的复用性
“脏代码”分析
OO基本原则
单一职责原则
功能单一
开-闭原则 依赖倒转原则
允许继承但禁止修改 面向接口编程
里氏替换原则
子类可以完成替换父类
面向抽象原则
耦合止于接口
多用组合少用继承原则 弱耦合
迪米特(最少知识)原则 高内聚/低耦合原则 合成/聚集复用原则
开发阶段(实现): 方法:隐藏实现细节
变化的只是实现而不是设 计
用新的视角思考OO问题
OO设计分析的几个关键目标
内聚度: (亦称: 透明度) 程序中的操作之间联系紧密的程序
耦合度: 两个程序之间联系的强度 耦合度与内聚度成反比
OOAD 追求高内聚底耦合
OO方法中对象的开发
1. 建立一个初步的设计—设计抽象接口 ---- 设计阶段完成,避免陷入细节
面向对象的分析与设计
课程学习的内容
OO设计原则 UML设计图及Rose Rational 工具 OO设计模式 典型项目的分析与设计
学习方法
掌握主要OO原则的原理和应用要点 改变java编程习惯
学会设计 Rational工具的使用; 掌握类图、用例图、顺序图、活动图的设计
熟练掌握MVC 设计方法 熟练掌握数据库编程 深化了解API,深化基于API的编程 反复实践典型模式应用于项目的分析和设计
考核
基于典型项目的考察: 项目的分析与方案设计 UML典型图 项目代码中基本原则的应用 项目设计中模型的使用
OOP编程要点
OOP 典型特点 : 封装性、继承性、重载、属性和修饰符、多态、重构、抽象类 接口、集合、泛型、委托与事件
OOP追求的目标: 可用性、完整性、健壮性、有效性、可伸缩性、可读性、 可重用性、简洁性、可维护性、可扩充行
及其方法调用产生的副作用(而编写和 修改代码的时间却很少)
追求: 适应变化的体系结构
如何处理变化的需求?
变化总会发生的 改进开发过程,以便有效地应付需求的变
化 模式及其应用
对象的分界层
设计与实现的分界面
设计阶段: 目标:抽象、封装 方法:面向接口(抽象)编程
发现并封装变化点
抽象是一种上下层间概念上z)
接口隔离原则
使用者应该只知道接口
单一职责原则(SRP原则)
就一个类而言,应该只有一个引起它变化的原因;
失败的案例:
界面处理类+数据库操作+文件读写+业务流程控制 类比: 多功能手机、集成主板的电脑—坏一处就全坏
经验: 类的设计倾向于越小越好
解释:
相关文档
最新文档