第4章 4.1--4.4 面向对象分析与对象模型
面向对象模型
面向对象模型面向对象模型面向对象编程是一种软件编码范式,它将程序设计视为对象的组合,其中每个对象都是一组数据和一组操作这些数据的函数或方法。
面向对象程序设计提供了许多优点,例如代码复用,更好的代码管理,更好的安全性,程序可扩展性和可维护性等。
在面向对象编程中,最基本的概念是一个类。
一个类是一个面向对象编程中的构造,它描述了一个对象的属性和方法。
一个对象是特定类的实例,它继承了该类的所有方法和属性。
每个类都可以有一个或多个方法,在这些方法中可以实现所需的功能。
方法可以以任何方式执行操作,例如向类的属性添加,从类的属性中删除,或返回值给调用程序。
一个面向对象模型的设计必须包含一个类图,描述了所有的类及它们的关系。
在一个类图中,你可以使用类名、属性、方法、继承和依赖关系来描述对象之间的相互作用。
类图提供了一个方便的方式来清晰地表达面向对象模型的设计。
在一个典型的面向对象模型中,有许多重要的类可以使用。
其中一些包括:1.基本数据类型类:提供基本数据类型,例如int和float。
2.字符串类:提供基本字符串操作的方法。
3.日期和时间类:提供有关日期和时间的信息、计算和操作。
4.文件和输入输出类:提供操作文件和输入输出流的方法。
5.集合类:提供处理集合数据结构的方法。
6.图形用户界面类:提供处理窗口、菜单和按钮等用户界面对象的方法。
7.网络类:提供与网络通信相关的方法。
每个类都可以包含属性和方法。
属性是一个类的数据值,可以是一个整数、浮点数、字符串、对象或其他类型。
方法是用来执行操作的程序代码块。
一个类中的所有方法都可以定义在该类文件的一个单独的段中,在类的定义之后。
面向对象编程的一个重要概念是继承。
继承是指一个类继承了另一个类的属性和方法。
当一个类继承另一个类时,它可以访问和使用该类的所有属性和方法。
这使得代码更容易复用,并允许程序员在一个类中创建新方法,而无需在每个类中重复代码。
另一个重要概念是多态性。
第4章-C++面向对象程序设计(Visual C++ 2010版)-温秀梅-清华大学出版社
现小在孔C,P外U速界度可越以来通越过快这个的小今孔天窥我视们类并内不部推的荐秘使密用。它, 但它作为C++ 一个必要的知识点,一个完整的组成部 分,我友元们分还为是友需元要函讨数论、一友下元的成。员和友元类三种。
{ cout<<"the center of the circle is : "
<<c1.center.x <<","<<c1.center.y ;
cout<<" the radius is : "<<c1.radius<<endl;
}
关于友元函数的说明:
5. 成员函数和友元函数具有同等的特权(100% 的), 主要的区别在于调用形式不同。友元函数的调用形式与普
4.2 友元函数
在类中声明一个普通函数,在前面加上friend修饰, 那么这个普通函数就成了该类的友元函数,可以访问该 类的一切成员 。
class Circle { struct point{ int x,y;}center;
int radius; public:
…… double getArea(); double getDistance();
6.友元综函合数举在例类1:中在说ci明rc,le但类其中名使字用的友作元用域在类外,
作元请用说记域明的可住开以:始代点替友在该元说函函明数数点的函,本数结身说束是明点一和。个类如名果普相在通同说函明。数友因,元此时,由给友类
授权,出了使该它函成数为的类函的数体友代元码函,数则,它是且内仅联是的该。类的友元。而 一个普通7.函一数个函本数身可无以法成把为自多己个定类的义友为元友函元数函,数因,而可因以为访这 样做无问多意个义类,的同成时员也。 违背了数据隐藏原则。
Java面向对象程序设计第4章_类与对象
值的级别不可以高于该参数的级别 。
例4-4
public class Rect { //负责创建矩形对象的类 double width,height,area; void setWidth(double width) { if(width>0){ this.width=width; }} void setHeight(double height) { if(height>0){ this.height=height; } } double getWidth(){ return width; } double getHeight(){ return height; } double getArea(){ area=width*height; return area; }}
1.对成员变量的操作只能放在方法中,方 法可以对成员变量和该方法体中声明的局部变 量进行操作。 2.需要注意的是:实例方法既能对类变量操 作也能对实例变量操作,而类方法只能对类变 量进行操作。 3.一个类中的方法可以互相调用,实例方法 可以调用该类中的其它方法;类中的类方法只 能调用该类的类方法,不能调用实例方法。
给类命名时,遵守下列编程风格(这不是语法要求 的,但应当遵守):
◆ 1.如果类名使用拉丁字母,那么名字的首字母使用大写字母, 如。 2.类名最好容易识别、见名知意。当类名由几个“单词”复 合而成时,每个单词的首字母使用大写。
第4章__面向对象需求分析
• 在确定事件轨迹后,所有事件可以汇总成输入对象的事件 集和从对象输出的事件集。事件流图就是用于标记所有流入和 流出某对象的事件。
•
例:打印机对象—行为模型示例。
• 状态转换图表示了打印机的状态转换。图中的每个箭头代 表了从对象的一个状态到另一个状态的转变,箭头上标记的是 触发转变的事件。有时需要增加保护条件来满足对象的变迁, 例如,上图中打印机在故障状态时,故障修复事件只有在打印 队列不破坏的情况下才能使打印机进入打印状态,否则即使修 复也只能进入就绪状态。
工人
1..*
经理 管理
(1)关联
•限定关联 • 限定关联通常用在一对多或多对多的关联关系中,可以把 模型中的重数从一对多变成一对一,或从多对多简化成多对一。 在类图中把限定词放在关联关系末端的一个小方框内。 • 例如,某操作系统中一个目录下有许多文件,一个文件仅 属于一个目录,在一个目录内文件名确定了惟一一个文件。利 用限定词“文件名”表示了目录与文件之间的关系,可见,利 用限定词把一对多关系简化成了一对一关系。
(1)关联
•关联类 • 为了说明关联的性质可能需要一些附加信息。可以引入 一个关联类来记录这些信息。关联类也有属性、操作和其他 关联。
个人
0..*
授权
0..*
个人
授权 优先权 特权
用户和工作站的授权关联的关联类
3.对象-关系图
• (2)聚集
• 聚集也称为聚合,是关联的特例。聚集表示一类对象与 另一类对象之间的关系,是整体与部分的关系。
• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构
面向对象的概念面向对象建模面向对象分析与模型化面向对象
打电话者拿起电话受话器 电话忙音开始 打电话者拨数字(8) 电话忙音结束 打电话者拨数字(2) ....... 打电话者拨数字(3) 接电话者的电话开始振铃 铃声在打电话者的电话上传出 接电话者回答 接电话者的电话停止振铃 铃声在打电话者的电话中消失 通电话 .........
状态图与事件追踪图的关系
揿下鼠标按钮(按钮、位置) 拿起电话受话器
数字拨号(数字)
事件追踪图
事件追踪图侧重于说明发生于系统 执行过程中的一个特定“场景”。
场景也叫做脚本,是完成系统某个 功能的一个事件序列。
场景通常起始于一个系统外部的输 入事件,结束于一个系统外部的输 出事件,它可以包括发生在这个期 间的系统所有的内部事件。
类是一组具有相同数据结构和相同 操作的对象的集合。
类的定义包括一组数据属性和在数 据上的一组合法操作。
类定义可以视为一个具有类似特性 与共同行为的对象的模板,可用来 产生对象。
在一个类中,每个对象都是类的实 例 (Instance),它们都可使用类中 提供的函数。
继承 (Inheritance)
面向对象方法学的要点(2)
对象彼此之间仅能通过传递消息互相联系 面向对象的方法学可以用下列方程来概括:
OO=objects+classes+inheritance+ communication with messages
如果一个软件系统是使用这样 4 个概念设计和实现的,则我们认 为这个软件系统是面向对象的。
这个新的子集合可以认为是既存类 的一个特殊化。
面向对象建模
所谓模型,就是为了理解事物而对事物作出 的一种抽象,是对事物的一种无歧义的书面 描述。
软件工程实用案例 第4章 结构化需求分析
3项目范围 3.1 第一版范围 3.2 后续版本范围 3.3 限制与排除
4项目环境 4.1 操作环境 4.2 涉众 4.3 项目属性
词汇表 参考资料 附录
4.3 需求获取
4.3.3 选择信息的来源
• 1. 涉众
• 包括用户、客户、领域专家、用户替代源(市场人员、销售人员) 等。
4.4 需求分析
4.4.1 过程建模
4.4.1.1 数据流图
3. 分层结构 (3)N层图
图4-12 功能分解示意图
4.4 需求分析
4.4.1 过程建模
4.4.1.1 数据流图
3. 分层结构 (3)N层图
图4-13 食物订货系统的1层图
4.4 需求分析
4.4.1 过程建模
4.4.1.2 微规格说明
正式规定文档所需具有的条件或能力。
(3) 对(1)或(2)所描述的条件或能力的文档化表述。 其中,(1)是从用户角度定义的,(2)是从开发人员、
系统的角度定义的。
4.1 需 求
4.1.2 需求的层次
需求通常体现为三个层次:业务需求、用户需求和系 统需求。
4.1 需 求
4.1.2 需求的层次
4.3 需求获取
4.3.2 定义项目前景和范围
• 1.明确问题
P1 决策者:生产的废品过多。
• 2.发现业务需求
BR1:提供销售订单的准确性,减少因此而产生废品。
BR2:提供销售订单的准确性,在使用后3个月内,减少50%因此而产生 的废品。
4.3 需求获取
4.3.2 定义项目前景和范围
• 3.定义解决方案及系统特性
4.3 需求获取
4.3.4 需求获取的方法
面向对象分析与建模
3
面向对象的基本概念
❖类
类是对象的抽象。一个类定义了大体上相似的一组对象。 类是对象的定义和描述。一个类所包含的方法和数据是 用来描述一组对象的共同行为和属性。通过类来抽象一 个个对象的共同特点、描述一个个对象的相似属性,存 贮一个个对象的一致行为,是面向对象技术最重要的特 征。从形式和定义说明上看,类很像传统程序设计中的 结构,但类同时包含了传统程序设计中数据定义和功能 实现的构造。
2020/7/11
4
面向对象的基本概念
❖ 消息
消息是对象之间的通信机制,是访问类中所 定义的行为的手段。当一个消息发送给某一 个对象时,即要求该对象产生某些行为。所 要求产生的行为包含在发送的消息中。对象 接收到消息后,给予解释并产生响应。这种 通信过程叫消息传递(Message Passing)。
2020/7/11
6
面向对象的基本概念
❖ 继承性
当两个类产生继承关系后,原有的类被称为
父类(Parent Class),新定义的类被称作子 类(Children Class)。若子类只继承一个父类, 则称为“单重继承”(Single Inheritance); 若一个子类从继承多个父类,则称为“多重 继承”(Multiple Inheritance)。继承性是面 向对象语言区别于与其它语言最主要的特点。
的开发过程中,往往采用统一过程(RUP)
2020作/7/11为过程管理的模型。
11
面向对象分析的任务
面向对象分析(Object-Oriented Analysis, OOA)是在系统开发过程中完成了系统业务 调查以后,按照面向对象的思想来分析问题。 面向对象的分析是面向对象的系统开发的重 要环节。
2020/7/11
第4讲面向对象的动态模型和功能模型
第4讲面向对象的动态模型和功能模型面向对象的动态模型和功能模型主要是指面向对象程序设计中的两个重要概念,类和对象的行为和状态。
通过动态模型和功能模型,我们可以更好地理解面向对象编程,并进行对象的管理和调用。
面向对象的动态模型是指对象在运行时的行为和状态的特征描述。
在面向对象编程中,类是对对象进行描述的模板,而对象则是由类创建出来的实例。
类定义了对象可以执行的方法和拥有的属性,而对象则具有具体的属性值和能够执行的方法。
动态模型描述了对象在运行时的行为和状态,即对象能够执行的方法和当前的属性值。
对象的行为主要通过方法来实现。
方法是类中的行为定义,描述了对象能够完成的具体操作。
通过调用对象的方法,我们可以实现对对象行为的控制和管理。
例如,一个类可能定义了一个"加法"方法,然后通过创建对象并调用这个方法,我们就可以实现加法操作。
对象的状态是描述对象当前属性值的特征。
状态由对象的属性组成,属性是类中用于描述对象属性的变量。
通过改变对象的属性值,我们可以改变对象的状态。
例如,一个"人"类可能有一个"年龄"属性,我们可以创建对象并将年龄属性设置为30,然后通过改变属性值,我们可以改变对象的年龄状态。
面向对象的功能模型是指对象在运行时的组织和调用关系。
在面向对象编程中,对象之间可以通过类之间的关系进行组织和调用。
常见的类之间的关系包括继承、聚合和关联。
继承关系表示一个类可以继承另一个类的方法和属性,并可根据需要进行重写或添加新的方法和属性。
聚合和关联关系表示一个类可以包含一个或多个其他类的对象作为属性。
功能模型描述了对象之间的组织和调用关系。
通过功能模型,我们可以更好地组织和管理对象,并实现对象之间的协作和通信。
例如,我们可以通过组合多个对象来实现一个复杂的系统,对象之间可以相互调用对方的方法来实现系统的功能。
总结起来,面向对象的动态模型和功能模型是面向对象程序设计中两个重要的概念。
海南大学研究生835-软件工程原理方法与应用 考试大纲
海南大学硕士研究生入学考试《835软件工程原理方法与应用》考试大纲一、考试性质海南大学硕士研究生入学考试初试科目。
二、考试时间180分钟。
三、考试方式与分值闭卷、笔试。
满分150分。
四、考试内容第一部分软件工程的基本概念第1章绪论软件与软件危机,软件工程,软件开发生命周期,模型,方法,技术,工具,过程,软件工程原理,软件工程环境,软件工程管理,软件开发风险,软件需求,软件设计,软件工具,自顶向下,分解,抽象,细化,模块,模块化,软件复审,软件测试等。
第二部分传统(结构化)软件工程第2章软件生存期与软件过程2.1软件生存周期2.2传统的软件过程2.3软件演化模型2.4形式化方法模型2.5软件可行性研究第3章结构化分析与设计3.1概述(结构化分析的工具与模型组成)3.2结构化系统分析(需求分析的任务、步骤,DFD过程模型)3.3结构化系统设计(软件设计的任务,数据存储的设计,人机交互的设计)3.4模块化设计第二部分面向对象软件工程第4章面向对象与UML4.1面向对象概述4.2UML简介4.3静态建模4.4动态建模4.5物理架构建模4.6UML工具(Rational Rose)第5章需求工程与需求分析*5.1软件需求工程5.2需求分析与建模5.3需求获取的常用方法5.4需求模型5.5软件需求描述5.6需求管理5.7需求建模示例第6章面向对象分析6.1软件分析概述6.2面向对象分析建模6.3面向对象分析示例第7章面向对象设计7.1软件设计概述7.2面向对象设计建模7.3系统架构设计7.4系统元素设计7.5面向对象设计示例第8章编码与测试8.1编码概述8.2编码语言与编码工具8.3编码示例8.4测试的基本概念8.5黑盒测试和白盒测试8.6测试用例设计8.7多模块程序的测试策略8.8面向对象系统的测试第9章软件维护9.1软件维护的种类9.2软件可维护性9.3软件维护的实施9.4软件维护的管理9.5软件配置管理第10章软件复用软件复用的基本概念第11章软件工程管理11.1软件管理的目的和内容11.2项目进度安排第12章软件质量管理软件质量保证、质量认证、可靠性的概念,CMM基本概念,软件质量标准体系。
第4章 面向对象系统分析与对象类建模 2
⑶ 类的操作
其语法如下: [方向]名称:类型[ = 默认值] [direction] name:type [= default value] 方向可以取下述值之一: in输入参数,不能对它进行修改。 out输出参数,为了向调用者传送信息可以对它进 行修改。 inout输入参数,为了向调用者传送信息可以对它 进行修改。
第4章 面向对象系统分 析与对象类建模
教学目的
⑴ 掌握面向对象系统分析的过程 ⑵ 掌握系统用例模型的设计方法
⑶ 了解类和对象的概念、类与对象的关系等
⑷ 重点掌握系统用例模型的设计和对象与类图 的设计
4.1 面向对象系统分析
面向对象分析,就是抽取和整理用户需求并 建立问题域精确模型的过程。 面向对象分析过程从分析陈述用户需求的文 件开始 可能由用户(包括出资开发该软件的业主代 表及最终用户)单方面写出需求陈述,也可 能由系统分析员配合用户,共同写出需求陈 述 当软件项目采用招标方式确定开发单位时,
关联可以有方向,即导航。 一般不作说明的时候,导航是双向的,不需要在线上标出箭头。 大部分情况下导航是单向的,可以加一个箭头表示。 导航性描述的是一个对象通过链(关联的实例)进行导航访问另 一个对象,即对一个关联端点设置导航属性意味着本端的对象可 以被另一端的对象访问。 可以在关联关系上加箭头表示导航方向。 只在一个方向上可以导航的关联称为单向关联,用一条带箭头的 实线来表示。 在两个方向上都可以导航的关联称为双向关联,用一条没有箭头 的实线来表示。
关联的多重性是指有多少对象可以参与该关联,多重性可 以用来表达一个取值范围、特定值、无限定的范围或一组 离散值。 将多重性写成一个表示取值范围的表达式,其最大值和最 小值可以相同,用两个圆点把它们分开。 多重性说明对于关联另一端的类的每个对象,本端的类可 能有多少个对象出现,对象的数目必须是在给定的范围内。 可以精确地表示多重性为:一个(1);多个(0..*);一 个或多个(1..*);整数范围,
第4章 面向对象系统分析
33
4.1 面向对象的基本概念
单一继承和多重继承
34
4.1 面向对象的基本概念
多态(Polymorphism)
在父类中定义的属性或服务被子类继承后,可 以具有不同的数据类型或表现出不同的行为。
35
4.1 面向对象的基本概念
多态性表明同一个操作用于不同的对象上可以有不同
的解释,并产生不同的执行结果。
在面向对象开发模式中,把标识和模型化问题论域中
的主要实体做为系统开发的起点,主要考虑对象的行 为而不是必须执行的一系列动作;
• • • • • 对象是数据抽象与过程抽象的综合; 系统的状态保存在各个数据抽象的所定义的数据存储中; 控制流包含在各个数据抽象中的操作内; 消息从一个对象传送到另一个对象; 算法被分布到各种实体中。
39
4.1 面向对象的基本概念Fra bibliotek 组成结构实例
40
4.1 面向对象的基本概念
实例连接--关联关系
实例连接 实例连接表示对象之间的静态联系,它是通过对 象的属性来表现对象之间的依赖关系。 对象之间的实例连接称为链接(Link),存在实例连接 的对象类之间的联系称为关联(Association)。 „ has a „ 关联是一种结构关系,它描述了一组对象之间的连接, 关联具有多重性。
比较一下,实体关系图(ERD)中的关系和类图中的关联
实体关系图(关系型数据库) 类图(面向对象) 表(table) 类(class) 记录(record) 字段(field) 对象(object) 属性(attribute)
-关系(relationship)
操作(operation) 关联(association)
23
第4章-面向对象的程序设计方法
{
[字段成员]
[属性成员]
[方法成员]
[事件成员]
[构造函数]
[析构函数]
2021/6/7
8
}
4.2 创建自定义类
4.2.1 创建类
1. 声明类字段
字段的声明格式与普通变量的声明格式相同。在类体中,字段
声明的位置没有特殊要求,习惯上将字段声明在类体中的最前面, 以便于阅读。例如:
class Student //定义一个Student类
在一个类定义中,通常字段被声明为private或protected,这
样在类定义外将无法看到字段成员,这就是所谓“数据隐藏”。
其他成员通常被声明为public,以便通过这些成员实现对类的字
段成员的操作,类定义中的属性用于完成最基本的,对字段的读
写操2作021。/6/7
11
4.2 创建自定义类
4.2.2 类的方法与重载
是围绕着事情发展的过程进行的。
2021/6/7
2
4.1 面向对象程序设计的概念
4.1.1 面向对象与传统编程方法的不同 2.面向对象设计方法的设计思路 面向对象的程序设计方法模拟人类认识世界的思想方法,将 所有实体看作一个对象。仍然是上面的例子,面向对象的程 序设计思路如下: 1) 同样,首先需要创建一个提供用户输入用户名和密码的 应 用程序界面。 2) 将用户看作一个对象。 3) 用户对象拥有一个用于检查用户名和密码合法性的方法。 4) 用户提交数据后,调用方法对数据进行检验,并根据检验 返回结果确定用户登录是否成功。
1. 定义类的方法
在类中创建方法的语法格式为:
访问修饰符 返回值类型 方法名(传递参数列表)
{
…… ;
//方法体语句块
UML第4课数据建模
7. 创建列(column)。在表中创建每一列,包括列名、列的属性等。
8. 创建关系(relationship)。如果表与表之间存在关系,则创建它们 之间的关系。
9. 在必要的情况下对数据模型进行规范化,如从第二范式转变为 第三范式。
第4章 数据建模
3
4.1 基本概念
数据库数据的总体逻辑结构称为模式(Schemas)。
关系数据库数据的总体逻辑结构是关系模式,这些数据结构的关 系模式通过各种表来描述。
一个面向对象的系统,要利用关系数据库来表示对象模型 需要进行一定的转换,即把面向对象模式的数据模型转换 成关系模式的数据模型。其思想可以用如图所示的建模方 法表示。
对象类间的一对一关联。
可以在两个对象类转换成的关系模式中的任意一个模式内加 入一个外键,指向另一个模式的主键,即可建立两个表之间 的连接。
对象类间的一对多关联。
可以通过在具有多个对象的类的关系模式中加入一个外键, 指向另一模式的主键建立两个表的连接。
实现对象类间的多对多关联。
需要将类之间的关联也设计成一个类——关联类,把一个多 对多的关联转化成两个一对多的关联。引入的该关联类映射 为关系数据库中的一个关联表,用来映射关联对象。在新增 的关联表中设置一个标识符作为主键,加入两个外键分别指 向初始关联的两个关系模式表的主键。
16
4.3 数据库设计的步骤
结合Rose 2003工具提供的功能来说明如何用UML的类图进 行数据库设计,在Rose 2003中数据库设计的步骤如下:
1. 创建数据库对象。这里所说的数据库对象是指Rose中构件图中 的一个构件,其版型为Database。
面向对象分析的三个模型和五个层次
⾯向对象分析的三个模型和五个层次
在⾯向对象分析中,主要由对象模型、动态模型和功能模型组成。
对象模型是最基本、最重要、最核⼼的。
⽤⾯向对象⽅法开发软件,通常需要建⽴3种形式的模型,它们分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。
⼀个典型的软件系统使⽤数据结构(对象模型),执⾏操作(动态模型),并且完成数据值的变化(功能模型)。
对任何⼤系统来说,上述3种模型都是必不可少的。
⽤⾯向对象⽅法开发软件,在任何情况下,对象模型始终都是最重要、最基本、最核⼼的。
在⾯向对象分析过程中,构造出完全独⽴于实现的应⽤域模型;在⾯向对象设计过程中,把求解域的结构逐渐加⼊到模型中;在实现阶段,把应⽤域和求解域的结构都编成程序代码并进⾏严格的测试验证。
复杂问题(⼤型系统)的对象模型通常由下属五个层组成
主题层、类与对象层、结构层、属性层、服务层。
第4PlayCASE建模工具简介
4.1 PlayCASE概述
1. PlayCASE中的三个模型
PlayCASE 以循序渐进的方式推进软件的开发 过程,通过提供规范的分析设计方法及工具 软件,建立面向对象开发方法中的三个模型: 结构模型、动态模型和功能模型。在 PlayCASE 中,可直接对这三个模型进行建模,
4.2.2 PlayCASE的作用
2. 解决业务人员与软件开发人员之间的沟通问题 在信息化系统开发中,软件开发人员与业务人员的沟通问题体现在以 下两个方面: 由于各自背景的差异,加之没有双方认可的业务流程表达方法,软件 开发人员很难在短时间内理解业务背景知识,更无法完整地建立表达 业务领域知识的业务模型,使信息化系统开发缺少根基; 没有结合业务模型与信息化需求的技术手段,使业务人员对信息化的 需求很难全面、准确、及时、有效地传达给软件开发人员,难免造成 软件开发隐患。
/webnew/
4.1 PlayCASE概述
/webnew/
4.1 PlayCASE概述
开发者:高展(中国科学院软件工程专家、电子政务 业务流程设计方法国家标准制定者) 时间:1995年提出实用的面向对象的大型复杂系统分 析设计方法——全程一体化精细建模技术 获奖情况:获1997年中国PC软件大奖赛同类产品唯一 金奖,该赛事为国内最高级别。 水平:国际领先的建模工具软件,在技术上唯一全面 集成了主流建模方法 —— 集成面向对象与结构化方法 (兼容UML、IDEF)、集成业务分析与软件设计方法;在 市场上唯一实行贵族软件免费发放、零风险应用 —— 提供全方位服务 ( 业务分析与设计、需求分析、系统 配置设计、总体设计、详细设计)。
针对上述问题,PlayCASE一方面提供了可为双方接受的建立业务模型 方法,用来形成双方都可理解的业务模型,另一方面也提供了与业务 建模方法密切相关的信息化功能定义与流程定义的手段,消灭业务规 程与信息化需求之间的偏差,从根源上消除了产生软件危机的因素。
软件工程 面向对象的技术
1. Coda方法的OOA
类与对象层 属性层 服务层
类的边界 实例的边界 实例连接
属性 消息连接
服务
结构层
主题层
泛化与特化结构 主题
整体与部分结构
图4.10 分析过程的五个层次
在Coda方法中, 构 造 和 评 审 OOA 概 念模型的顺序由五 个层次组成:类与 对象、属性、服务、 结构和主题
这五个层次表 示分析的不同侧面。
继承是使用现存的定义作为基础,建立新定义的 技术。是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。
继承性分:
单重继承:一个子类只有一个父类。即子类只继承 一个父类的数据结构和方法。
多重继承:一个子类可有多个父类。继承多个父类 的数据结构和方法。
基类
现存类定义 父类(基类)
继承
图 4.3 继承性
良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。
系统内部
保险单 填写界面
保险单
客户
数据库界面 (abstract)
Oracle 界面 Sybasec界面
子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系 统。分层结构又分为封闭式和开放式。
类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现 的过程称为方法(method) ,方法有方法名,方法体 和参数。
由于对象是类的实例,在进行分析和设计时, 通常把注意力集中在类上,而不是具体的对象上。
对象和类的描述
类和对象一般采用“名字”、“属性”和“运算”来描 述。
基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。
第04章 文档对象模型(DOM)
第4章 文档对象模型(DOM)
4.1 DOM基础
2.getElementsByName() document.getElementsByName(name)该方法与 getElementById() 方法相似,但是它查询元 素的 name 属性,而不是 id 属性。因为一 个文档中的 name 属性可能不唯一(如 HTML 表单中的单选按钮通常具有相同的 name 属 性),所以 getElementsByName() 方法返回 的是元素节点的数组,而不是一个元素节点。 然后,我们可以通过要获取节点的某个属性 来循环判断是否为需要的节点。
第4章 文档对象模型(DOM)
4.1 DOM基础
DOM中的节点有Document、Element、 Comment、Type等不同类型,其中每一 个DOM树必须有一个Document节点,并 且为节点树的根节点。它可以有子节点 如Text节点、Comment节点等。 具体来讲, DOM 节点树中的节点有元 素节点、文本节点和属性节点等三种不 同的类型,
第4章 文档对象模型(DOM)
4.1 DOM基础
【例4-4】getElementById() 方法的使用。 <html> <head> <title>4-4</title> <script type="text/javascript"> function getValue() { var x = document.getElementById("myHeader") alert(x.innerHTML) } </script> </head> <body> <h1 id="myHeader" onclick="getValue()">这是标题 </h1> <p>点击标题,会提示出它的值。</p> </body> </html>
《软件设计与体系结构》教学大纲
《软件设计与体系结构》教学大纲01.课程的性质、目的与任务《软件设计与体系结构》课程是为软件工程专业开设的必修课,也是计算机科学与技术软件开发方向课程。
本课程运用工程的思想、原理、技术、工具,来对软件设计以及软件体系结构的相关思想、理论与方法进行系统介绍,包括软件模型和描述、软件体系结构建模和UML、软件设计过程、软件体系结构风格、面向对象的软件设计方法、面向数据流的软件设计方法、用户界面设计、设计模式、Web服务体系结构、基于分布构件的体系结构、软件体系结构评估、软件设计的进化、云计算的体系结构等内容。
本课程的具体任务包括:1.让学生建立构建软件系统架构一般方法的感性认识,理解并掌握软件系统架构分析、体系结构建模与架构设计的相关理论知识,培养学生软件架构设计的基本能力,能从内部模块规划设计、系统层次结构的构建开始,了解构建系统结构的一般技术和方法。
2.在构建软件系统的过程中,理解软件系统构建的一些关键问题,学习应对不同需求的系统对策和设计实现技术,使学生初步具备一定的系统架构分析与设计能力,同时,深入理解各种典型框架技术及原理,并初步具备运用模式设计思想开展软件详细设计的能力。
3.一方面,让学生理解并掌握软件体系结构的重要概念、术语和系统化方法,建立软件架构设计的理念,了解当前流行的框架技术,并理解其原理。
另一方面,以加深知识理解和培养初步架构设计能力为目的,并在项目开发中加以实践;在实践环节中重点培养运用典型框架进行项目构建的能力和使用设计模式进行细化设计的能力。
02.课程教学基本要求及基本内容第1章引言(一)基本教学内容1.1 软件1.2 软件工程1.3 软件设计1.4 软件体系结构(二)基本要求教学目的:理解软件的本质、软件神话、软件工程,了解软件过程和软件工程实践的相关内容,了解网络环境带来的各类问题。
教学重点:软件工程中的设计、设计过程和设计质量、软件设计原则。
教学难点:什么是软件体系结构、软件体系结构的内容、设计阶段的软件体系结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
迭代
面向对象的分析过程
用户、客 户 开发者 管理者 领域知识 专家知识 现实世界经验 OOA 分析 需求 分析
过程 什么是业务过程? (活动图)
问题描述(用例图)
角色是什么?
建立 模型
对象(概念)模型:初始类图 动态模型(职责分配) 类图
11
图 4-2 OO的分析过程
4.4 对象模型—类图
在线事物处理 人的角色 包含其他事物的包容器 被包含在包容器内的事物 系统外部其他系统
销售、支付、预定
在线销售项 出纳员 商店、银行识别号 销售商品项 信用卡授权系统 飞行员 飞机 乘客 空中交通控制系统
20
事物类目录
抽象的名词性概念 组织 事件
规划和策略 目录 财政收支、工作情况、 合同等记录 金融工具和服务机构 手册、书籍
(4) 去掉无用的类和对象 * 去掉冗余的类和对象 * 不考虑与本问题无关的类和对象 * 不考虑和实现有关的类和对象 * 去掉模糊概括的类 * 不要把概念当作属性 火车订票系统中的目的地是车次的属性还是概念? * 区分系统分析员观察世界所得到的领域中的真实概念 (是对问题内事物的描述)和软件设计人员描述软件实体 所使用的概念,是从不同视觉出发而得到的。
对象模型是用类图表示的静态结构视图。 对象模型是面向对象分析阶段建立的概念模型, 是面向对象设计和实现的基础模型。 类图描述类和类之间关系的图。 类图技术是OO方法的核心,类图是定义其他图 的基础。
12
4.4.1 类图(class diagram)
1)类的抽象层次(由Steve Cook和John Daniels引入的)
外部系统
LoginForm 注册用户进行登录的操作界面 BrowseForm 注册用户进行查询浏览的操作界面 MakeReservationForm 普通读者预订图书的操作界面
边界类关注参与者与用例之间交互的信息或响应的事件, 注 不描述窗口组件等界面的组成元素。 意 若两个用例同时与一个参与者交互,可共用一个边界类。
Sale date time SaleDatabase 软件制品,不是 概念的一部分
真实世界中的 概念(记号)
Sale 软件类, date 不是概念 Time 的一部分 Print()
26
确定类和对象
3) UML可描述三个主要的类
(1) 边界类(boundary)
用户 例:MiniLibray 边界类
Sale SalesDatabase date time 软件制品 真实世界中的概念 (实体,实体信息)
Sale 属性为 date 成员变量 Time Print() 操作为 软件类 成员函数
概念模型展示: 一组概念,
概念的属性, 概念间的关联 在UML中,一个概念模型是用一静态结构图 (static structure diagram)来描述的。
身 份 证 号
ISA
地址 员工
ISA
工资
为之 工作
电话号
名称 公司 组成 部门 生产 产品
地址
主 要 产 品
职务
管理
工人 参加 项目 项目名 预 算
经理 主持
部门名
优先级
产品名
成本
质量
18
图 4-4 实体关系图
对象关系图(类图) 员工
姓名 地址 身份证号 工资 1..* 为之工作 1
公司
姓名 地址 电话号 主要产品 雇用 解雇
定义协作者
当类没有足够的信息来履行职责时就需要协作, 协作必须发生在一个类需要信息的时候。
确定协作时考虑的问题
对于任何协作,总是至少有一个发起者。 有时协作者完成工作的主要部分。 协作应是直接的。 可能会产生新的职责来实现协作。
23
注册讨论班的 CRC卡
安全登陆(UI) **参阅原型** 请求学生确认信息 成 绩 单 (UI) **参阅原型** 获得学生信息 获得学生参加讨论班 的信息 确定平均分数 输出成绩 学生 讨论班 教授 注册记录
类名 职责 协作者 从用例出发找出类
类名:是一个名词或一个短语 类的职责:是类知道并要完成(“做”)的事情
知道型(knowing)职责
知道自己私有的封装了的数据 知道自己相关联的对象信息 知道自己派生或计算出来的事物
22
做(doing)职责
自己完成某件任务 发起其他对象执行动作 控制和协调其他对象内活动
15
4.4.1 类图
实现对象,与现实世界实体无关的对象,当需求发 生变化时,实现对象要发生变化。 如提供错误恢复的交易日志。 (3) 主动对象(Active Object)和 被动对象(Passive Object) 主动对象可以改变自身状态,如定时器和时钟。 可用进程或线程来实现。 被动对象只有在接受到消息时,状态可以改变。 如当银行账户接收到更新账户余额的消息时,发生 了改变。 大多数对象为被动对象。
部门名
职务
工人
1..* 1..* 名称 预算 优先级
经理
1 1..*
部门 产品
1..*
项目
产品名 成本 质量 图 4-5 对象关系图
19
(2) 根据事物目录列表找出对象
事物类目录
物理的或实在的对象 地点 规格说明、设计或事物描述 产品规则说明 商店
事例
销售点终端(post) 飞机 航班描述 机场
事务
16
4.4.1 类图 2) 确定类和对象的方法
(1) 实体 —— 对象法 ERD( Entity Relationship Diagrams) ORD( Object Relationship Diagrams) 转换规则: 简单的实体成为一个对象; 复杂的实体分解为几个对象。
17
实体关系图 姓名
第4章 面向对象的分析与建模
内容
4.1 4.2 4.3 4.4 4.5 4.6 什么是OOA ?为何需要OOA? 面向对象分析方法简介 面向对象的分析原则和过程 对象模型—类图 动态模型 模型的验证 掌握:建立两种模型的过程
1
SE的任务
1986年,Frederick Brooks在 《No Silver Bullet》中论述, 所有软件活动包括: 根本任务—打造构成抽象软件实体的 复杂概念结构; 次要任务—使用编程语言表达这些抽 象实体,并在时间和空间 内将它们映射成机器语言。 建模过程: 识别概念及概念之间的关系,用概念、 关系等基本模型元素描述系统的结构、行 为等,并以规范化的、形象化的方式将其 表达出来。
把过程抽象 (procedural abstraction) 与数据抽象 (data abstraction)结合在一起. 对象(object):对客观事物的抽象. 类(class):是一种数据抽象,即是对一组对象的抽象. 包含作用于对象上的过程或方法抽象. 超类(super class)是一组子类的抽象. 方法(method):是隐藏实现过程抽象. 操作(operation):是一组方法的抽象. 属性(attribute)和关联(association): 是实现它们基本实例变量的抽象.
Sale date time 一个Sale代表了一次购物交 易的事件,它有日期和时间 概念应 Sale 1 Sale 3 Sale 2 用的一 组实例 Sale 4
概念记号
概念的内涵
概念的外延
4
概念模型(conceptual model):
是问题域中概念的描述,强调领域中的概念, 而不是软件实体。
概念层
(Conceptual)
类图描述应用 领域中的概念, 一般地这些概 念和类有自然 说明层 的联系,但两 (Specification) 者并没有直接 类图描述软件的 的映射关系。 接口部分,而不是 软件实现部分。
实现层 (Implementation) 类图揭示实现细节。
13
2)类图(class diagram)组成
Booch方法
2) Booch方法 (method of object analysis and design,1994)
7
3) Coad & yourdon 方法 (OOA/OOD,1991)
类和对象层 属性层 结构层 主题层 服务层
Coad&yourdon 模型
问题 数据 人机 任务 论域 管理 交互 管理
类 关联关系 依赖关系 泛化关系 接口和实现关系
Class2
注 解 Class1
Class4 类4 实现接口 Interface 依赖接口 Class5
Class3
# 类图可以包含注解和约束。
# 类图可出现在包中。 3)建立类图步骤 确定类和对象 确定属性
图 4-3 类图组成
名称 讨论班编号 费用 等待列表 注册学生 导师 添加学生 撤销学生
学生 学生
姓名 地址 电话 邮件 平均分 验证确定信息 提供参加讨论班类表
教授
注 册 记 录
注册记录
获得的分数 平均截至日期 最终成绩 学生 讨论班
教授
姓名 地址 电话 邮件 薪水 提供信息 指导的讨论班
讨 论 班
25
确定类和对象
第3章己给出需求陈述和 用例及文字描述 注册讨论班(UI) **参阅原型** 请求确定学生信息 学生 启用讨论班搜索信息 讨论班 教授 显示讨论班列表 显示讨论班费用 显示教授信息 学生(Actor) 提供自己的信息 注册讨论班 请求注册讨论班 成绩单 请求成绩单
24
学生
注册讨论班的 CRC卡
讨论班
主要是建立实体关系图ERD,实体数据流图 EDFD。 6) OOSE方法 [Jacobson ,1992] (Object oriented software engineering)