面向对象程序设计

面向对象程序设计是当前非常流行的一种程序设计,学过C语言我们知道C是面向过程的程序设计语言,学过Java和Cpp我们知道这两种程序设语言是面向对象程序设计。对面向对象我们听到最多的是什么呢?就是面向对象就是不用考虑功能的实现过程,不需要面向过程,但是有没有很迷惑,如果不考虑实现过程,那面向对像程序设计中的类里面的函数是什么呢?这不是也面向了过程,难道我们不需要考虑这些功能的实现吗?所以到底什么是面向对象程序设计呢?
首先面向对象程序设计是一种程序设计泛型,这种泛型的主要特征是:
程序=对象+消息
其主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成;第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动相关方法完成相应的操作 (记住这句话,这句话其实就对面向对象程序设计的特性做出了解释)。
我们从这个特征可以看出,对象是面向对象程序设计中非常重要的一个概念(从名字中也能体现,面向“对象”程序设计),那什么是对象呢?
对象:
现实世界中,任何事物都是对象,列如我就是一个对象,我有我的身高、性别、年龄、体重、身份证号,我可以干什么呢?我可以学习、吃饭、上厕所、耍朋友。我的属性身高、体重等等这些标识了这就是我而不是你,而我做的这些行为都是我可以实现的功能。所以在现实世界中,对象一般可以表示为:属性+行为,一个对象往往是由一组属性和一组行为构成的。
现实世界中的对象,具有以下特性:

  • 每一个对象都有一个标识区别于其他对象
  • 用属性来描述对象的某些特征
  • 有一组操作,每一组操作决定了对象的一种行为
  • 对象的行为可以分两类:一类是作用于自身的行为,另一类是作用于其他对象的行为
    在面向对象的程序设计采用了这种思路。在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。所以:对象=数据+操作代码
    在了解了对象之后,我们也应该知道类。

    什么是类?“类”是一组具有相同属性和行为的对象的抽象。也就是说,类是对具有相同的数据结构和相同操作的一类对象的描述。对象就是类的实例化。例如:我是一个对象,人就是一个类,每一个人都有名字,性别,年龄等属性,每一个人都会吃饭、睡觉、上厕所。那么,“人”类可由名字、性别、年龄等表示其属性的数据项和吃饭、睡觉、上厕所等操作代码组成。也就是说将大量具有相同属性和操作的对象中相同的东西抽象出来,然后封装就是类,其中的一个对象就是这个类的一个实例。我们在举一个例子:“学生”类,那么学生都有什么属性呢?姓名,学号,成绩,性别等属性,学生的行为呢?学生可以查看、修改、填写自己的这些数据,也就是操作这些数据。那么“学生”类就可以抽象出来了,我们把不同学生的共用的东西抽象出来,例如他们都有姓名、学号、性别、成绩、对数据的操作,那么“学生”类就是由姓名、学号、性别、成绩等属性以及对数据操作的行为组成。类就是对象的一个抽象化集合。
    消息
    什么是消息?调用对象中的函数就是向该对象传递一个消息,要求该对象实现某一行为(功能、操作)。然后我们回到最开始的问题,为什么面向对象不用考虑过程,只考虑结果。这个原因就是因为面向对象主要是对对象进行消息的传递,然后会给你一个结果,然后我们的主要工作就是对对象传递消息,例如main主函数,我们只需要在主函数中实例化对象,然后与对象传递消息,而对象就会调用自己的方法,然后给我们结果,而在这个过程我们是不需要考虑这个对象的方法是如何实现的,我们考虑的是什么?我需要这个对象做什么事,他给我什么结果,我只要结果,不需要知道过程。这就是面向对象,我们不在考虑过程,只是等待对象给我们结果。
    现在我们知道了什么是面向对象,那面向对象的四个基本特征我们也要知道:抽象、封装、继承、多态
    抽象
    什么是抽象,我认为就是你在构造“类”的过程。
    封装
    封装封装,就是把东西包裹起来。在面向对象程序设计中,封装就剩指把数据和实现操作的代码集中放在对象内部,隐藏内部的细节,这也是为什么我们说面向对象不需要考虑过程,因为我们封装到对象里面了,我们只需要传递消息,然后由对象给我们结果,而不需要知道对象是如何实现的。
    继承
    继承,就是从祖先那里得到财富,面向对象中,继承父类(基类)我们的子类(派生类)就得到了父类的属性和方法,我们也可以再根据自己的生长来补充自己。继承并不只可以继承一个,我们可以继承多个父类。
    多态
    多态就是指不同对象但收到相同消息时执行的不同操作,这就是多态。
    面向对象程序设计的优点:
  • 可提高程序的重用性
  • 可控制程序的复杂性
  • 可改善程序的可维护性
  • 能够更大更好地支持大型程序设计
  • 增强了计算机处理信息的范围
  • 能很好的适应新的硬件环境
    对于这些优点,我们要考虑一下是什么特性使面向对象有了这些优点,例如:提高重用性是不是因为有继承呢?

最后为了巩固,面对下面问题自己能够说出:

  • 什么是面向对象?
  • 什么是类,什么是对象,两者的关系?
  • 什么是消息?
  • 什么是抽象和封装?
  • 什么是继承?
  • 什么是多态?

本人是一个小菜鸟,如果有大佬看并发现问题,希望告知。在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赟家小菜鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值