面向对象&面向过程
什么是面向过程?
自上而下顺序执行,逐步求精;
其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构;
各模块之间的关系尽可能简单,在功能上相对独立;
每一模块内部均是由顺序、选择和循环三种基本结构组成;
其模块化实现的具体方法是使用子程序。
程序流程在写程序时就已决定。
什么是面向对象?
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。
对同类对象抽象出其共性,形成类。
类中的大多数数据,只能用本类的方法进行处理。
类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信
程序流程由用户在使用中决定。
理解面向对象
面向对象是相对面向过程而言
面向对象和面向过程都是一种编程思想
面向过程
1. 强调的是功能行为
2. 关注的是解决问题需要哪些步骤
面向对象
1. 将功能封装进对象,强调具备了功能的对象
2.关注的是解决问题需要哪些对象
理解面向对象-把大象装进冰箱
面向过程和面向对象
面向过程:
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象:
是把构成问题的事务分解成各个对象,每个对象都有自己独立的属性和行为, 对象可以将整个问题事务进行分工, 不同的对象做不同的事情, 这种面向对象的编程思想由于更加贴近实际生活, 所以被计算机语言广泛应用。
面向过程和面向对象-设计五子棋游戏
面向过程的设计思路:
分析问题的步骤:
开始游戏 --> 黑子先走 --> 绘制画面 --> 判断输赢 --> 轮到白子 --> 绘制画面 --> 判断输赢 --> 返回步骤2到7、最后输出输赢的结果。把上面每个步骤用分别的函数来实现,问题就解决了.
从另外的思路来解决问题: 整个五子棋可以分为 1、黑白双方(这两方的行为是一模一样的),2、棋盘系统(负责绘制画面),3、规则系统(负责判定诸如犯规、输赢等). 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定.
面向过程和面向对象-设计五子棋游戏
两种不同的思路都可以实现相同的功能, 但是面向对象的实现方式更加贴近人类生活 (比如: 公司的各个部门, 学校的各个院校等). 在程序的编程中我们把项目中的每个不同的个体看成整体功能的每一个对象, 对象中再包含其属性和方法, 让对象对其属性和方法进行封装, 这样也更加利于后期扩展和维护. 现在几乎所有的语言都支持面向对象的编程思想.
面向对象的编程语言
面向过程的语言: C语言等.
面向对象的语言: C++, java, C#, OC, JS, Swift等.面向对象的基本特征
面向对象编程(OOP)的3个基本特征是:封装、继承、多态
封装:将属性和方法(数据和功能)封装在一起;
继承:继承是指这样一种能力:它可以使用现有类的功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
多态:允许让父类的指针分别指向不同的子类, 调用不同子类的同一个方法, 会有不同的执行效果
面向对象的属性和方法
对象的组成
属性(对象的属性) ——变量:状态、静态的
方法(对象的行为) ——函数:过程、动态的
面向对象-小狗吃食
示例: 小狗吃食(闻一闻smell、舔一舔lick、咬一咬bite)
分别采用面向过程和面向对象来分析
面向过程 : 先闻一闻, 然后再舔一舔, 最后再咬一咬 (注重过程)
面向对象 : 小狗是一个对象, 它可以闻一闻食物, 可以舔一舔食物, 可以咬一咬食物. (不注重过程, 注重对象)