软件工程——第9章面向对象方法学引论知识点整理

news2024/11/16 23:39:55

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明!

文章目录

1.当前最好的软件开发技术是?

2.面向对象的原则是什么?

3.人们把客观世界中的实体抽象为什么?

4.软件系统本质上是?

5.面向对象方法学的优点?

6.对象的定义是什么?

7.对象的特点有哪些?

8.类的定义是什么?

9.实例是什么?

10.属性是什么?

11.封装是什么?

12.继承是什么?

13.重载和重写的区别有哪些?

14.使用面向对象方法开发软件时,通常需要建立哪三种模型?哪种模型最重要?

15.对象模型的作用?

16.使用什么方法来建立对象模型?

17.类与类之间的关系有哪些?各自定义是什么?

18.聚集(聚合)和泛化的区别?

 19.聚合和组合的主要区别?

20.状态图的作用?

21.功能模型的作用?通常其由什么组成?

22.一幅用例图包含的模型元素有哪些?

23.用例图中的用例是什么?

24.用例图中的行为者是什么?

25.用例图中的用例之间的关系有?

26.对象模型、动态模型、功能模型三者之间的关系是?

章末小结


1.当前最好的软件开发技术是?

面向对象技术

2.面向对象的原则是什么?

原则是使描述问题的问题域与实现解法的求解域在结构上尽可能一致

3.人们把客观世界中的实体抽象为什么?

人们把客观世界中的实体抽象为问题域中的对象

4.软件系统本质上是?

软件系统本质上是信息处理系统

5.面向对象方法学的优点?

  1. 与人类习惯的思维方法一致
  2. 稳定性好
  3. 可重用性好
  4. 较容易开发出大型软件产品
  5. 可维护性好

6.对象的定义是什么?

对象是具有相同状态的一组操作的集合,对象是对属性值和操作封装

7.对象的特点有哪些?

  1. 以数据为中心
  2. 对象是主动的
  3. 实现了数据的封装
  4. 本质上具有并行性
  5. 模块独立性好

8.类的定义是什么?

类就是对具有相同数据和相同操作的一组相似对象的定义

9.实例是什么?

实例就是由某个特定的类所描述的一个具体的对象的定义

10.属性是什么?

属性就是类中所定义的数据

11.封装是什么?

封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节

12.继承是什么?

继承是指能够直接获得已有的性质和特征,而不必重复定义他们

13.重载和重写的区别有哪些?

重载特点:

  1. 重载是在编译器通过方法中形参的静态类型确定调用方法版本的过程。
  2. 重载是多态在编译期的表现形式。
  3. 判定条件:方法名一致且形参列表不同

重写特点:

  1. 重写在方法运行时,通过调用者的实际类型来确定调用的方法版本。
  2. 重写只发生在可见的实例方法

重写满足一个规则:两同两小一大

  1. 两同:方法名和形参列表相同
  2. 两小:重写方法的返回值(引用类型)和抛出异常,要和被重写方法的返回值引用类型)和抛出异常相同或者是其子类
  3. 一大:重写方法的访问修饰符大于等于被重写方法的访问修饰符

【注】:重载和重写都是多态的一种表现形式

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.对象模型、动态模型、功能模型三者之间的关系是?

  1. 针对每个类建立的动态模型,描述了类实例的生命周期或运行周期
  2. 状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应
  3. 功能模型中的处理对应于对象模型中的类所提供的服务
  4. 用例图中的行为者可能是对象模型中的对象
  5. 功能模型中的处理可能产生动态模型中的事件

