语言分类
1、面向机器
抽象成机器指令,机器容易理解
代表:汇编语言
2、面向过程
做一个事情,排出步骤,第一步干什么,第二步干什么,如果出现情况A怎么处理,如果出现情况B做什么处理。
问题规模小,可以步骤化,按部就班
代表:C语言
3、面向对象OOP
随着计算机需要解决的问题的规模扩大,情况越来越复杂。需要很多人,很多部门协作,面向过程不太合适了。
代表:C++,Java,Python等
面向对象
什么是面向对象呢?
面向对象是一种认识世界、分析世界的方法论。将万事万物抽象成各种对象。
类class
类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合。
用计算机语言来描述类,是属性和方法的集合。
对象instance、object
对象是类的具象,是一个实体。
对于我们每个人这个个体,都是抽象概念人类的不同实体。
举例:
你吃鱼
你,就是对象;鱼,也是对象;吃就是动作
你是具体的人,是具体的对象。你属于人类,人类是个抽象的概念,是无数具体的人的个体的抽象。
鱼,也是具体的对象,就是你吃的这一条具体的鱼。这条鱼属于鱼类,鱼类是无数的鱼抽象出来的概念。
吃,是动作,也是操作,也是方法,这个吃是你的动作,也就是人类具有的方法。如果反过来,鱼吃人,吃就是鱼类的动作了。
吃,这个动作,很多动物都具有的动作,人类和鱼类都属于动物类,而动物类是抽象的概念,是动物都有吃的动作,但是吃法不同而已。
属性:它是对象状态的抽象,用数据结构来描述。
操作:它是对象行为的抽象,用操作名和实现该操作的方法来描述。
每个人都是人类的一个单独的实例,都有自己的名字、身高、体重等信息,这些信息是个人的属性,但是这些信息不能保存在人类中,因为它是抽象的概念不能保存具体的价值。
而人类的实例,是具体的人,他可以存储这些具体的属性,而且可以不同人有不同的属性。
哲学
一切皆对象
对象是数据和操作的封装
对象是独立的,但是对象之间可以相互作用
目前OOP是最接近人类认知的编程方式。
面向对象3要素
1、封装
①、组装:将数据和操作组装到一起
②、隐藏数据:对外只暴露一些接口,通过接口访问对象。比如驾驶员使用汽车,不需要了解汽车的构造细节,只知道使用什么部件怎样驾驶就行,踩了油门就能跑,可以不了解其中的机动原理。
2、继承
①、多复用,继承来的就不用自己写了
②、多继承少修改,OCP(Open-closed Principle),使用继承来改变,来体现个性。
3、多态
面向对象最灵活的地方,动态绑定
人类就是封装;
人类继承自动物类,孩子继承父母特征。分为单一继承、多继承;
多态,继承自动物类的人类、猫类的操作“吃”不同。