c++学习笔记【oop与pop的辨析】

c++学习笔记之(oop与pop的辨析):

在学习c++之前,许多人都和我一样是接触c语言入门的,而c是一门面向过程编程(即pop)的语言。c++最开始并不叫c++,而是被称为带类的c,后来才逐渐演变成一门新的语言,而c++对比起c,最大的进步在于,他是一门支持oop(面向对象编程)的语言,然而oop和pop的概念对于初学者而言比较难以辨析,今天粗略地在这里聊聊我的拙见。

pop(面向过程编程):

pop的编程思想是把问题给步骤化,然后通过编写函数来实现这些步骤,之后按照顺序来调用函数解决问题。

优点:

1.逻辑性比较紧密,通常考虑较全面,流程化编程任务明确。
2.效率高,代码较短小精简,与数据结构知识结合容易开发出高效的程序。
3.流程明确,便于节点分析。

缺点:

1.思考内容过多,耗费大量精力
2.代码重复利用率低,维护成本高
3.难以形成模块化,模块间的耦合难度高,不适合复杂程序的开发。

oop (面向对象编程):

oop编程思想是一种高度抽象的编程思想,他认为万物皆可为对象,例如说一个变量,一个结构体,一个类,都可以是对象。
以下简述几个概念:

对象:

对象是现实世界的一种抽象,是一些可以做事情的东西,在现实世界中,类可以表示为具体的某个事物,而在面向对象的程序中,对象通常是一个类的实例,一个对象通常具有以下三种属性:

1、状态:

状态是是什么,在字典中,状态的意思是“某人或某物在特定时间点下所处之特定状况”,那什么是对象的状态,我的理解应该是对象中的变量值,这些变量值描述这个对象的状态。

2、行为:

对象的行为通常通过类中的成员函数来进行,例如说容器类中的size()便是让容器类本身返回他自身的大小。

3、标识:

标识就是对象的名字,是对象的身份特征,类似于身份证的东西。

类:

类是一些具有相同特征的物体的集合,类定义了事物的属性和行为,举个例子而言,“狗”这一个类会包含他的外形特征,以及他能做的行为能力,例如说吠叫,例如说奔跑等。
总的来说,类可以为程序提供模版和结构。类的属性和行为称为成员,如在类中定义的变量称为成员变量,用来描述类的状态,而在类中定义的函数,称为成员函数,用来描述类的行为。

封装:

封装可以将接口与程序进行分离,即把对象的属性和实现细节给隐藏起来,然后只公开对象的接口,即进行某项操作时,对象无需告知你是如何实现这个操作的,它只需要进行这个操作即可。
同时封装可以控制外部的访问权限,例如在类中public下的成员是在外部可以访问的,而private只有在类中才能够访问,即想要在外部得到private的成员数据,只能通过调用public中的成员函数,通过这个函数来获取。
这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性和简化程序的编写工作。

继承:

即可以让某个类获得另外一个类的属性,我们将被获取的那个类称为父类,而获取属性的那个类叫做子类,一般而言,子类比父类更加具体,利用生物分类来作为例子,界门纲目科属种,如果说父类是某个目的生物,那么子类就是某种科的生物,子类的子类可以是某种属,但显然无论是科还是种,他们都继承了关于目的共同特征。
值得一提的是,在继承中,父类中public的成员是可以继承的,而private的成员则不行。继承的存在使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。

多态:

多态的意思是不同的对象由于不同的属性,在继承得到的成员函数中做出的行为可能不同,假设存在一个类叫动物,其下有一个成员函数称为“叫”;继承这一个类的子类有鸡和狗,调用叫这个成员函数时,鸡对应的行为是鸣叫,而狗对应的行为则为吠叫,这是由于不同的属性,而导致的行为不同。计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。

方法:

对象所能执行的行为,即成员函数称为对象的方法,在面向对象编程中,我们更应该调用对象的方法去改变对象的属性等。

以上就是oop的几个重要概念了,接下来简述一下oop的优缺点。

优点:

1、模块化,模块与模块间耦合紧密,不同的模块承担不同的任务,使得结构清晰,严谨。
2、封装性,将事务高度抽象,便于流程中的行为分析、操作;
3、代码利用率高,可多次复用,可继承,可覆盖,有好的扩展性。
4、实现简单,可有效地减少程序的维护工作量。

缺点

1、高度抽象,初学者难以理解,底层交互较少,不适合游戏开发,多媒体开发与底层开发。
2、对于事物开发而言,过度的封装会提高本身的复杂程度。

总结:

POP编程是以功能为中心来思考和组织程序,注重功能的实现,达到效果就可以了;
OOP则注重封装,以对象为中心,强调整体性,代码整体变得更规范;但是OOP的耦合性还是很高,一旦代码需要修改,会对很多类造成影响,代码冗余问题严重,而且核心业务中总夹杂着一些它并不关心的通用业务,比如日志记录、性能统计、安全控制、事务处理、异常处理等;

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧 渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值