面向对象的设计方法概述

面向对象的开发方法——OOSD法是一种把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。

问题空间——软件系统所涉及到的应用领域和业务范围(现实世界)。

解空间——用于解决某些问题的软件系统。

(1)软件开发过程

(2)传统软件开发方法存在的问题

1)传统软件开发方法无法实现从问题空间到解空间的直接映射。

2)传统软件开发方法无法实现高效的软件复用。

原因是:传统软件开发方法数据与代码(操作)分离。

3)传统软件开发方法难以实现从分析到设计的直接过渡。

(3)面向对象技术的特点

1)对软件开发过程所有阶段进行综合考虑。使问题空间与解空间具有一致性,降低复杂性。

2)软件生存期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识世界的思维方式来分析、解决问题。

3)将OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)有机地集成在一起。有利于系统的稳定性。

以对象为中心各种构造系统,而不是以功能为中心,能很好地适应需求变化。

4)具有良好的可重用性

由于对象所具有的封装性和信息隐蔽,具有很强的独立性。

理解面向对象的基本概念对于学习和掌握面向对象的开发方法十分重要。

(1)对象

对象(Object)是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象。

对象可以是事、物、或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。

属性(attribute)—对象本身的性质。

操作(operation)—给对象定义一组运算。

对象将它自身的属性及运算“包装起来”,称为“封装”(encapsulation)。

对象的最基本的特征是封装性和继承性。

(2)类

类又称对象类(ObjectClass),是一组具有相同属性和相同操作的对象的集合。

在一个类中,每个对象都是类的实例(instance),它们都可以使用类中提供的函数。

类具有属性,用数据结构来描述类的属性,

类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method),方法有方法名,方法体和参数。

由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。

对象和类的描述:类和对象一般采用“**名字”、“属性”和“运算”**来描述。

(3)继承

继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。

继承性分:

单重继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。

多重继承:一个子类可有多个父类。继承多个父类的数据结构和方法。

(4)消息

消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。

一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识、消息和方法、输入信息、回答信息。

在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。

(5)多态性和动态绑定

多态性(Polymorphism)是指相同的操作或函数、过程作用于不同的对象上并获得不同的结果。

动态绑定(dynamicbinding)是在运行时根据对象接收的消息动态地确定要连接的服务代码。

使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。

继承是动态联编的基础,虚函数是动态联编的关键。

实现多态性的基本步骤:

1)在基类中,定义成员函数为虚函数(virtual);

2)定义基类的公有(public)派生类;

3)在基类的公有派生类中“重载”该虚函数;

4)定义指向基类的指针变量,它指向基类的公有派生类的对象。

注意:重载虚函数不是一般的重载函数,它要求函数名、返回类型、参数个数、参数类型和顺序完全相同

(6)永久对象

大多数OOPL(面向对象程序设计语言)不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。(需要有许多额外的工作)

为了实现永久对象,使上述烦琐工作由系统自动完成,需要较强的技术支持;需要一个基于永久对象管理系统OMS(objectmanagementsystem),能够描述和处理永久对象的编程语言。

OOA的目标是完成对所求解问题的分析,确定系统“做什么”,并建立系统的模型。

基本概念:

问题域:被开发系统的应用领域。

系统责任:所开发的系统应具备的职能。

(1)需求中存在的问题

1)确定问题域和系统责任困难

2)充分交流的问题解决得不好

3)很难适应需求的不断变化

4)难以满足复用要求

(2)OOA的特点

1)有利于对问题及系统责任的理解;

2)有利于人员之间的交流;

3)对需求变化有较强的适应性;

4)支持软件复用。

运用面向对象的方法,对问题域和系统责任进行分析和理解,建立分析模型。

(1)分析问题域,确定类和对象;

(2)定义类或对象属性和操作,确定其结构;

(3)建立系统中类或对象之间的静态联系和动态联系。

基本模型:是一个类图,以直观的方式表达系统最重要的信息。OOA基本模型的三个层次分别描述:对象(哪几类)、属性(内部构成)、运算(对象与外部的关系)。

