面向对象方法学-第一节:面向对象方法学概述
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象方法学-第一节:面向对象方法学概述相关的知识,希望对你有一定的参考价值。
注意:本章是面向对象的内容,而C++又是一个很经典的面向对象语言,所以本节介绍时会引入C++相关知识。如需深入了解C++,可移步
文章目录
一:要点
(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.可维护性好
这是因为
- 面向对象的软件稳定性比较好
- 面向对象的软件比较容易修改
- 面向对象的软件比较容易理解
- 易于测试和调试
以上是关于面向对象方法学-第一节:面向对象方法学概述的主要内容,如果未能解决你的问题,请参考以下文章
Java学习-第一部分-第二阶段-第一节:面向对象编程(高级)