章末小结

        近年来,面向对象方法学日益受到人们的重视,特别是在用这种方法开发大型软件产品时,可以把该产品看作是由一系列本质上相互独立的小产品组成,这就不仅降低了开发工作的技术难度,而且也使得对开发工作的管理变得比较容易了。因此,对于大型软件产品来说,面向对象范型明显优于结构化范型。此外,使用面向对象范型能够开发出稳定性好、可重用性好和可维护性好的软件,这些都是面向对象方法学的突出优点。

        面向对象方法学比较自然地模拟了人类认识客观世界的思维方式,它所追求的目标和遵循的基本原则,就是使描述问题的问题空间和在计算机中解决问题的解空间,在结构上尽可能一致。

        面向对象方法学认为,客观世界由对象组成。任何事物都是对象,每个对象都有自己的内部状态和运动规律,不同对象彼此间通过消息相互作用、相互联系,从而构成了人们所要分析和构造的系统。系统中每个对象都属于一个特定的对象类。类是对具有相同属性和行为的一组相似对象的定义。应该按照子类、父类的关系,把众多的类进一步组织成一个层次系统,这样做了之后,如果不加特殊描述,则处于下一层次上的类可以自动继承位于上一层次的类的属性和行为。

        用面向对象观点建立系统的模型,能够促进和加深对系统的理解,有助于开发出更容易理解、更容易维护的软件。通常,人们从3个互不相同然而又密切相关的角度建立起3种不同的模型。它们分别是描述系统静态结构的对象模型描述系统控制结构的动态模型以及描述系统计算结构的功能模型。其中,对象模型是最基本、最核心、最重要的

        统一建模语言UML是国际对象管理组织OMG批准的基于面向对象技术的标准建模语言。通常,使用UML的类图来建立对象模型,使用UML 的状态图来建立动态模型,使用数据流图或 UML 的用例图来建立功能模型。在 UML 中把用用例图建立起来的系统模型称为用例模型。

        本章所讲述的面向对象方法及定义的概念和表示符号,可以适用于整个软件开发过程。软件开发人员无须像用结构分析、设计技术那样,在开发过程的不同阶段转换概念和表示符号。实际上,用面向对象方法开发软件时,阶段的划分是十分模糊的,通常在分析设计和实现等阶段间多次迭代

反反复复,扎扎实实;念念不忘,必有回响!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主诉病程时长提取

编写Python函数 import re def structured_pro(original_text,keyword,out_unitNone):pattern_split_str[。,]pattern_splitre.compile(pattern_split_str,re.I|re.M)original_listpattern_split.split(original_text)pattern_keywordre.compile(keyword,re.I|re.M…

目前最好的MicrosoftProject替代方案

Microsoft Project是一个功能强大的项目管理工具。然而它可能是昂贵的,并且可能不适合所有的项目管理需求。幸运的是,有几个Microsoft Project的替代方案提供了类似的特性和功能。在本文中我们将探索目前可用的一些最好的Microsoft Project替代方案。 1、…

12.4 ARM异常处理

目录 ARM异常处理(一) 异常 概念 异常处理机制 ARM异常源 概念 ARM异常源 ARM异常模式 ARM异常处理(二) ARM异常响应 异常向量表 异常返回 IRQ异常举例​编辑 ARM异常处理(三 ) 异常优先级 …

自我介绍这样写?

已经帮小伙伴改了 500 多份简历了,也发现了一些大家写简历时的共性问题。其中让我印象比较深刻的一个点就是 自我介绍 ,基本上所有同学的自我介绍都是这么写的: 读这篇文章的朋友们,你是不是也是这么写自我介绍的呢? 这…

MySQL索引优化整合案例实现

目录 1 JOIN优化1.1 JOIN算法原理1.2 in和exists函数 2 order by优化2.1 索引排序2.2 额外排序2.3 排序优化 3 索引单表优化案例3.1. 建表3.2. 单表索引分析3.1.1 需求3.1.2 优化 4 索引多表优化案例 1 JOIN优化 1.1 JOIN算法原理 1) JOIN回顾 JOIN 是 MySQL 用来进行联表操作…

在 Jetpack Compose 中创建 BottomAppBar

Jetpack Compose 是 Android 的现代 UI 工具包,它使得构建美观且功能强大的应用变得更加简单。在本文中,我们将探讨如何使用 Jetpack Compose 创建一个 BottomAppBar。 开始之前 确保你的开发环境已经设置好了 Jetpack Compose。你需要使用 Android Stu…

矩阵Matrices

目录 矩阵的变换 向量和矩阵 矩阵的变换 房子图形的矩阵变换(wiggle动态变换) uicontrol的‘style’类型: X house dot2dot(X) theta1 wiggle(X) function dot2dot(X) % DOT2DOT Connect the points from a 2-by-n matrix. X(:,end1) X…

5 类数据,洞察游戏的秘密

