其他分享
首页 > 其他分享> > 《面向对象分析与设计》重点内容总结之《面向对象的基本概念》

《面向对象分析与设计》重点内容总结之《面向对象的基本概念》

作者:互联网


本系列博客只综述当前作者《面向对象分析与设计》课程的重点内容,该系列博客主要有:《面向对象基本概念》、《UML语言》、《需求理解》、《面向对象分析》、《面向对象设计》、《设计模式及模式应用》、《数据库设计》、《MDD、SOA、AOSD》等等,由于该系列博客会在我复习阶段进行编写和总结,可能不会全部完成。 另:博客中如果存在不正确地方麻烦大家指正
如果你觉得本博客有所帮助的话,记得点个赞,お願いします!

核心内容


面向对象基本概念

一、Object、Class、Message

1. Object(对象)

定义:

关键点:

2. Class(类)

定义:

类是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分。

个人理解:类是一个抽象的概念,统一描述了一组具有相同属性和方法的对象。像马、汽车、人都是抽象的概念,都是类;而具体到某一匹马、某一辆车、某一个人时,他们都是对象。

关键点:(类和对象的关系)

在这里插入图片描述

3. Message(消息)

定义:

个人理解:消息本质就是对象之间的函数/方法调用,所谓 “提供服务的对象标识、服务(方法)标识”即Object.Method(),而“输入信息”即方法中的参数Object.Method(Value),而回答消息就是对象执行完方法后的return。

关键点:

二、Basic Principles of Object Orientation

面向对象的基本准则/原则

1. Abstraction(抽象)

定义:
抽象指从特定角度出发,从已经存在的事务中抽取出我们所关注的特性,形成一个新的事物的过程。抽象是一种从具体到抽象,由复杂到简单的思维方式。如下图:抽象过程。
抽象过程

2. Encapsulation(封装)

定义:

解释:面向对象编程中的接口就是封装的具体表现方式,接口向用户提供调用方法的方式,而隐藏了实现方法具体细节。万物都是接口,如手机,我们通过简单地点击屏幕即可实现各种功能,但我们不了解这些功能具体实现的细节。

关键点:

解释:用户能且仅能调用接口实现操作,对于接口的实现,由于接口本身的存在将用户与接口的实现之间完全分隔开,用户不知道接口如何实现,接口实现方式改变也不影响用户调用接口,这应该也是封装的意义所在。

3. Inheritance(继承)

定义:

解释:

关键点:

继承分类:

4. Polymorphism(多态)

定义:

一个实体在不同的上下文条件中具有不同的意义或用法的能力,是保证系统具有较好的适应性的一个重要手段,是面向对象技术所表现出来的一个重要特征;
在这里插入图片描述
解释:一个draw()在圆圈情况下是画圆,在矩形情况下是画矩形,就像打开这个动作,在灯的情况下是开灯,在门的情况下是开门,所谓多态即同名的方法具有相同的功能,但是在不同的上下文环境中得到的结果不一样。

关键点:

PS:覆盖override和重载overload的区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、Interface and Abstract Class

1. Interface(接口)

定义:

接口表示

2. Abstract Class(抽象类)

定义:

个人理解: 抽象类是一个无法直接实例化的类,是一个只能被继承的类,其中的方法也是抽象、不完整的,需要继承该类的子类进行完善

四、UML-介绍

1. 定义

面向对象: 是以对象为核心、以类和继承为构造机制、以接口和多态提供灵活性的方法。
UML: UML是统一建模语言,用于可视化、指定、构建、记录软件密集型系统的产物,主要由面向对象和可视化建模构成。

2. 特点

3. UML构成

在这里插入图片描述
关于图的部分说明:

4. UML在系统开发各阶段的应用

5.一个UML的例子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、对象、职责、协作

注:本部分是根据网上博客整理(出处)。

解释:
使用面向对象方法时,首要任务是找出系统中和要解决的问题相关的对象,为每个对象分配职责。当一个任务不能由一个对象来完成时,需要找出或添加其他对象来和这个对象协作来完成任务。此外,对系统中的公共任务,可以将这些任务分配给专门的公共对象来完成。其他的对象需要使用这些公共任务任务时,只要使用公共对象即可。

1. 对象

定义: 对象是完成任务的载体。

发现对象:
对象的发现并非单向过程,而是在职责分配和协作关系定义中需要循环往复。增加的对象和协作关系可能对已有的结构造成变更或需要优化,这个过程就是目前所说的重构。重构在整个开发过程中起到不断的改进和精炼的作用,使构造的系统能更符合业务需求。

2. 职责

定义: 职业是系统分配给对象的任务。

