博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解面向过程和面向对象的程序设计方法
阅读量:3948 次
发布时间:2019-05-24

本文共 1303 字,大约阅读时间需要 4 分钟。

一、结构化程序设计

1,概念:
传统的结构化程序设计思想的核心是功能的分解。将问题分解为多个功能模块,根据模块功能来设计用于存储数据的数据结构,最后编写了过程(函数)对数据进行操作实现模块的功能。程序由一系列处理数据的过程(函数)组成。这种设计方法的重点是面向过程的,也称为面向过程的程序设计方法。
在这里插入图片描述
2,特点:
传统的结构化程序设计思想可归结为:

“程序=数据结构+算法”

数据结构用于量化描述要解决的问题。

算法研究如何以更快、更有效的方式来组织求解问题的具体过程,将程序定义为处理数据的一系列过程。面向过程的程序设计把数据结构和过程看作两个实体,以过程为中心,特点是数据和程序分离,即数据和数据处理分离。

结构化程序设计的基本思想是采用自顶向下,并逐步细化的设计方法。算法实现采用顺序、选择、循环三种控制结构。

3,实例:
在这里插入图片描述
4,优缺点:
优点:
通过自顶向下,并逐步细化的设计方法,为处理复杂问题提供有力手段。性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素
缺点:
(1)模块间调用关系复杂,增加了模块间的依赖性和修改调试程序的难度,难以适应大型软件设计
(2)数据结构和过程分离,一旦数据结构发生改变,必须修改与之相关的所有模块对应的过程或函数

二、面向对象的程序设计

1,概念
在面向对象程序设计中,重点是将要被操作的数据,而不是实现操作的过程。数据是软件分解的基础,而不是功能。重要的是不把数据和对数据将要执行的操作视为两个单独的实体。而是把它们当作一个完整的实体(对象)。外部程序和过程程无法直接访问数据本身,从而使数据更安全。同类对象还可抽象出共性,形成类。程序有类的定义和类的使用构成,主程序中定义各个对象并规定他们之间传递消息的先后顺序;程序中的操作都是通过向对象发送消息来实现。对象接受消息后,启动此类对象有关的函数(方法)来完成相应的操作。

比如:每个银行账户是一个对象,包括账户数据(账户号、名称、余额等)和对数据的操作:存款、取款、转账(通过函数实现),所有的银行账户具有相同的数据属性和操作,可抽象出共性,形成银行账户类。每个银行帐户都是银行帐户类的一个实例。在面向对象中,每个银行帐户都被称为银行帐户类的对象。

对象与类的概念及关系:
在这里插入图片描述
在这里插入图片描述
对象间的交互:
在这里插入图片描述
2,特点
(1)封装性
在这里插入图片描述
对象是一个封装体,在其中封装了该对象的属性和操作。通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象内部,对外部提供某些接口(公有),在对象之外只能通过接口对对象进行操作。
(2)继承与派生性
在这里插入图片描述
(3)多态性
在这里插入图片描述
在这里插入图片描述
多态性是指同一个消息被不同对象接收时,产生不同的结果,即同一接口,不同方法。分为编译时多态(函数、运算符重载实现)和运行时多态(继承和虚函数实现)
3,面向对象的软件开发方法:
在这里插入图片描述
4,优缺点:
优点:
(1)易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
(2)可直接模拟现实世界。
缺点:
性能比面向过程低

转载地址:http://jxhwi.baihongyu.com/

你可能感兴趣的文章
如何分析Email模块接收、发送邮件失败的Log
查看>>
GPS如何进入省电模式
查看>>
GPS打开失败
查看>>
如何增加电量显示格数,并提示剩余电量?
查看>>
Key Launcher上底下的shortcut如何修改默认值以及如果修改Key Launcher上widget的默认显示顺序
查看>>
Java支持播放哪些multi media格式
查看>>
Audio播放完毕后设置时间无法正确获取
查看>>
打开了一个size不为零的文件,读取到的值却为零的一种分析和解决方法
查看>>
Aplix VM安装Java应用在main menu上不能显示自己的图标,而是显示一朵小花的解决方法
查看>>
Aplix VM安装第一个Java应用在main menu上看不到图标的解决方法
查看>>
java 在cosmos下修改设置,提示“setting are not modifiable”的解释
查看>>
JAD中常见字段的介绍。
查看>>
对于SIM menu update by OTA的解释
查看>>
如何去掉OTA provisioning的PIN码验证
查看>>
如何实现首次开机自动power on 蓝牙?
查看>>
Makefile文件中蓝牙相关的宏介绍
查看>>
如何屏蔽掉乱码的push消息
查看>>
登录一些安全网站,比如twitter/facebook,提示安全链接失败,或提示下载文件。
查看>>
如何去除launcher 上默认的 google search bar.
查看>>
Android如何绘制View
查看>>