数据犹如一扇扇窗户,透过它,我们可以洞察到游戏世界内部的诸多秘密。这些秘密,就像是隐藏在房间深处的宝藏,只有真正理解并善用它们,我们才能创造出更吸引人的游戏,形成更成功的商业模式。 一个关键的问题是…

【Linux】—— 浅谈进程优先级

本期,我们将来聊聊的是关于进程优先级的相关知识!!! 目录 序言 (一)基本概念 (二)查看系统进程 1、PRI and NI 2、PRI vs NI (三)设置优先级 序言 首先…

关于antdesign-vue的layout组件样式失效问题(#components-layout-demo-custom-trigger)

1.错误描述 使用antdesign vue 中的layout作为主要布局,https://www.antdv.com/components/layout-cn 正常引入后,跟期望的样子不一样 期望中的样子 实际的样子 logo没有了,而且此时也无法更改样式。 此时的样式是这样的 无论怎么修改都…

Grafana 使用Rest API 作为数据源的实践

本文使用最新版本的Grafana 10 进行操作。 如果要使用Rest API 作为grafana 的数据源,可以选择安装一个Infinity的数据源插件。 如果创建数据源时,搜不到infinity,点击find more 查找安装该数据源插件 1. 安装 Infinity 数据源插件&#xf…

IP 协议的相关特性

目录 IP协议有三大特点:无连接、无状态、不可靠。 四位版本号 四位头部长度 八位服务类型: 十六位总长度 16 位标识, 3 位标志, 13 位片偏移 八位生存时间 八位协议 十六位首部校验和 关于IP v4地址不够的问题 ip地址动态分配: ip地址转换(NAT) 数据传输…

一个空的Object在内存中占用几个字节

文章目录 一、对象在内存中的布局1. 对象头1.1. 哈希码(Hash Code):1.2. 对象所属的年代(Generation):1.3. 对象锁(Object Lock):1.4. 锁状态标志(Lock State…

POE级联蓝牙定位系统方案_蓝牙信标,蓝牙网关,级联蓝牙网关

近年来,随着新能源行业的快速发展,在化工厂,核电厂以及电力电厂等企业,对人员定位,人员导航,资产定位,生命体征监测的需求越来越大。传统的蓝牙室内定位方案中蓝牙信标为锂亚电池供电,需定期更换电池且有安全隐患,为更好的服务有蓝牙定位导航,被动人员定位,生命体征…

vue创建项目报错npm install --loglevel error --legacy-peer-deps

vue创建项目报错npm install --loglevel error --legacy-peer-deps 如图所示: 话不多说,直接上解决方法: 1、找到这两个文件(每个人的位置不一样,像我是安装在D盘) 2、分别点进去,右键—属性…

A Survey on Evaluation of Large Language Models

这是LLM相关的系列文章,针对《A Survey on Evaluation of Large Language Models》的翻译。 大型语言模型评价综述 摘要1 引言2 背景2.1 大语言模型2.2 AI模型评估 3 评估什么3.1 自然语言处理任务3.1.1 自然语言理解3.1.2 推理3.1.3 自然语言生成3.1.4 多语言任务…

vue——接口修改请求头——有些接口不需要请求头传递token——基础积累

最近在写后台管理系统的时候,遇到一个切换租户的功能。在请求接口的时候不需要传递token 直接上代码吧: 1.html代码 login2(this.user.id, this.ruleForm.tenantType) .then(this.afterLogin) .finally(() > {this.confirmLoading false;if (this…

ja3指纹和akamai指纹

问题: 请求失效,带上抓包软件却可以->检测ja3浏览器指纹 方法,python 安装curl_cffi库 pip install curl_cffi 查看浏览器指纹 https://tls.browserleaks.com/json python 原生request 缺少两个指纹 使用curl_cffi之后 可以看到结果…

多模态系列论文--BLIP 详细解析

论文地址:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 论文代码:https://github.com/salesforce/BLIP BLIP 1 研究动机及本文贡献2 相关工作2.1 ALBEF模型2.2 VLMO模型 3 本文贡献1--U…

LLaMA: Open and Efficient Foundation Language Models

背景 用最少的计算资源,解决了LLM大模型预测问题,训练了一些列的LLaMa模型,在参数量比较少的情况下,达到业界大模型效果。 主要贡献就是提升了LLM模型的训练速度和效率,在小容量的基础上,大大提升了模型的…