职责分配:
对象职责的分配取决于对象在系统中的作用以及其他对象的作用,对于可以由一个对象完成的任务,就不要分配给多个对象;如果任务大到需要多个对象来完成,职责的分配要体现对象内部的紧耦合和对象间的松耦合。

3. 协作

定义: 协作是当一个任务由多个对象共同完成时,对象之间必须要进行分工协作,以实现对象内的紧耦合、对象间的松耦合,保证系统的可扩展能力。

协作关系:

4. 职责和协作

对象内部的职责和对象间的协作关系的不同组合可用于解决各种不同的问题,对于一些特定的问题,可以采用固定的一些组合方式去解决,这种组合方式就是常说的设计模式。仔细研究一下GoF设计模式的内容,都是对象以及对象间以某种特定方式组合起来解决一个特定的问题。因此,如果要想发现或提出新的设计模式,就需要对对象以及对象间的协作进行研究和分析,针对特地的问题抽象出特定的关系。

六、The Rational Unified Process(Rational统一过程)

本部分参考《试贴:Rational Unified Process 简介》、《RUP(Rational Unified Process)统一软件过程概述》、《RUP 方法简介

1. 介绍

Rational Unified Process(以下简称RUP) 是一套软件工程方法,主要由 Ivar Jacobson的 The Objectory Approch 和 The Rational Approch发展而来。同时,它又是文档化的软件工程产品,所有RUP的实施细节及方法导引均以Web文档的方式集成在一张光盘上,由Rational公司开发、维护并销售,当前版本是5.0。RUP又是一套软件工程方法的框架,各个组织可根据自身的实际情况,以及项目规模对RUP进行裁剪和修改,以制定出合乎需要的软件工程过程。

2. 二维开发模型

在RUP中,软件开发生生命周期根据时间和RUP的核心工作流划分为二维空间(如下图所示),从图中的阴影部分表示的工作流可以看出,不同的工作流在不同的时间段内工作量的不同。值得注意的是,几乎所有的工作流,在所有的时间段内均有工作量,只是工作程度不同而已。这与Waterfall process(瀑布式开发模型)有明显的不同。
在这里插入图片描述

3. RUP核心的基本原理

它们支持应用迭代方法进行软件开发:

4. 静态结构:方法描述

软件开发过程描述了什么时候,什么人,做什么事,以及怎样实现某一特定的目标。

四个基本模型元素

九个核心工作流

4. 动态结构:迭代式开发

RUP软件生命周期的四个阶段

5. 使用 Use Case 驱动

6. 以体系结构为中心

7. RUP的优点

8. 总结

Rational Unified Process 是新一代的软件工程方法。与早期的瀑布式开发模型相比,它具有迭代式的增量开发、使用实例驱动、 以软件体系结构为核心三个鲜明特点,这使得RUP非常适宜于开发复杂、技术难度大、需求多变、高风险的项目。RUP又是可裁剪的软件开发过程框架,各组织可以根据自身及项目特点对RUP进行裁减,在某些情况下RUP甚至可以蜕化为瀑布式开发模型。

七、Software Architecture(软件架构)

软件体系结构包含关于软件系统组织的一组重要决策:

软件体系结构涉及:
使用、功能、性能、弹性、重用、可理解性、经济和技术限制、美学考虑。

架构限制了设计和实现:
体系结构涉及一组约束设计和构造的战略设计决策、规则或模式,架构决策是最基本的决策,更改它们将产生重大的连锁反应。

所有软件架构定义中的共同主题:
动机中的强大思想、组织、风格、模式、责任、协作、联系、动机、主要子系统。

架构的元模型(Booch):

在这里插入图片描述

架构视图:

架构风格:
架构风格定义了组件和连接器类型的词汇表、一组关于如何组合它们的约束、一个或多个语义模型,指定了如何从系统各部分的属性确定系统的总体属性。

架构上重要的模型元素:
注:并非所有的设计都是框架。架构视图等价于对模型进行切片。

架构的专注点:
架构可以代表一个系统的整体设计,但单个视图只关注自己的具体方面:

良好架构的特点:

八、The “4+1 View” Model(4+1视图模型)

本部分主要参考博客《软件架构设计4+1 view模型
在这里插入图片描述

1. 逻辑视图(Logic View)

2. 开发视图(Development/Module View)

3. 进程视图(Process View)

4. 物理视图(Physical View)

5. 场景(Scenarios)

场景用于刻画构件之间的相互关系,将四个视图有机地联系起来。可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系,用文本、图形表示皆可。

标签:迭代,对象,系统,视图,基本概念,面向对象,RUP,方法,面向对象分析
来源: https://blog.csdn.net/weixin_45928161/article/details/121783148