进阶面向对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进阶面向对象相关的知识,希望对你有一定的参考价值。

        在日常生活中,我们都习惯于对事物进行分类。那么,这种分类的思想是否也可以引入程序设计中呢?面向对象的意义在于:将日常生活中习惯的思维方式引入程序设计中;将需求中的概念直观的映射到解决方案中;以模块为中心构建可复用的软件系统;提高软件产品的可维护性和可扩展性。

        那我们来介绍下面向对象中的两个基本概念:类和对象。类:指的是一类事物,是一个抽象的概念。对象:指的是属于某个类的具体实体。类是一种模型,这种模型可以创建出不同的对象实体;对象实体是类模型的一个具体实例。一个类可以有很多对象,而一个对象必然属于某个类。

        下来我们以生活中的类和对象为大家介绍下这两个概念。我们一提到老虎,并没有说什么老虎,在这显然就是个类了。老虎还分为华南虎、东北虎以及孟加拉虎等。那么说到华南虎,我们也不知道说的是哪只老虎,这时它们显然也是类了。如果我们说西安动物园里的大毛华南虎,这时就具体到某只老虎了,显然大毛便是一个具体的对象啦。再比如说电脑,它分为Dell、HP以及Sony等。具体到某个品牌的电脑时,才能说是对象。否则便是类了。

        说了这么多,类和对象的意义是什么呢?类用于抽象的描述一类事物所特有的属性和行为,如电脑拥有 CPU,内存和硬盘,并且可以开机和运行程序;对象是具体的事物,拥有所属类中描述的一切属性和行为,如每一只老虎都有不同的体重、不同食量以及不同的性情等。

        下来我们就来看看类之间的基本关系:继承和组合。继承:从已存在类细分出来的类和原类之间具有继承关系,继承的类(子类)拥有原类(父类)的所有属性和行为。组合:一些类的存在必须依赖于其他的类,这种关系叫组合;组合的类在某一个局部上由其它的类组成

        我们用图来看看什么是继承(图一)和组合(图二)

技术分享图片

                                        图一

技术分享图片

                                        图二

        我们来看看类的表示法

技术分享图片

        我们再来简化下

技术分享图片

        我们发现这个虽然比较简洁了,但是类之间的继承关系没有表示出来,继承而来的属性和行为需要重复声明,那么我们再次进行改进

技术分享图片

        我们发现这个就比较好看多了,但是需要使用下划线来表示属性和行为,不适合于编程开发,我们再来改进下

技术分享图片

        我们看到这个已经接近程序的格式了,但是它使用的是中文进行属性和行为的描述,绝大多数编译器无法接受啊。那我们再次进行改进

技术分享图片

        我们用 struct 来表示类,已经看起来很接近编程语言了。我们如何用程序设计中的概念描述类的属性和行为呢?

技术分享图片

        这下看起来便符合程序了。我们来编译下,看看 g++ 编译器是否支持呢?程序如下

#include <stdio.h>

struct Biology {
    bool living;
};

struct Animal:Biology {
    bool movable;
    void findFood() {}
};

struct Plant:Biology {
    bool lgrowable;
};

struct Beast:Animal {
    void sleep() {}
};

struct Humann:Animal {
    void sleep() {}
    void work() {}
};

int main()
{
    
    return 0;
}

        编译结果如下

技术分享图片

        我们发现已经正确编译了,也就是说这样的写法已经被 g++ 编译器所支持了。通过对面向对象的学习,总结如下:1、面向对象时当今 软件开发中的重要方法;2、类和对象时面向对象理论中的基本概念,类和对象均来源于日常生活中;3、每个类可以有多个对象,每个对象必然属于某个类;4、类之间可以存在继承关系或组合关系;5、继承关系中子类拥有父类的一切属性和行为,组合关系是类之间整体和部分的关系;6、类及类之间的关系可以有不同的表示法;7、编译器对类的表示法有具体的要求。


        欢迎大家一起来学习 C++ 语言,可以加我QQ:243343083

以上是关于进阶面向对象的主要内容,如果未能解决你的问题,请参考以下文章

java学习---面向对象进阶

python-前方高能-面向对象-进阶3

python-面向对象进阶

进阶面向对象

python学习笔记-面向对象进阶&异常处理

python学习笔记-面向对象进阶&异常处理