面向对象的程序设计设计思想(解决问题所需要的类),面向过程的程序设计思想(解决问题的步骤)

一、引言

面向对象思想是现代编程语言的主流编程思想,除了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、面向对象离不开面向过程的关系

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 04:10:04       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 04:10:04       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 04:10:04       90 阅读
  4. Python语言-面向对象

    2024-07-10 04:10:04       98 阅读

热门阅读

  1. LLM大语言模型知识点整理

    2024-07-10 04:10:04       24 阅读
  2. 使用Boost.Asio编写TCP通信程序框架(一)

    2024-07-10 04:10:04       42 阅读
  3. 导师好奇我为什么开发后端模版只花了一小时!

    2024-07-10 04:10:04       27 阅读
  4. android 7.0 tts文字转语音

    2024-07-10 04:10:04       24 阅读
  5. 离线升级docker中的某个镜像——以etcd为例

    2024-07-10 04:10:04       52 阅读
  6. 将pytorch 模型封装为c++ api 例子

    2024-07-10 04:10:04       34 阅读
  7. Rust: 关于Pin以及move前后分析

    2024-07-10 04:10:04       32 阅读
  8. LVS实验

    LVS实验

    2024-07-10 04:10:04      28 阅读
  9. 【Git】取消追踪多个文件或目录

    2024-07-10 04:10:04       24 阅读