在日常生活中,我们都习惯于对事物进行分类。那么,这种分类的思想是否也可以引入程序设计中呢?面向对象的意义在于:将日常生活中习惯的思维方式引入程序设计中;将需求中的概念直观的映射到解决方案中;以模块为中心构建可复用的软件系统;提高软件产品的可维护性和可扩展性。
那我们来介绍下面向对象中的两个基本概念:类和对象。类:指的是一类事物,是一个抽象的概念。对象:指的是属于某个类的具体实体。类是一种模型,这种模型可以创建出不同的对象实体;对象实体是类模型的一个具体实例。一个类可以有很多对象,而一个对象必然属于某个类。
下来我们以生活中的类和对象为大家介绍下这两个概念。我们一提到老虎,并没有说什么老虎,在这显然就是个类了。老虎还分为华南虎、东北虎以及孟加拉虎等。那么说到华南虎,我们也不知道说的是哪只老虎,这时它们显然也是类了。如果我们说西安动物园里的大毛华南虎,这时就具体到某只老虎了,显然大毛便是一个具体的对象啦。再比如说电脑,它分为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。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。