发布网友 发布时间:2022-03-31 05:11
共4个回答
热心网友 时间:2022-03-31 06:40
对象就像是我们生活中的每个实体(如人、钢笔等等)
对象的抽象叫做类,打个比方说,人是一个类,你我是这个类的实体对象。
对象有数据,就像我们的身高、体重,就是类里的各种变量。
对象有动作,比如我们可以吃饭、行走,就是类里的成员函数。
对象的数据多是private(私有)的,通过成员函数(多为public)来访问他。
这就是类对数据的封装性。
人还分为男人和女人,然后再根据年龄分为老人、小孩等。但他们都具有“人”的特性、这就叫做继承。
对同一件事情,不同的人有不同的反映,这就叫做多态。
比如一个学校要开学了,不同的部门会做不同的事。
多态还体现在重用性上,比如函数、运算符的重载,实现“一物多用”。
面向对象的作用很大,在以后的实践中会慢慢感受到。因为他来自我们的现实生活中,所以比较自然、顺手。
像C语言如果用来开发大型软件的话就会很手足无措,因为各种函数能够把你烦死。
----------------------------------------------------------
面向对象的好处
使用面向对象思想进行开发有以下优点:
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
面向对象设计的原则
SRP 单一职责原则
就一个类而言,应该仅有一个引起它变化的原因。
OCP 开放————封闭原则
软件实体(类、模块、函数等)应该是可以开展的,但是不可修改。
LSP Liskov 替换原则
子类型必须能够替换掉它们的父类型。
DIP 依赖倒置原则
抽象不应该依赖于细节。细节应该依赖于抽象。
ISP 接口隔离原则
不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。
REP 重用发布等价原则
重用的粒度就是发布的粒度
CCP 共同封闭原则
包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
CRP 共同重用原则
一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。
ADP 无环依赖原则
在包的依赖关系图中不允许存在环。
SDP 稳定依赖原则
朝着稳定的方向进行依赖
SAP 稳定抽象原则
包的抽象程度应该和其稳定程度一致。
-------------------------------------------------------
某些问题和解决方法,必须使用面向对象技术。使用面对
对象技术可以大大简化开发。
另一些则不用。
比如:开发操作系统内核就可以不用面对对象,所以,无论
Windows,Linux,Uinx, MAC 大部分都是使用C开发的,而不用
C++.
但是开发一个客户交互并能够组件化易扩充的软件(比如一个
CAD软件),就必须使用面对对象。
所以这方面的软件都是采用C++开发。
再举个例子,Windows系统的API函数有几千个,发出的消息也有
几千个.如果使用过程语言比如C开发,难度和代码量都很惊人,
比如要在一个大函数里循环处理消息。
如果用面向对象的方法,就可以封装这些函数和消息。大大减少
代码量和开发难度。
再有,基本上各种快速构建系统的RAD工具,VB,Delphi,都是采用面向对象的方法实现的。(注:VB不算面向对象,只能算基于对象,因为他没有继承)使用这些工具,你就在应用面向对象。
----------------------------------------------
但是,在编写小程序时,面向对象就显得太烦碎了;
如:
class a
{public:
int a=20;
int b=10;
}
a a1,a2;
int c=a1.a-a2.b;
。。。
所以要“量体裁衣”,选择适合的方式。
另外面向对象(oop)是一种方法,思想,而不是技术。
热心网友 时间:2022-03-31 07:58
面向对象是一种程序设计思想,就是在
程序
空间内,利用数据抽象的方法对客观世界的实体进行描述,即将一种
数据结构
和操作该数据结构的方法*
在一起
,封装在一个程序实体内,从而实现了数据封装和信息隐藏。
热心网友 时间:2022-03-31 09:33
http://ke.baidu.com/view/125370.html?wtp=tt
先看看,很全,希望对你有所帮助
热心网友 时间:2022-03-31 11:24
推荐两本书给你
《C++ Primer》
《C++ programming idea》