一、引言
面向对象思想是现代编程语言的主流编程思想,除了C语言外,其他的主流编程语言,无论是脚本的还是非脚本的,基本上都引入了面向对象这一设计思想,面向对象设计思想是怎样的?为什么现在的编程语言大都采用这种设计思想?他与面向过程设计思想有什么区别?
二、面向对象和面向过程
1、面向对象和面向过程都是程序设计思想。对于某一具体问题,可先使用面向对象的设计思想先设计好全局的解决方案,再使用面向过程的设计思想来设计好局部的解决方案,最终再通过使用具体的面向对象编程语言编写程序来解决问题
2、面向对象编程和面向过程编程是常用的两种编程范式
3、早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显,之后便出现了面向对象思想并成为主流的程序设计思想
三、面向过程的程序设计思想(Procedure Oriented Programming)
1、定义:是一种执行者思维,分析出解决问题的步骤,然后把步骤一步一步实现
2、关注点:过程,即操作数据的步骤,即如何执行
3、代码结构:以函数为组织单位,一个函数就是一个功能
4、适用范围:解决简单问题、解决不需要协作的问题
5、缺点:相对于面向对象的程序设计思想,代码扩展能力差、后期维护难度大
6、典型语言:C
四、面向对象的程序设计思想(Object Oriented Programming)
1、定义:是一种设计者思维,在进行程序设计的过程中,将事物的属性特征、行为特征抽象出来,用类来表示
2、关注点:类
3、代码结构:以类为组织单位,一个类就是一种事物
4、适用范围:解决复杂问题
5、优点:相对于面向过程的程序设计思想,代码扩展性强、可维护性高
6、典型语言:Java
五、由实际问题考虑如何设计程序-如何开车?
此问题是简单问题,使用POP思想来思考这个问题,首先要思考“怎么按照步骤来实现开车”
1、解决问题的步骤。即开车的步骤
2、步骤的实现。即开车步骤的实现
(1)函数A实现点火启动功能
(2)函数B实现踩离合、挂挡功能
(3)函数C实现松离合、踩油门功能
(4)函数D实现行进功能
3、组织代码。即组织函数
函数A----->函数B----->函数C----->函数D
六、由实际问题考虑如何设计程序-如何造车?
此问题是复杂问题,使用OOP思想来思考这个问题,首先要思考“车是怎样设计的”
1、车是由以下几个部分组成的
(1)可以找轮胎厂完成制造轮胎的步骤,发动机厂完成制造发动机的步骤....,这样大家可以同时进行车的制造
(2)最终进行组装就可以完成造车工作,大大提高了效率
(3)但具体到轮胎厂的一个流水线操作,也是有步骤的,还是离不开POP思想
七、由实际问题考虑如何设计程序-人把大象装进冰箱
1、使用POP思想解决问题-考虑人把大象装进冰箱的步骤
2、使用OOP思想解决问题-考虑人把大象装进冰箱需要的类
七、POP与OOP的选择
1、当需求简单时,我们可以一步步操作去解决问题,并且效率也很高
2、当需求复杂时,需要很多的功能,此时会发现面对每一个步骤已经变得非常麻烦了,这是就可以思考,能否将这些功能进行封装,根据功能的不同,将功能类似的功能封装在一起,形成一个类,使用时,只要找到对应的类即可。这就是OOP思想
八、POP与OOP的关系
1、非对立关系
2、相辅相成的关系
3、面向对象离不开面向过程的关系