第八章面向对象设计工作流
软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。
如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。
为完成这一转换过程,设计人员必须处理以下任务:(1)针对分析模型中的用例,设计实现方案。
实现方案用UML交互图表示。
(2)设计技术支撑设施。
在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。
这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。
例如,数据的持久存储服务、安全控制服务和远程访问服务等。
在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。
(3)设计用户界面。
(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。
此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序设计的基础和依据的详尽类图。
面向对象的软件设计过程如图8-1-1所示。
图8-1-1 面向对象的软件设计过程第一节设计用例实现方案UML 的交互图(顺序图、协作图)适于用例实现方案的表示。
因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。
该设计方法包含如下3个步骤:(1)提取边界类、实体类和控制类;(2)构造交互图;(3)根据交互图精华类图。
一、顺序图顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。
在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。
顺序图中的对象一般以“对象名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。
面向对象设计技术的使用教程

面向对象设计技术的使用教程面向对象设计技术是一种常用的软件设计方法,它能够提高代码的可重用性、可维护性和可扩展性。
本文将详细介绍面向对象设计的原则、概念和方法,以及如何在实际项目中应用这些技术。
一、面向对象设计的原则1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个修改的原因。
2. 开放封闭原则(Open Close Principle,OCP):一个类应该对扩展开放,对修改封闭。
3. 里氏代换原则(Liskov Substitution Principle,LSP):子类对象能够替换父类对象。
4. 依赖倒置原则(Dependency Inversion Principle,DIP):高层模块不应该依赖低层模块,二者都应该依赖抽象。
5. 接口隔离原则(Interface Segregation Principle,ISP):客户端不应该强迫依赖它不需要的接口。
6. 迪米特法则(Law of Demeter,LoD):一个对象对其他对象的了解应该尽可能少。
二、面向对象设计的概念1. 类和对象:类是一种抽象的概念,用来描述一类具有相同属性和行为的对象。
对象是类的一个实例。
2. 封装:将数据和方法封装到一个类中,并对外提供接口进行访问。
3. 继承:通过继承机制,子类可以继承父类的属性和方法,并能够添加、修改或重写特定的属性和方法。
4. 多态:同一种行为具有多种不同的实现方式或表现形式,提高了代码的灵活性和可扩展性。
5. 抽象:通过抽象类和接口实现对类的更高层次的抽象,可以使代码更加模块化和可维护。
三、面向对象设计的方法1. 定义类的属性和方法:首先确定类的名称和作用,然后根据单一职责原则定义类的属性和方法。
2. 进行类之间的关系分析:根据具体项目的需求,确定类与类之间的关系,包括继承、关联、聚合和组合等。
3. 设计类的接口:根据接口隔离原则,定义一个类应该提供的接口,以便与其他类进行交互。
面向对象方法的实施步骤

面向对象方法的实施步骤1. 确定系统需求和功能•首先,需要明确系统的需求和功能。
这包括对系统的目标、使用场景和用户需求的理解。
可以通过需求文档、用户调研、竞品分析等方式进行需求明确。
•在确定需求的过程中,需要进行功能的划分和优先级的排序。
可以根据功能的重要性和紧急性进行优化。
2. 进行对象分析和设计•在确定了系统需求和功能后,需要进行对象分析和设计。
对象是面向对象方法的基本单位,是实现系统功能的实体。
•对象分析是指从需求中识别出系统中的各个对象,并进行对象之间的关系分析。
可以使用UML(统一建模语言)等工具进行对象分析,帮助识别出系统中的各个对象及其属性和方法。
•对象设计是指根据对象分析的结果,对每个对象进行细化设计,确定其属性、方法和关系,并进行接口设计等。
3. 实现对象的代码编写•在进行了对象的分析和设计后,进入实际的代码编写阶段。
•首先,需要根据对象的设计,使用编程语言(如Java、C++等)编写相应的类和方法。
类是对象的实现方式,包含了对象的属性和方法。
•代码编写时需要遵循面向对象编程的原则,如封装、继承、多态等。
4. 进行单元测试和集成测试•在代码编写完成后,需要进行单元测试和集成测试,确保代码的正确性和功能的完整性。
•单元测试是指对单个对象或方法进行测试,验证其正确性。
可以使用测试框架进行单元测试,并编写相关的测试用例。
•集成测试是指将多个对象或方法进行组合,进行整体的功能验证。
可以通过编写集成测试用例,模拟实际使用场景进行验证。
5. 进行系统的整体测试和优化•在进行了单元测试和集成测试后,需要进行系统的整体测试。
•整体测试是指对整个系统进行验证,包括系统的各个模块之间的协作和交互。
•在整体测试过程中,需要发现和修复可能存在的问题和缺陷,并进行系统的优化和改进。
6. 进行系统的部署和维护•在系统经过整体测试后,可以进行系统的部署和维护。
•部署是指将系统部署到实际的环境中,使用户可以进行使用。
面向对象程序设计之设计原则与方法

面向对象程序设计之设计原则与方法面向对象程序设计是一种先进的程序设计范式,关键在于建立一个具有自主行为和自我描述能力的程序体系结构,它可以非常自然的模拟现实世界中的对象和关系,提升程序的可读性、可扩展性和可维护性,其重要性不言而喻。
在面向对象的程序设计中,设计原则和设计方法是非常重要的,以下是我对其的理解和分析。
一、设计原则设计原则是设计过程中最重要的指导方针。
它可以帮助开发人员做出更好的设计决策,确保程序具有高内聚性和低耦合性,以此提高程序的可扩展性、可维护性和可重用性。
下面是一些常用的面向对象设计原则:1. 单一职责原则(Single Responsibility Principle,SRP)单一职责原则是指一个类、模块或者函数只负责一项任务。
这样做可以降低类的复杂度,提高代码的可读性,方便代码的维护和修改。
2. 开放-封闭原则(Open-Closed Principle,OCP)开放-封闭原则是指一个软件实体(类、模块或函数等)应该对扩展开放,对修改关闭。
也就是说,在不修改现有代码的情况下,可以通过增加新的代码来扩展软件的功能。
3. 里氏替换原则(Liskov Substitution Principle,LSP)里氏替换原则是指如果一个软件实体使用了另一个软件实体,那么它们应该是可以互换的。
也就是说,子类可以替换父类出现在程序中的任何地方,并保证程序的功能正确性。
4. 依赖倒置原则(Dependency Inversion Principle,DIP)依赖倒置原则是指高层模块不应该依赖低层模块,二者都应该依赖抽象。
同时,抽象不应该依赖细节,细节应该依赖抽象。
这样做可以降低模块之间的耦合度,提高代码的可维护性和可重用性。
5. 接口隔离原则(Interface Segregation Principle,ISP)接口隔离原则是指一个类不应该依赖一个它不需要的接口。
也就是说,一个接口应该只提供它的客户端需要的方法,而不应该强迫它们实现它们不需要的方法。
面向对象程序设计思想

面向对象程序设计思想面向对象程序设计(Object-Oriented Programming,简称OOP)是一种以对象为中心的编程范式,它将现实世界中的事物抽象为对象,并通过对象之间的交互来实现程序的运行。
面向对象程序设计的核心思想包括封装、继承和多态。
封装封装是面向对象程序设计中最基本的概念之一。
它指的是将数据(属性)和操作数据的方法(行为)组合在一起,形成一个对象。
封装的目的是隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
这样,对象的使用者不需要了解对象内部的实现细节,只需要通过接口与对象进行交互。
例如,在一个银行系统中,我们可以创建一个`Account`类,该类封装了账户的基本信息(如账号、余额)和对账户的操作(如存款、取款)。
用户在使用`Account`类时,只需要调用相应的方法,而不需要关心这些方法是如何实现的。
继承继承是面向对象程序设计中另一个重要的概念。
它允许一个类(子类)继承另一个类(父类)的属性和方法。
通过继承,子类可以扩展或修改父类的行为,而不需要重新编写代码。
继承支持代码的复用,使得程序设计更加简洁和高效。
例如,假设我们有一个`Animal`类,它定义了所有动物共有的属性和方法。
我们可以创建一个`Dog`类,它继承自`Animal`类。
`Dog`类将继承`Animal`类的所有属性和方法,并且可以添加一些特有的属性和方法,如`bark`。
多态多态是面向对象程序设计中的一个重要特性,它允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
多态性使得程序设计更加灵活和可扩展。
多态性通常通过抽象类和接口来实现。
抽象类定义了一个或多个抽象方法,而具体的子类则提供了这些抽象方法的实现。
接口则定义了一组方法规范,不同的类可以实现同一个接口,但提供不同的实现。
例如,假设我们有一个`Shape`接口,它定义了一个`draw`方法。
我们可以创建`Circle`、`Square`等类,它们都实现了`Shape`接口。
面向对象设计中的设计模式及应用场景

面向对象设计中的设计模式及应用场景引言:面向对象设计模式是一套经过实践验证的、用来解决软件设计中常见问题的模板,是软件开发中重要的部分。
通过使用设计模式,可以使得软件设计更加灵活、可复用、可维护,并且降低了代码的耦合性。
本文将介绍几种常见的面向对象设计模式及其应用场景。
1.单例模式(Singleton)单例模式是一种只允许创建一个实例的设计模式。
它在需要控制资源访问和限制实例个数的场景中非常有用。
例如,在一个多线程的应用中,多个线程需要共享一个资源,但又不能创建多个实例时,单例模式就能很好地解决这个问题。
另外,数据库连接池是一个常见的使用单例模式的应用场景,因为数据库连接资源是有限的,需要限制实例的个数。
2.工厂模式(Factory)工厂模式是一种用来创建对象的设计模式。
通过工厂模式,可以将对象的创建过程封装起来,使得客户端代码不需要知道具体的对象创建细节。
例如,在一个手机生产厂家中,可以定义一个手机工厂类,该工厂类负责创建不同型号的手机对象。
客户端只需调用工厂类的方法,即可获得所需的手机对象。
3.观察者模式(Observer)观察者模式是一种发布-订阅模式,它定义了一种一对多的关系。
当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。
这种模式常用于事件处理系统,例如在一个图形界面程序中,当用户点击按钮时,监听该按钮的组件会接收到通知,并执行相应的操作。
4.策略模式(Strategy)策略模式允许在运行时根据需求选择一种算法或行为。
它将算法和行为封装到自己的类中,并将其与主类解耦,从而可以在不修改代码的情况下动态切换算法和行为。
例如,在一个电商网站中,购物车的计算方式可以有多种选择,可以根据用户的等级、活动等不同情况选择不同的计算方式。
5.适配器模式(Adapter)适配器模式用于将一个类的接口转换成客户端所期望的另一个接口。
适配器模式常用于不兼容接口的类之间的适配。
例如,当我们使用一个第三方库时,库的接口可能与我们的代码不兼容。
软件工程课程目录

第一章软件工程概述介绍软件工程概念的提出以及发展历程,并分析软件开发的本质。
软件工程概论课程介绍第二章软件过程介绍如何定义一个项目的过程,主要涉及三方面的知识:(1)要了解软件开发通常需要做哪些工作,即软件生存周期过程;(2)要了解定义过程的基准框架,即软件生存周期模型;(3)是要了解一般性的过程规划技术。
软件过程(1)-20100913软件过程(2)-20100916软件过程(3)-20100916第三章软件需求与软件需求规约介绍软件需求的定义、需求的分类、常用的需求发现技术,以及需求规约。
软件需求-20100923第四章结构化分析介绍结构化需求分析、需求验证及实例研究。
结构化分析方法-0927第五章结构化设计结构化设计:总体设计的目标及其表示、总体设计方法、设计评价准则与启发式规则、设计优化、详细设计、软件设计规格说明书、实例研究。
结构构化设计方法-总体设计0930结构化设计-详细设计和软件设计规约1011第六章面向对象方法-UML面向对象方法发展以及UML(Unified Modeling Language)的提出、表达客观事物的术语、表达关系的术语、组织信息的通用机制--包、模型表示工具。
面向对象介绍面向对象方法UML(1)面向对象方法UML(2)面向对象方法UML(3)第七章面向对象分析、设计和编程技术介绍面向对象分析、设计和编程技术。
面向对象分析模型规约面向对象设计(1)面向对象设计(2)面向对象编程第八章面向对象方法-RUPRUP(Unified Software Development Process)的作用和特点、核心工作流。
RUP-1-1207RUP-2-1210RUP-3-1214第九章软件测试软件测试目标与软件测试过程模型、软件测试技术、软件测试步骤、静态分析技术-程序正确性证明。
软件测试(1)软件测试(2)软件测试-扩展报告第十章软件工程管理软件工程管理活动;软件规模、成本和进度估算;能力成熟度模型CMM;ISO9000标准。
面向对象设计阶段的主要任务

面向对象设计阶段的主要任务
面向对象设计阶段是软件开发过程中非常重要的一个阶段。
在这个阶段,我们需要完成以下主要任务:
1. 确定需求:在设计阶段,我们需要仔细地了解用户的需求,
确定软件系统需要具备哪些功能和特性。
2. 定义对象:在面向对象的设计中,对象是非常重要的概念。
我们需要根据需求确定系统中需要的对象,并定义它们的属性和方法。
3. 建立类结构:在确定对象后,我们需要将它们组织成类的层
次结构。
这可以帮助我们更好地组织代码,提高代码的可读性和可维护性。
4. 设计关系:在类结构确定后,我们需要确定类之间的关系。
这包括继承、聚合、关联等等。
这些关系可以帮助我们更好地组织代码,实现系统的功能。
5. 设计接口:在面向对象的设计中,接口是非常重要的概念。
我们需要定义对象之间的接口,以及对象和系统之间的接口。
这可以帮助我们更好地实现系统的功能,提高系统的可扩展性。
6. 设计模式:面向对象设计中有很多经典的设计模式,包括单
例模式、观察者模式、工厂模式等等。
在设计阶段,我们需要选择合适的设计模式,以帮助我们更好地实现系统的功能。
总之,在面向对象的设计阶段,我们需要仔细地分析用户需求,设计合适的对象和类结构,确定类之间的关系和接口,选择合适的设计模式,以实现一个高质量的软件系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
❖ 除了确定操作之外,还需要确定把每种操作分配 给哪个类。
1、操作的格式
[可见性] 操作名[‘(‘参数列表’)’][‘:’返回类型] (特征标记 ) ❖ 可见性的取值为+(公有的)、#(受保护的) 、-(私有的)或~( 包) 。 ❖ 对象的操作可分为内部操作和外部操作 ▪ 内部操作:只供对象内部的操作使用,不对外提供。 ▪ 外部操作:当其他对象用消息请求它时,它进行响应。 ❖ 类操作(静态操作)是用来创造实例或者操纵静态属性的 操作。 ▪ 例如C++中的前面冠以static的成员函数,就是类操作。
系统可以尽快交付。
体系结构师的工作
❖ 把组件分配给子系统。 ❖ 体系结构师需要知道如何折中选择系统的功能性需
求与非功能性需求,并帮助客户做出正确决策。
▪ 如一组符合新的安全性标准的安全性需求将需要另外3个 月的时间和350000美元的钱来合并进信息系统中。
▪ 如推迟一项特殊的需求直到信息系统交货时,并且现在维 护可能节省150000美元,但是往后加入该需求将花费 300000美元。
MSG基金会案例中Estimate Funds Available for Week用例的方案
Mortgage Class具有职责 Compute Estimated grants and payment for week
Manage an Asset用例方案1实现
Manage an Asset用例方案2实现
❖ 例:如果MSG基金会的工作人员把基金会的资金投资到通 用汽车公司的股票上,那么信息系统就会创建一个对象,并 且调用操作setAssetNumber把相关的资产编号分配给那个对 象,该对象表示新的投资。
❖ 当工作人员想打印MSG基金会的所有资产清单时,将以此 考虑信息系统中的每个对象,并发送一条消息来调用操作 GetAssetNumber,以获得由那个对象表示的资产编号。
❖ 在面向对象范型中子类的每个实例可以继承父 类的实例的属性,父类具有的操作也同时应用 到子类的实例上。
6、操作分配:Osbert 案例研究
(1)职责驱动型设计
❖ 在购买油画时,为了计算精品或名品的最大价格,信息系 统需要执行一种操作来获得一幅拍卖油画的价格,即需要 一种操作getAuctionPrice。类Auctioned PaintingClass负责 确定相关的拍卖价格,所以操作getAuctionPrice应该分配 给Auctioned PaintingClass。
(4)用动词识别操作 (5)查看每一个属性,因为要用对象的操作来对其进行操纵。 (6)追踪操作的执行路线
模拟操作的执行,并在整个系统中跟踪 。
3、审查与调整Байду номын сангаас
(1)审查每个操作是否真正有用 是否直接提供系统责任所要求的某项功能?或者响应其 它操作的请求,间接地完成某种功能的某些局部操作?
调整——取消无用的操作
(3)有不同的侧重点和不同的策略
OOA主要针对问题域,识别有关的对象以及它们之 间的关系,产生一个映射问题域,满足用户需求,独立 于实现的OOA模型。
OOD主要解决与实现有关的问题,基于OOA模型, 针对具体的软、硬件条件(如机器、网络、OS、GUI、 DBMS等)产生一个可实现的OOD模型。
两种不同的观点
2、识别操作
❖对象行为分类
(1)系统行为 例:创建、删除、复制、转存
(2)对象自身的行为——算法简单的操作 例:读、写属性值
(3)对象自身的行为——算法复杂的操作 计算或监控
识别操作的启发策略
(1)考虑系统责任 有哪些功能要求在本对象提供?
(2)考虑问题域 对象在问题域对应的事物有哪些行为?
(3)分析对象状态 在每种状态下对象可能发生什么行为? 对象状态的转换,是由哪些操作引起的?--状态图讲述
与实现有关的因素有:图形用户界面系统、硬件、操 作系统、网络、数据管理系统和编程语言等。
OOD模型
——从两个侧面来描述
从另一侧面观察 OOD模型每个部分
用OO概念表达 ——采用OOA的概念 及模型组织方式
从一个侧面观察 OOD模型包括几个主 要部分 ——一个核心部分加 几个外围部分
在辅助模型中要增加分别 用于描述构件模型和部署 模型的构件图和部署图
2、识别属性
❖ 启发性策略
▪ 按一般常识这个对象应该有哪些属性? ▪ 在当前的问题域中这个对象应该有哪些属性? ▪ 根据系统责任的要求,这个对象应具有哪些属性? ▪ 建立这个对象是为了保存和管理哪些信息? ▪ 为了在对象的操作中实现特定功能,需要增设哪些属性? ▪ 对象有哪些需要区别的状态?是否需要增加一个属性来记
Mortgage Class具有职责 Intilialize,update,and delete mortgages
Produce a Report用例方案1实现
Mortgage Class具有职责 Generate list of mortgage
❖ MSG系统的类图
❖ CRC图中列出某个类 的协作者,但并不是 和每个协作者都有相 关的职责。
❖ 尽可能晚的把信息添加进行模块中是有意义的。
1、属性
❖ 属性是用来描述对象的静态特征的一个数据项。 ❖ 属性的基本格式:
[可见性]属性名[:类型][=初始值](可选) ▪ 可见性:
• 公共的:该属性可由拥有它的对象和其他对象访问; • 受保护的:可由拥有它的对象以及该对象所属于的类的子类
所产生的对象访问; • 私有的:该属性仅能由拥有它的对象访问; • 包范围的:只有在同一个包中声名的元素才能使用。
人(通信地址) ❖ 若不使用多态机制,凡是在一般类中定义了的属性不要在
特殊类中重复出现。 ❖ 如果一个属性的值明显可以从另一个属性值直接导出,则
应考虑是否去掉这个属性。
4、属性的定位
❖ 把属性放置到由它直接描述的那个对象所属的类的符号中。 ❖ 在继承结构中把通用的属性放在一般类中,把专用的属性放
在特殊类中。 ❖ 总的原则:一个类的属性必须适合这个类和它的全部特殊类
操作getAuctionPrice的分配
(2)继承
❖ PaintingClass具有一个属性title。
❖ 使用操作setTitle把油画的名称分配给油画对象。 ▪ 如果Osbert购买一幅新油画,系统会创建一个新对象,并 且调用操作setTitle把新油画的名称分配给那个对象。
❖ 使用操作GetTitle获得油画对象的名称。 ▪ 如果Osbert希望打印他所购买的所有油画的一份清单,那 就依次检查信息系统中的每个对象,并且发送一条消息 给操作GetTitle,以获得那个对象表示的油画的名称。
❖把操作setTitle 和操作GetTitle分配给Painting Class。
操作
7、 CRC卡
❖ CRC卡:类-职责-协作(class-responsibilitycollaboration)
❖ 对于每个类,信息系统开发团队都会填充在一张卡 中,以显示类名、那个类的功能以及它为了实现那 种功能而调用的一份其他类的列表。
❖问题域部分设计
▪ 按照实现条件对OOA模型进行补充与调整。
❖人机交互部分设计
▪ 设计人机界面
❖控制驱动部分设计
▪ 定义和协调各个并发的控制流
❖数据管理部分设计
▪ 对永久对象的存取建模
❖构件及部署部分设计
▪ 构件模型用于描述构件及构件之间的关系,部署模型 用于描述节点、节点之间的关系以及构件在节点上的 分布。
2、OOA与OOD的关系:
(1)从OOA到OOD不是转换,是调整和增补
将OOA模型搬到OOD; 进行必要的调整, 作为OOD模型的问题域 部分;
增补其它四个部分,成 为完整的OOD模型。
OOA 模型
构件部署
人
数
机 交 互
问题域 部分
据 口 部
部
分
分
任务管理部分
(2)采用一致的概念和表示法
——不存在分析与设计之间的鸿沟
(2)是不是高内聚的 一个操作应该只完成一项单一的、相对完整的功能。
调整——拆分 或 合并
4、职责驱动型设计
❖ 设计原则:
如果Class A发送消息给 Class B以告诉它做某些事 情,那么执行请求的操作就 是Class B的职责。
如:MSG基金会案例研究的 Estimate Funds Available for Week用例
❖前4项不强调次序 ❖每个部分均采用与OOA一致的概念、表示法及活动,但具有 自己独特的策略。 ❖进行构件部署设计要在其前面四个部分完成后进行。
4、本书主要讲述内容
❖ 设置属性的格式 ❖ 标识操作,分配给合适的类 ❖ 选择用于实现信息系统的编程语言 ❖ 可移植性 ❖ 把每种软件组件分配给在其上运行的硬件组件(软
件体系结构师)
❖ 统一过程提供一种可用于开发大型信息系统的方法 学。
▪ 分析工作流的一个重要部分是把信息系统分割成分析程 序包。每个分析程序包都包含一组相关的类,它可以实 现成一个单一的单元。
▪ 设计工作流目标是把即将到来的实现工作流分解成可管 理的部分,将其称为子系统。
• 实现较小的子系统比实现大系统更容易些。 • 编程团队可以并行工作实现各个相对独立的子系统,
8.2 传统的与面向对象设计
8.3 问题域部分的设计
8.3.1 属性
❖ 设计工作流期间,必须指定类图的每个属性的精确格式。 ❖ 为什么不在分析工作流期间确定格式呢?
▪ 面向对象范型是迭代式的,每次迭代都会改变已经完成 的工作的一部分。如果更早的确定属性,将不得不修改 这些属性,并把它们从一个类移动到另一个类。
第二种观点
分析
第
问题域与
一
系统责任
种 观