<!--
面向对象: 是一种编程思想, 而不是技术
面向对象编程思想对应的语言: 高级编程语言(类似于自然语言), 如java\JavaScript\C#\C++\PHP\Python...
与面向对象对应的高级语言: 面向过程, 如C语言
1. 面向过程(Procedure Oriented Programming): POP, 将一个业务过程(买棒棒糖), 拆解成具体的细节(节点), 然后用函数封装各个节点, 最后通过顺序调用函数,实现最终的业务功能
具体实现过程
1.1 拆解过程
* 找到商店
* 寻找商品
* 交换(购买)
* 交付商品
1.2 函数实现(封装)
* function getShop(){}
* function getGoods(){}
* function pay(){}
* function finish(){}
1.3 顺序调用
* getShop() 得到商店
* getGoods() 得到商品
* pay() 真正得到商品
* finish() 商品给需求者
优缺点
优点: 模块化编程思想(一个功能一个函数): 代码复用, 大型项目才有了可能(操作系统)
缺点: 不是特别符合人类思维逻辑: 缺少对象(谁在买?)
2. 面向对象(Object Oriented Programming): OOP, 在面向过程的基础之上, 先建立主体(Object:对象), 然后给主体提供过程功能(把函数放到对象内部), 调用的时候必须先得到对象(操作者), 然后由对象去实现对应的功能
2.1 找到主体
* 买家
* 商店
2.2 先定义主体结构
* class Buyer{}
* class Shop{}
2.3 拆解业务过程
* 买家: 找到商店
* 买家: 寻找商品
* 买家: 交换(购买) 商店提供商品
* 买家: 交付商品
2.4 函数实现(封装: 放到主体结构中)
* class Buyer{
* function getShop(){}
* function getGoods(){}
* function finish(){}
* }
*
* class Shop{
* function pay(){}
* }
2.5 先得到主体, 然后由主体对象 去调用结构对应的功能
* const b1 = new Buyer('周维')
* const s1 = new Shop('校园商店')
* 调用: b1.getShop().getGoods() s1.pay() b1.finish()
优缺点
优点: 基于面向过程, 也是模块化编程思想: 代码复用(比面向过程能实现更复杂的代码复用)
后期维护容易, 数据具有追溯能力(更符合人类处理事务的思维)
缺点: 前期开发难度较大, 代码量明显增加, 项目敏捷度降低(敏捷开发): 小项目不适合面向对象
代码执行的效率降低
面向对象有三大特性
1. 封装: 将数据和数据的操作捆绑到一起,形成对外界的隐蔽, 但是同时提供对外可操作的接口
class Student{
// 数据: 属性
name = '周维'
age = 29
// 数据的操作: 方法
springFestval(){
this.age++
}
}
const s1 = new Student()
s1.srpingFestval() // 外部可调用
2. 继承: 实现大量代码的复用
class Person{
age = 0
eay(){}
drink(){}
}
class Student extends Person{}
const s1 = new Student('周维')
s1.eat()
s1.drink()
3. 多态: 一种对象多种形态(java模拟: 有继承, 要重写)
class Person{
public static void eat(){ system.out.println('Person eat')}
public static void drink(){ system.out.println('Person drink') }
}
class Student extends Person{ // extends发生继承
public static void drink(){ system.out.println('Student drink') } // 重写
}
产生对象: 强类型语言
Person s = new Student() // s是一个Perosn的对象, 对象的实体又是一个Student对象
s.eat() // 输出: Person eat
s.drink() // 输出: Student drink
-->
JavaScript - js进阶 - 面向对象编程思想
最新推荐文章于 2022-04-15 12:29:00 发布
本文介绍了面向对象编程(OOP)的基本概念,对比了面向过程编程,阐述了OOP的封装、继承和多态三大特性,并探讨了其优缺点。通过实例展示了如何在实际编程中运用面向对象的思想。
945

被折叠的 条评论
为什么被折叠?



