本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明!
文章目录
14.使用面向对象方法开发软件时,通常需要建立哪三种模型?哪种模型最重要?
1.当前最好的软件开发技术是?
面向对象技术
2.面向对象的原则是什么?
原则是使描述问题的问题域与实现解法的求解域在结构上尽可能一致
3.人们把客观世界中的实体抽象为什么?
人们把客观世界中的实体抽象为问题域中的对象
4.软件系统本质上是?
软件系统本质上是信息处理系统
5.面向对象方法学的优点?
- 与人类习惯的思维方法一致
- 稳定性好
- 可重用性好
- 较容易开发出大型软件产品
- 可维护性好
6.对象的定义是什么?
对象是具有相同状态的一组操作的集合,对象是对属性值和操作的封装
7.对象的特点有哪些?
- 以数据为中心
- 对象是主动的
- 实现了数据的封装
- 本质上具有并行性
- 模块独立性好
8.类的定义是什么?
类就是对具有相同数据和相同操作的一组相似对象的定义
9.实例是什么?
实例就是由某个特定的类所描述的一个具体的对象的定义
10.属性是什么?
属性就是类中所定义的数据
11.封装是什么?
封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节
12.继承是什么?
继承是指能够直接获得已有的性质和特征,而不必重复定义他们
13.重载和重写的区别有哪些?
重载特点:
- 重载是在编译器通过方法中形参的静态类型确定调用方法版本的过程。
- 重载是多态在编译期的表现形式。
- 判定条件:方法名一致且形参列表不同
重写特点:
- 重写在方法运行时,通过调用者的实际类型来确定调用的方法版本。
- 重写只发生在可见的实例方法中
重写满足一个规则:两同两小一大
- 两同:方法名和形参列表相同
- 两小:重写方法的返回值(引用类型)和抛出异常,要和被重写方法的返回值引用类型)和抛出异常相同或者是其子类
- 一大:重写方法的访问修饰符大于等于被重写方法的访问修饰符
【注】:重载和重写都是多态的一种表现形式
14.使用面向对象方法开发软件时,通常需要建立哪三种模型?哪种模型最重要?
通常需要建立对象模型、动态模型、功能模型
其中,对象模型始终都是最重要、最基本、最核心的
15.对象模型的作用?
对象模型描述静态的、结构化的系统数据,其为建立动态模型和功能模型提供了实质性框架
16.使用什么方法来建立对象模型?
UML中的类图
17.类与类之间的关系有哪些?各自定义是什么?
关联:关联表示两个类的对象之间存在某种语义上的联系
泛化(继承):就是继承关系
依赖:一个类使用另一个类的对象作为操作的参数,一个类使用另一个类的对象作为它的数据成员
细化:对同一个事物在不同抽象层次上的描述
18.聚集(聚合)和泛化的区别?
- 聚集(聚合)是关联的特例。泛化若通用元素消失则具体元素也消失,而聚集则是通用元素消失而具体元素还存在
- 聚合逻辑上是has a ,泛化逻辑上是is a ,组合逻辑上是contains a
- 聚集分为共享聚集和组合聚集,但一般叫聚合和组合
19.聚合和组合的主要区别?
聚合关系是如果整体消失了,部分还存在。比如命题组和老师
组合关系是如果整体消失了,部分将不复存在。比如人和人的身体器官
20.状态图的作用?
状态图用来描绘对象的状态、触发状态转换的事件以及对象的行为
21.功能模型的作用?通常其由什么组成?
功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。通常功能模型由一组数据流图组成
22.一幅用例图包含的模型元素有哪些?
系统、行为者、用例以及用例之间的关系
23.用例图中的用例是什么?
用例是一个类,它代表一类功能而不是使用该功能的某个具体实例
24.用例图中的行为者是什么?
行为者是指与系统交互的人或其它系统,它代表外部实体,行为者代表一个角色而不是某个具体的人或物
25.用例图中的用例之间的关系有?
拓展关系:向一个用例中添加了一些动作之后构成了另一个用例
使用关系:即一个用例使用另一个用例
【提示】:书上的用例图只给了扩展和使用关系,而正式的 UML图还有包含关系。而包含和使用又非常相似。所以很多图上画关系的时候,没有用中文的“拓展”和“使用”,而是用“extend”和“include”来表示这两种关系。
【判定技巧】:extend 扩展的功能,如果删除掉,不会影响这个系统的运行。而include 的功能如果删除那么系统将无法正常运行。
比如以下图为例,如果没有售散装饮料这个功能,售货机依然以正常卖其他瓶装饮料。但是如删除“打开机器”这个动作,那么供货就无法完成!
26.对象模型、动态模型、功能模型三者之间的关系是?
- 针对每个类建立的动态模型,描述了类实例的生命周期或运行周期
- 状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应
- 功能模型中的处理对应于对象模型中的类所提供的服务
- 用例图中的行为者可能是对象模型中的对象
- 功能模型中的处理可能产生动态模型中的事件
章末小结
近年来,面向对象方法学日益受到人们的重视,特别是在用这种方法开发大型软件产品时,可以把该产品看作是由一系列本质上相互独立的小产品组成,这就不仅降低了开发工作的技术难度,而且也使得对开发工作的管理变得比较容易了。因此,对于大型软件产品来说,面向对象范型明显优于结构化范型。此外,使用面向对象范型能够开发出稳定性好、可重用性好和可维护性好的软件,这些都是面向对象方法学的突出优点。
面向对象方法学比较自然地模拟了人类认识客观世界的思维方式,它所追求的目标和遵循的基本原则,就是使描述问题的问题空间和在计算机中解决问题的解空间,在结构上尽可能一致。
面向对象方法学认为,客观世界由对象组成。任何事物都是对象,每个对象都有自己的内部状态和运动规律,不同对象彼此间通过消息相互作用、相互联系,从而构成了人们所要分析和构造的系统。系统中每个对象都属于一个特定的对象类。类是对具有相同属性和行为的一组相似对象的定义。应该按照子类、父类的关系,把众多的类进一步组织成一个层次系统,这样做了之后,如果不加特殊描述,则处于下一层次上的类可以自动继承位于上一层次的类的属性和行为。
用面向对象观点建立系统的模型,能够促进和加深对系统的理解,有助于开发出更容易理解、更容易维护的软件。通常,人们从3个互不相同然而又密切相关的角度建立起3种不同的模型。它们分别是描述系统静态结构的对象模型 ,描述系统控制结构的动态模型以及描述系统计算结构的功能模型。其中,对象模型是最基本、最核心、最重要的。
统一建模语言UML是国际对象管理组织OMG批准的基于面向对象技术的标准建模语言。通常,使用UML的类图来建立对象模型,使用UML 的状态图来建立动态模型,使用数据流图或 UML 的用例图来建立功能模型。在 UML 中把用用例图建立起来的系统模型称为用例模型。
本章所讲述的面向对象方法及定义的概念和表示符号,可以适用于整个软件开发过程。软件开发人员无须像用结构分析、设计技术那样,在开发过程的不同阶段转换概念和表示符号。实际上,用面向对象方法开发软件时,阶段的划分是十分模糊的,通常在分析设计和实现等阶段间多次迭代。
反反复复,扎扎实实;念念不忘,必有回响!