一. 面向对象(OOP)
面向对象是将现实事物抽象出来用程序描述,举个例子,有一天我想吃鱼香肉丝,两个方案:一是自己去菜市场买食材,回来处理食材,炒一盘鱼香肉丝。二是,下馆子,直接对老板说:老板,来一份鱼香肉丝。
方案一,就是面向过程,方案二,就是面向对象
面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性,如果突然间不想吃鱼香肉丝了,想吃地三鲜,对于方案一,可能不太容易了,还需要重新买食材,处理食材然后炒菜。对于方案二,就容易多了,直接大喊,老板,那个鱼香肉丝换成地三鲜吧,提高了可维护性。总的来说是降低耦合,提高维护性。
面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。
面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。
面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们我们使用的就是面向对象了。
一. 面向对象的意义
- 将日常生活中习惯的思维方式引入程序设计中
- 将需求中的概念直观地映射到解决方案中
- 以模块为中心构建可复用的软件系统
- 提高软件产品的可维护性和可扩展性
二. 面向对象的基本概念
-
类和对象是面向对象中的两个基本概念
-
类(粽子、汤圆、月饼)
指的是一类事物,是一个抽象的概念 类是一种模型,这种模型可以创建出不同的对象实体
-
对象(南北的甜咸党的差异)
指的是属于某个类的具体实体 对象实体是类模型的一个具体实例
三. 类和对象的意义
-
类用于抽象的描述一类事物所持有的属性和行为
如:电脑拥有CPU,内存和硬盘,并且可以开机和运行程序 如:粽子,基本制作原料有粽叶、大米、制作工艺煮
-
对象是具体的事物,拥有所属类中描述的一切属性和行为
如:每一只老虎都有不同的体总,不同的食量以及不同的性情 如:每一个粽子都是独一无二的,北方的甜粽,南方的鲜肉粽
四. 类之间的基本关系
-
继承
从已经在类细分出来的类和原类之间具有继承关系 继承的类(子类)拥有原类(父类)的所有属性和行为 举例:南北甜咸两党粽子都继承于粽子
-
组合
一些类的存在必须依赖于其它的类,这种关系叫组合 组合的类在某一个局部上由其它的类组成 举例:每个粽子都由粽叶、糯米这些类组成
五.面向对象语言的三大特性
封装、继承、多态