主题:又称为子系统,是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。

交互图:Usecase与系统成分之间的对照图。

主题图和交互图又称为补充模型。

详细说明:按照分析方法所要求的格式,对分析模型进行说明和解释。主要以文字为主。

OOD是面向对象方法在软件设计阶段应用与扩展的结果。

将OOA所创建的分析模型转换为设计模型,解决如何作的问题。OOD与OOA没有明显的分界,采用相同的符号。

(1)系统设计

将分析模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身的并发性,为子系统分配处理器。

子系统的分解是关键,可以有分层和分块:

分层:将软件系统组织为层次结构,每层是一个子系统。分层结构又分为封闭式和开放式。

分块:垂直分块是将系统分解为若干个相对独立的、弱耦合的子系统。每个子系统相当于一个块,每块实现一类服务。

常常使用分层和分块的混合结构。

(2)对象设计

在面向对象的系统中,模块、数据结构及接口等都集中体现在对象和对象层次结构中。

对象设计是为每个类的属性和操作进行详细设计,包括属性和操作,它们的数据结构和实现算法。

(3)消息设计

设计连接类与它的协作者之间的消息规约。

(4)优化及复审

主要考虑提高效率和建立良好的继承结构。

面向对象设计准则:

(1)模块化

(2)抽象

(3)信息隐藏

(4)弱耦合

(5)强内聚

(6)可重用

几种典型的面向对象的开发方法:Coda方法,,Booch方法和OMT方法。

随着面向对象开发方法的发展,逐渐形成了几种主要的流派:

Coda方法

Booch方法

OMT方法

OOSE方法

Coda/Yourdon方法—由OOA,OOD构成

建立问题域的分析模型。该模型由5个层次组成:即主题层、对象层、结构层、属性层和服务层。

要建立4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元。

该方法的特点是:简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强。

(1)Coda方法的OOA

在Coda方法中,构造和评审OOA概念模型的顺序由五个层次组成:类与对象、属性、服务、结构和主题。(这五个层次表示分析的不同侧面。)

(2)Coda方法的OOD

Coda方法的OOD模型是在OOA模型5个层次基础上,建立系统的4类组元。

Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。

(1)Booch方法的基本模型

1)类图

类图

2)对象图

对象图由对象和消息组成。

3)状态图

状态图

4)时序图

时序图

5)模块图

模块图

6)进程图

进程图

(2)面向对象的建模技术(OMT)

面向对象的方法学又称对象模型技术。OMT是一种软件工程方法学,支持整个软件生存周期,覆盖问题构成、分析、设计和实现等阶段。

1)对象模型技术的基本概念

OMT方法讨论的核心就是建立三类模型:

对象模型描述了由对象和相应实体构成的系统静态结构,描述了系统中对象的标识、属性、操作及对象的相互关系。

函数模型描述系统中与值的转换有关的问题,如函数、映射、约束和函数作用等。

三类模型描述角度不同,却又相互联系。

2)建立对象模型

对象模型描述系统的静态模型。

构成对象模型的基本元素有:对象(类)、他们之间的关系。

类之间、对象之间的关系

关联与链

①二元关联、三元关联

②受限关联

③链属性和角色进一步描述。

继承性

继承性通常又称为概括,表示基类与子类的关系。

聚集

表整体与部分的关系。

(3)建立动态模型

动态模型着重于系统的逻辑结构;描述某时刻对象及其联系的改变。包括状态图和事件追综图。

1)事件和状态

事件—对于对象的触发行为,指从一个对象到另一个对象的信息的单向传递。

脚本—在系统的某一执行期间内的一系列事件。

在系统中具有属性值、链路的对象,可能相互激发,引起状态的一系列变化。

有的事件传递的是简单信号,有的事件则传递的是数据值。由事件传送的数据值称为“属性”。

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

