(软件工程复习核心重点)第八章面向对象方法学-第一节:面向对象方法学概述
- 专栏目录首页:学习笔记
注意:本章是面向对象的内容,而C++又是一个很经典的面向对象语言,所以本节介绍时会引入C++相关知识。如需深入了解C++,可移步
- C++学习专栏
文章目录
- 一:要点
- (1)基本原则
- (2)定义
- (3)要点
- 二:优点
一:要点
(1)基本原则
面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,使描述问题的问题空间(问题域)与实现解法的解空间(求解域)在结构上尽可能一致
(2)定义
面向对象方法是一种以数据或信息为主线,把数据和处理相结合的方法,即把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。面向对象的方法可以用下列方程来概括:
OO = object(对象) + classes(类) + inheritance(继承) + communication with messages(封装)
(3)要点
对象:面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。用对象分解取代了传统方法的功能分解,对象是从客观世界中的实体抽象而来的,是不固定的
类:把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。类中定义的方法,是允许施加于该类对象上的操作,是该类所有对象共享的,并不需要为每个对象都复制操作的代码
在C++中,类定义如下,其中成员函数(也即方法)类只保留一份,实例化后的对象在调用时隐含传入this指针
struct Student
{char _name[20];//数据char _gender[3];int _age;//方法void SetStudentInfo(const char* name,const char* gender,int age){strcpy(_name,name);strcpy(_gender,gender);_age=age;}
};int main()
{Student s;s.SetStudentInfo("Bob","男",18);return 0;
}
继承性:按子类与父类的关系,把若干个对象类组成一个层次结构的系统。子类自动具有和上层的父类相同的数据和方法,而且低层的特性将屏蔽高层的同名特性
- 在C++中,子类可以继承父类,有
public
,private
,protect
三种继承方式 - 子类成员会对同名父类成员进行屏蔽,这种情况我们称之为隐藏,或者叫做重定义,具体可见8-3:C++继承之继承中的作用域,隐藏,重定义和静态成员
封装性:对象彼此之间仅能通过传递消息互相联系。对象是进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。一切局部于该对象的私有信息,都被封装在该对象类的定义中,就好像装在一个不透明的黑盒子中一样,在外界是看不见的,更不能直接使用,
- 在C++中可以体会到,类就是如此,它对外体现的是一个整体,不暴露自己的细节,只提供接口
二:优点
1.与人类习惯的思维方法一致
- 以对象为核心,开发出的软件系统由对象组成
- 设计的主要思路是使用现实世界的概念抽象地思考问题从而自然地解决问题
- 基本原则是按照人类习惯的思维方法建立问题域和求解域模型
- 抽象机制使用户在利用计算机软件系统解决复杂问题时使用习惯的抽象思维工具
- 对象分类过程,支持从特殊到一般的归纳思维过程
- 继承特性,支持从一般到特殊的演绎思维过程
- 提供了随着对系统认识的逐步深入和具体化,而逐步设计和实现该系统的可能性
2.稳定性好
面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。它的基本作法是用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系。因为面向对象的软件系统的结构是根据问题领域的模型建立起来的,而不是基于对系统应完成的功能的分解,当对系统的功能需求变化时不会引起软件结构的整体变化,仅需要作一些局部性的修改
3.可重用性
重用技术是用已有的零部件装配新的产品。重用是提高生产率的最主要的方法。对象是比较理想的模块和可重用的软件成分
4.较易开发大型软件产品
面向对象方法学开发软件时,把一个大型软件产品分解成一系列本质上相互独立的小产品来处理,不仅降低了开发的技术难度,而且使开发工作的管理变容易了
5.可维护性好
这是因为
- 面向对象的软件稳定性比较好
- 面向对象的软件比较容易修改
- 面向对象的软件比较容易理解
- 易于测试和调试
(软件工程复习核心重点)第八章面向对象方法学-第一节:面向对象方法学概述相关推荐
- (软件工程复习核心重点)第二章可行性研究-第三节:数据流图
文章目录 一:数据流图的定义(DFD) 二:数据流图的特点 三:数据流图的符号 (1)符号 (2)注意(了解) 四:数据流图示例 (1)示例1 A:首先从题目中提取四种成分 B:画数据流图 (2)示例 ...
- (软件工程复习核心重点)第八章面向对象方法学习题
文章目录 名词解释 简答题 应用题 名词解释 面向对象方法学:面向对象方法是一种以数据或信息为主线,把数据和处理相结合的方法,即把对象作为由数据及可以施加在这些数据上的操作所构成的统一体.面向对象的方 ...
- (软件工程复习核心重点)第一章软件工程概论习题
这一章题目主要以简答和名词解释为主 文章目录 一:选择题 二:填空题 三:名词解释 (1)必考 (2)了解 四:简答题 (1)必考 1.关于软件危机 2.关于软件工程 3. 关于软件生命周期 4.关于 ...
- (软件工程复习核心重点)第四章总体设计-第二节:设计原理
文章目录 一:模块化 (1)模块 (2)模块化 (3)优点或作用 二:抽象(了解) 三:逐步求精 (1)定义 (2)MIller法则:注意力集中在(7 ±\pm± 2) 四:信息隐藏和局部化(了解) ...
- (软件工程复习核心重点)第一章软件工程概论-第二节:软件工程
文章目录 一:软件工程 (1)软件工程的定义 (2)软件工程的本质特征 (3)软件工程基本原理 二:软件工程方法学 (1)概念 (2)分类 一:软件工程 (1)软件工程的定义 软件工程:采用工程的概念 ...
- (软件工程复习核心重点)第八章面向对象方法学-第三节:面向对象建模之对象模型
文章目录 一:概念 (1)定义 (2)工具 二:类图的基本符号 (1)定义类 A:表示 B:命名规则 (2)定义属性 (3)定义服务 三:表示关系的符号 (1)关联 A:定义 B:关联的角色 C:普通 ...
- (软件工程复习核心重点)第八章面向对象方法学-第四节:面向对象建模之动态模型和功能模型
文章目录 一:动态模型 (1)概念 (2)建模 二:功能模型 (1)概念 A:定义 B:组成 (2)用例图 A:定义 B:表示 ①:系统 ②:用例 ③:行为者 ④:用例间关系 三:三种模型比较(了解) ...
- (软件工程复习核心重点)第七章软件维护习题
选择题 填空题 软件维护有哪几类 改正性维护 适应性维护 完善性维护 预防性维护 软件可维护的因素 可理解性 可测试性 可修改性 可移植性 可重用性 名词解释 软件维护:软件维护是在软件已经交付使用后 ...
- (软件工程复习核心重点)第十章面向对象设计-第二节:启发规则和软件重用
文章目录 一:启发规则 (1)设计结果应该清晰易懂 (2)一般一特殊结构的深度适当 (3)设计简单的类 (4)使用简单的协议 (5)使用简单的服务 (6)把设计变动减至最小 二:软件重用 (1)概述 ...
最新文章
- linux bootstrap,Bootstrap示例
- centos mysql密码设置密码_CentOS下设置MySQL的root密码
- oracle用户名无法登陆,sysdba却可以登陆
- 这里有 40 本 Python 书等你来领取!(任选)
- C#3.0语言规范new [Unified C# 3.0 Specification Now Available]
- React之JSX入门
- python给函数添加属性_如何在python中自动向类添加属性?
- jQuery 设置表格隔行变色、隔列变色
- 从0开始配置Win环境下VScode (VScode For C/C++)
- 勘验图系统(GDI+绘图)
- java泛型特点_Java泛型
- 算法笔记:tarjan算法求强连通分量割点桥
- mybatis简明教程
- Windows内核面试题(持续更新,目前完成度30%约1.8万字)
- android远程连接windows,用微软的安卓远程桌面连接电脑没有声音
- 思杰桌面虚拟化Citrix XenDesktop
- [caffe] Long-term Recurrent Convolutional Networks
- 【Java基础】2020如何查看Java官方文档
- 基于Qt的网络五子棋游戏对战
- IC后端物理实现自动化工具 OpenROAD系列(三)ibex-32位2级流水线 RISC-V CPU 的物理实现
热门文章
- 【华为账号服务】【FAQ】Account Kit常见咨询合集--其它问题
- Linux 服务器数据同步
- a prefect storm歌词_最新英文歌曲精选:Perfect Storm – Brad Paisley(
- vant组件做表格_vue实用组件——表格
- Java连接MySQL实现登录及多表查询
- 嵌入式系统学习——STM32之电容型触摸屏
- python解析tcp数据包-python解析获取发往本机的数据包并打印
- 解决 Mysql 知道表名不知道在哪个库查询具体哪个库
- 小米cc9计算机在哪方面的应用,小米CC9e深度使用10天之后,说说最真实的感受
- 量化散户交易数据:追涨爆亏99%,杀跌少赚28倍?| 追涨杀跌一时爽,散户钱包火葬场?【邢不行】