Home Article Practice 面向对象的分析与设计

面向对象的分析与设计

2022-09-01 08:46  views:356  source:joknm12    

面向对象方法是一种非常实用的软件开发方法,它一出现就受到软件技术人员的青睐,
现已成为计算机科学研究的一个重要领域,并逐渐成为软件开发的一种主要方法。面向对象
方法以客观世界中的对象为中心,其分析和设计思想符合人们的思维方式,分析和设计的结
构与客观世界的实际比较接近,容易被人们接受。在面向对象方法中,分析和设计的界面并
不明显,它们采用相同的符号表示,能够方便地从分析阶段平滑地过渡到设计阶段。此外,
在现实生活中,用户的需求经常会发生变化,但客观世界的对象及对象间的关系比较稳定,
因此用面向对象方法分析和设计的结构也相对比较稳定。
8.4.1 面向对象的基本概念
1.对象和类
对象是系统中用来描述客观事物的一个实体,它由对象标识(名称)、属性(状态、数
据、成员变量)和服务(操作、行为、方法)三个要素组成,它们被封装为一个整体,以接
口的形式对外提供服务。
在现实世界中,每个实体都是对象,如学生、书籍、收音机等;每个对象都有它的操作,
例如书籍的页数,收音机的频道、按钮等属性,以及收音机的切换频道等操作。
而类则是对具有相同属性和服务的一个或一组对象的抽象。类与对象是抽象描述和具体
实例的关系,一个具体的对象被称为类的一个实例。在系统设计过程中,类可以分为三种类
型,分别是实体类、边界类和控制类。
(1)实体类:实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的
信息,例如,在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。实体类通
常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都
需要。
实体类是对用户来说最有意义的类,通常采用业务领域术语命名,一般来说是一个名词,
在用例模型向领域模型的转化中,一个参与者一般对应于实体类。通常可以从 SRS 中的那
些与数据库表(需要持久存储)对应的名词着手来找寻实体类。通常情况下,实体类一定有
属性,但不一定有操作。
(2)控制类:控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名
词”或“名词+动词”)转化来的名词,例如,用例“身份验证”可以对应于一个控制类“身
份验证器”,它提供了与身份验证相关的所有操作。控制类用于对一个或几个用例所特有的
控制行为进行建模,控制对象(控制类的实例)通常控制其他对象,因此,它们的行为具有
协调性。
控制类将用例的特有行为进行封装,控制对象的行为与特定用例的实现密切相关,当系
统执行用例的时候,就产生了一个控制对象,控制对象经常在其对应的用例执行完毕后消亡。
通常情况下,控制类没有属性,但一定有方法。
(3)边界类:边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与
外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口,以及与其他系统的接
口。要寻找和定义边界类,可以检查用例模型,每个参与者和用例交互至少要有一个边界类,
边界类使参与者能与系统交互。边界类是一种用于对系统外部环境与其内部运作之间的交互
进行建模的类。常见的边界类有窗口、通信协议、打印机接口、传感器和终端等。实际上,
在系统设计时,产生的报表都可以作为边界类来处理。
边界类用于系统接口与系统外部进行交互,边界对象将系统与其外部环境的变更(例如,
与其他系统的接口的变更、用户需求的变更等)分隔开,使这些变更不会对系统的其他部分
造成影响。通常情况下,边界类可以既有属性也有方法。
2.继承与泛化
继承是面向对象方法中重要的概念,用来说明特殊类(子类)与一般类(父类)的关系,
而通常用泛化来说明一般类与特殊类的关系,也就是说它们是一对多关系。
如图 8-11 所示,“交通工具”是“自行车”和“小轿车”的泛化;“自行车”和“小轿
车”从“交通工具”中继承。
3.多态与重载
多态(即多种形式)性是指一般类中定义的属性或服务被特殊类继承后,可以具有不同
的数据类型或表现出不同的行为,通常是使用重载和改写两项技术来实现的。一般有 4 种不
同形式的多态,如表 8-4 所示。
注 1:重载也称为过载、重置;
注 2:参数多态和包含多态称为通用多态,重载多态和强制多态称为特定
多态。
希赛教育专家提示:虽然重载和改写都是在多种潜在的函数体中,选择和调用某一个函
数或方法并对其进行执行,但它们的本质区别在于:重载是编译时执行的(静态绑定),而
改写则是运行时选择的(动态绑定)。
4.模板类
也称为类属类,它用来实现参数多态机制。一个类属类是关于一组类的一个特性抽象,
它强调的是这些类的成员特征中与具体类型无关的那些部分,而用变元来表示与具体类型有
关的那些部分。
5.消息和消息通信
消息就是向对象发出的服务请求,它通常包括提供服务的对象标识、消息名、输入信息
和回答信息。消息通信则是面向对象方法学中的一个重要原则,它与对象的封装原则密不可
分,为对象间提供了唯一合法的动态联系的途径。
8.4.2 面向对象分析
面向对象分析的目标是开发一系列模型,这些模型描述计算机软件,当它工作时以满足
一组客户定义的需求。对象技术的流行,演化出了数十种不同的 OOA 方法,每个方法都引
入了一个产品或系统分析的过程、一组过程演化的模型及使软件工程师能够以一致的方式创
建每个模型的符号体系。其中比较流行的方法包括 OMT、OOA、OOSE、Booch 方法等,而
OMT、OOSE、Booch 最后则统一成为 UML。
1.OOA/OOD 方法
这是由 Peter Coad 和 Edward Yourdon 提出的,
OOA 模型中包括主题、对象类、结构、
属性和服务 5 个层次,需经过标识对象类、标识结构与关联(包括继承、聚合、组合、实
例化等)、划分主题、定义属性、定义服务 5 个步骤来完成整个分析工作。
OOD 中将继续贯穿 OOA 中的 5 个层次和 5 个活动,它由人机交互部件、问题域部件、
任务管理部件、数据管理部件 4 个部分组成,其主要的活动就是这 4 个部件的设计工作。
设计问题域部分:OOA 的结果恰好是 OOD 的问题域部件,分析的结果在 OOD 中可以被
改动或增补,但基于问题域的总体组织框架是长时间稳定的;
设计人机交互部件:人机交互部件在上述结果中加入人机交互的设计和交互的细节,包括窗
口和输出报告的设计。可以用原型来帮助实际交互机制进行开发和选择;
设计任务管理部分:这部分主要是识别事件驱动任务,识别时钟驱动任务,识别优先任务和
关键任务,识别协调者,审查每个任务并定义每个任务。
设计数据管理部分:数据管理部分提供了在数据管理系统中存储和检索对象的基本结构,其
目的是隔离数据管理方法对其他部分的影响。
2.Booch 方法
Booch 认为软件开发是一个螺旋上升的过程,每个周期中包括标识类和对象、确定类和
对象的含义、标识关系、说明每个类的接口和实现 4 个步骤。它的模型中主要包括如表 8-5
所示的几种图形。
Booch 方法的开发过程是一个迭代的、渐进式的系统开发过程,它可以分为宏过程和微
过程两类。宏过程用于控制微过程,是覆盖几个月或几周所进行的活动,它包括负责建立核
心需求的概念化,为所期望的行为建立模型的分析,建立架构的设计,形成实现的进化,以
及管理软件交付使用的维护等 5 个主要活动。
而微过程则基本上代表了开发人员的日常活动,它由 4 个重要、没有顺序关系的步骤
组成:在给定的抽象层次上识别出类和对象,识别出这些类和对象的语义,识别出类间和对
象间的关系,实现类和对象。
3.OMT 方法
OMT 是对象建模技术的缩写,它是由 Jam Rambaugh 及其同事合作开发的,它主要用
于分析、系统设计和对象设计。包括对象模型(静态的、结构化的系统的“数据”性质,通
常采用类图)、动态模型(瞬时的、行为化的系统“控制”性质,通常使用状态图)和功能
模型(表示变化的系统的“功能”性质,通常使用数据流图)。OMT 方法的三大模型如表 8-6
所示。



Disclaimer: The above articles are added by users themselves and are only for typing and communication purposes. They do not represent the views of this website, and this website does not assume any legal responsibility. This statement is hereby made! If there is any infringement of your rights, please contact us promptly to delete it.

字符:    改为:
去打字就可以设置个性皮肤啦!(O ^ ~ ^ O)