动态模型由多个状态图组成,每个有重要行为的类都有一个状态图。各状态图可并发地执行及独立改变状态。

2)事件追踪图

事件追踪图侧重描述系统执行过程中的一个特定的“场景(Scenarios)”。场景有时也叫“脚本”,是完成系统某个功能的一个事件序列。即是描述多个对象的集体行为。

脚本—系统某一次特定运行时期内发生的事件序列。

3)建立功能模型

描述手段为分层数据流图,DFD图有助于表示功能的依赖关系,其中的处理对应于状态图的活动和动作,数据流对应于对象图中的对象或属性。建立功能模型的步骤为:

确定输入、输出值

先列出输入、输出值,输入输出值是系统与外部世界之间的事件的参数。

建立数据流图

通常按层次组织

描述处理

当数据流图已细化到一定程度后,对各处理进行描述,描述方法用自然语言、伪码及判定树等。

(4)面向对象的软件工程(OOSE)

OOSE将面向对象的思想应用于软件工程中,建立五类模型:

OOSE的开发活动主要分为三类:分析、构造和测试。

OOSE的核心—最大贡献,是建立了UseCase模型。

用例(Usecase)是OOSE中的重要概念,在开发各种模型时,用例贯穿了OOSE活动的核心,描述了系统的需求及功能。

分析模型:usecase模型通过分析来构造。

设计模型:usecase模型通过设计来具体化。

实现模型:该模型依据具体化的设计来实现usecase模型。

测试模型:用来测试具体化的usecase模型。

模型是对系统的抽象表示,建模是在不同层次上对系统的描述。

鉴于软件,尤其是大型软件所具有的复杂性,以及人们对复杂问题理解的局限性,建立一种共同的建模语言,推动面向对象方法的发展是十分必要的。

简述什么是面向对象编程

应该知道的面向对象设计原则

面向对象设计的原则概述

面向对象的优点

让我们深入的了解下mybatis返回主键id

rabbitmq部署的生产指南

mysqlin查询的方法有哪些

让我们了解下tomcat日志文件在哪

0基础0学费15天面授

有基础直达就业

工作1~3年,加薪神器

工作3~5年,晋升架构

初级202925

初级203221

初级202629

初级203743

答:零基础学Java不要盲目,可以先尝试自己适不适合...查看回答

