- 面向过程 Procedure Oriented 简称PO :如C语言
Procedure /prəˈsiːdʒə®/过程
Oriented /ˈɔːrientɪd/ 面向
当解决一个问题的时候
面向过程就是分析出 实现需求所需要的步骤,通过方法(函数)一步一步的实现这些步骤,接着依次调用即可,等方法执行完了,事情就搞定了,在就是面向过程。
- 面向对象(Object Oriented简称OO :如C++,JAVA等语言):
当解决一个问题的时候
面向对象会把事物抽象成对象的概念,
面向对象会把事物当做对象,宏观的分析出这些对象的一些属性和方法,然后让这些对象去执行自己的方法,问题得到解决,这就是面向对象的思维。
1.2、举二个例子-
一:洗衣机里面有脏衣服 怎么去洗干净?
用面向过程解决:
1、执行加洗衣粉方法;
2、执行加水方法;
3、执行洗衣服方法;
4、执行清洗方法;
5、 执行烘干方法;
以上就是 解决这个问题 所需要的步骤 通过方法的一个一个的执行(是没有对象去调用的)来解决问题。
用面向对象解决:
1、我先弄出两个对象:“洗衣机”对象和“人”对象
2、针对对象“洗衣机”加入一些属性和方法:“洗衣服方法”“清洗方法”、“烘干方法”
3、针对对象“人”加入属性和方法:“加洗衣粉方法”、“加水方法”
4、然后执行
人.加洗衣粉
人.加水
洗衣机.洗衣服
洗衣机.清洗
洗衣机.烘干
解决同一个问题 ,面向对象编程就是先抽象出对象,然后用对象执行方法的方式解决问题。
- 二: 打麻将例子(你 我 他)
面向过程:打麻将(你 我 他 她)
解决问题 分析实现需求所需要的步骤 (此时牌以起好 开始打了) :那就是打牌了
面向对象: 我.打麻将(你,他) or 你.打麻将(我,他) or 他.打麻将(我,你)
解决问题 把这四个人抽象成对象 给一些方法(打麻将方法) 抽象出对象,对象执行动作 。
1.3、面向过程与面向对象的优缺点:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。
蛋炒饭制作的细节不说了,最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。
蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。
到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。
盖浇饭的好处就是‘’菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性“比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。
总结来说:
面向过程
优点:性能比面像对象高,因为类在调用的时候需要实例化,开销过大,比较消耗资源。比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,因为这些,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点:性比相比面向对象是低的
2、面向对象三大特性封装 继承 多态
封装:
封装是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式
简单来说:就是不想让别人看到的数据,以及别人无需知道的内部细节"锁起来"只留下一些公共的访问方式,使其与外部发生联系。
封装的好处:
隐藏实现细节,提供公共的访问方式,提高了代码的复用性和安全性
例如:夏天宿舍很热,我们(用户)只需要操作遥控器即可使用空调,并不需要了解空调内部(实现细节)是如何运行的
继承;
继承是在一个已有类的基础上建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类。通过使用继承可以提高代码的复用性。继承是多态的前提。
注意:
A: 子类只能继承父类所有非私有成员(成员方法和成员变量)
B: 子类不能继承父类的构造方法,但是可以通过super关键字去访问方法
c : Java只支持单继承,不支持多继承(C++支持),但是Java支持多层继承(继承体系)形象的说就是:儿子继承爸爸,爸爸继承爷爷,儿子可以通过爸爸继承爷爷。
多态:
多态就是同一个行为(上课)具有多个不同的表现形式(课程)
多态就是同一个接口,使用不同的实例而执行不同的操作
2.1、3、将老年机案例,用面向对象的思想描述该类的属性和行为1、首先把这个手机当作成对象 然后给这个对象 宏观的分析出一些属性和方法
属性:
手机的价格、手机的品牌、手机的屏幕大小、手机的颜色、内存等等
方法:
打电话、发短信、开视频、看电视电影、刷小视频、购物、打车、点餐等等
3、总结数组知识点 3.1、数组的定义三种方式一:
动态初始化(指定长度)
数据存储的数据类型[] 数组名称 = new 数组存储的数据类型[长度(正整数))] ;
二:
静态初始化(指定内容)
数据存储的数据类型[] 数组名称 = new 数组存储的数据类型[ ] {元素1,元素2,元素3 , …} ;
三:
静态初始化(指定内容)
数据存储的数据类型[] 数组名称 = {元素1,元素2,元素3} ;
3.2、排序(冒泡排序)public class demo {
public static void main(String[] args) {
int[] a = {11,55,32,22,99};
//排序从大到小
//外层循环控制的是趟数
for (int i = 0; i < a.length-1;i++) {
//内层循环控制的是 每趟循环的次数哦 每趟比较出来的一个最大值
for (int j = 0; j < a.length-1-i; j++) {
if(a[j] < a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
System.out.println("排序之后:");
for (int array:a) {
System.out.println(array);
}
}
}
排序之后: 99 55 32 22 11