THE END
1.面向特征的软件产品家族建模方法AET本文在对高校设备预定管理产品家族进行领域建模时,以FODA为基础,把特征和特征模型的概念引入到领域分析模型中,用于表现领域需求,同时采用用例模型描述家族中的成员系统的变化性。 面向特征的产品家族领域分析的主要目标是获得领域分析模型以描述家族中产品的共性和变化性需求,包括场景模型、领域面向对象分析模型和特征模型3...http://www.chinaaet.com/article/19794
2.UML2面向对象分析与设计答案(24页)UML2面向对象分析与设计第二版答案下载理论建模 第1 章 上升到面向对象 选择题 1. A 2. A 3. B 简答题 1. 与传统结构化方法相比,面向对象技术的优势主要体现在哪些方面? 主要包括以下几个方面的与优势: (1)沟通:在计算机中模拟现实世界的事和物; (2 )稳定:较小的需求变化不会导致系统结构大的改变; ...https://max.book118.com/html/2020/0517/5203210141002244.shtm
3.面向对象分析与设计类图类之间的关系包括: ___ 、___ 、___ 和 ___ 。 依赖|泛化|关联|实现 类中方法的可见性包含3种,分别是: ___ 、___ 和 ___ 。 共有;公有;public|私有;private|受保护;protected 在UML软件开发过程系统分析阶段产生的对象模型有三种模型,它们分别是:___ 模 型、 ___ ...https://developer.aliyun.com/article/1219216
4.软件开发方法基础大剖析而面向对象程序语言(OOP)主要工作为编写代码、改进系统的性能。 为了将面向对象的分析模型转化为设计模型,设计人员必须完成设计用例实现方案、设计技术支撑方案、设计用户界面、精化设计模型 面向对象的基本概念主要有对象、类、抽象、封装、继承、多态、接口、消息、组件、模式、复用。面向对象设计(OOD)的基本思想包括...https://www.imooc.com/article/details/id/259116
5.清华大学出版社图书详情提供课件、咨询QQ:381844463(仅限教师)。详细讲解了UML建模所涉及的图形的语法和语义,配以案例分析,简单易懂;阐述了面向对象分析方法和设计方法及其模型表达,易于掌握与应用;结合“面向对象软件工程”的课程教学经验,提供了分析和设计案例以及课后思考题,便于自学。 http://www.tup.tsinghua.edu.cn/bookscenter/book_08634201.html
1.面向对象分析三种模型文章浏览阅读1w次。类模型交互模型状态模型_标题1:模仿上述例子,自己完成3个对象(类)的分析,并提交结果https://blog.csdn.net/k3108001263/article/details/89643578
2.软件工程导论作业2.2 面向对象分析设计的基本思路和过程是怎样的? 答:分析过程主要包括理解、表达和验证。设计是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。 过程:识别系统的用例和角色,进行系统分析并抽象出类,设计系统并设计系统中的类及其行为。 https://www.unjs.com/zuixinxiaoxi/ziliao/20170805000008_1416273.html
3.面向对象分析模型有三种,分别是:对象模型案例题 试题出自试卷《02333《软件工程》预测卷(十四)》 面向对象分析模型有三种,分别是:对象模型、___和功能模型。 参考答案:查看答案查看解析下载APP畅快刷题https://www.educity.cn/tiku/10643005.html
4.软考高级软件架构师学习笔记四(错题重点知识)响应式web设计具体的实现方式包括媒体查询(Media Query)、流式布局(弹性布局、动态布局)、液态图片(弹性图片)等。 9、面向对象分析与设计 面向对象设计的基本任务是把面向对象分析模型转换为面向对象设计模型。 面向对象分析模型主要由顶层架构图、用例图、领域概念模型构成。 https://blog.51cto.com/u_15564034/6429914
5.面向对象分析中的三种主要模型是什么?它们之间有什么关系?答案解析 查看更多优质解析 解答一 举报 (1)与功能模型的关系:对象模型展示了功能模型中的动作者、数据存储和流的结构,动态模型展示了执行加工的顺序.(2)与对象模型的关系:功能模型展示了类上的操作和每个操作的变量,因此它也表示了类之间的“供应者一客... 解析看不懂?免费查看同类题视频解析查看解答 ...https://www.zybang.com/question/02c600aa4150ef963c704c4ffb9d03ad.html
6.面向对象的分析方法主要是建立三类模型,即()。面向对象分析主要由对象模型、动态模型、功能模型组成,其中对象模型是最基本、最重要、最核心的;https://www.nowcoder.com/questionTerminal/2c30051783fe4f52980d798568444d0a
7.(专升本)自考《软件工程》备考知识点汇总9.初始阶段的基本目标是:获得与特定川况和平台无关的系统体系结构轮廓,以此建立产品功能范围;编制初始的业务实例,从业务角度指出该项目的价值,减少项目主要的错误风险.精化阶段的基本目标是通过捕获并描述系统的大部分需求一些关键用况,建立系统体系结构基线的第一个版本,主要包括用况模型和分析模型,减少次要的错误风险;...https://www.yxfsz.com/view/1513782047553982466
8.30个微能力点测评指南目录同心县第八中学人人通空间第二部分微能力测评规范 A1技术支持的学情分析 A2数字教育资源获取与评价 A3演示文稿设计与制作 A4数字教育资源管理 A5技术支持的课堂导入 A6技术支持的课堂讲授 A7技术支持的总结提升 A8技术支持的方法指导 A9学生信息道德培养 A10学生信息安全意识培养 A11评价量规设计与应用 ...http://hy.nxeduyun.com/index.php?r=space/school/theme/content/view&id=2343239