day06 -1- 面向过程 VS 面向对象

1、编程范式:


在了解面向对象和面向过程这两种范式之前,我们先了解一下什么是编程范式。



编程 是程序员 用特定的 语法 + 数据结构 + 算法 组成的代码告诉计算机如何执行任务,  一个程序是程序员为了得到一个任务结果而编写的一组指令的集合。 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,,对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。  两种最重要的编程范式分别是面向过程编程和面向对象编程。

 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式,如C++即支持面向过程也支持面向对象。而Python和Java一样,是纯面向对象语言。



2、面向过程编程(Procedural Programming)





 在这个过程中我们更关注解决问题的过程,一步一步解决问题。基本设计思路就是程序一开始是要着手经济一个大问题,然后把大问题分解成很多个小问题或者子过程,执行子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。简单说,程序从上到下一步步执行,一步步从上到下,从头到尾解决问题。

优点:程序员不必考虑类与类、对象与对象之间的复杂关系,简化了开发流程,显著提高了开发效率。

缺点:程序个部分的相互依赖性增强。举个例子,如果程序开头设置了一个变量,但它的子过程依赖这个变量才能正确运行,那如果修改了这个变量,这个子过程也要修改,假如又有一个子过程依赖这个子过程,那就会发生一连串的影响,随着程序越来越大,这种编程范式的维护难度和维护成本会越来越高。


所以我们一般认为,如果只是写一些简单地脚本,去做一些一次性任务,用面向过程的方式是极好的,速度快、效率高且相对简单。但如果要处理的任务是复杂的,且需要不断迭代和维护的,那还是用面向对象最方便。



3、面向对象编程(Object-Oriented Programming )


面向对象的前提:世界万物,皆可分类。如果我们把每一件事物都称为一个对象,这个对象就肯定属于某种品类,品类都具有一定的·属性,因此我们说,只要是对象,都有一定的属性。因此我们可以说,面向对象编程是按照现实世界的模型用计算机语言向计算机描述现实世界。

OOP编程利用“类” 和 “对象” 来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因是因为一方面是因为它可以使程序的维护和扩展变得简单,并可以得到提高程序的开发效率。另外,基于面向对象的程序可以使他人更容易理解你的代码,从而使团队开发变得更从容,维护和迭代的成本也更



4、面向对象的几大核心特性:


1.  Class 类:

一个类即是一类拥有相同属性的对象的抽象、蓝图、原型,在类中定义了这些对象都具备的属性(variables(data))、共同的方法。



2.  Object 对象:

一个对象即是一个类实例化后的实例,一个类必须经过实例化后才可以在程序中调用,一个类可以实例化多个对象,每个对象也可以有不同的属性.就像人类,是指所有人,每个人是指具体的对象,人与人之间有共性,亦有不同.



3.   Encapsulation  封装:
在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法。简单说,封装就是把变量、数据结构包含在一个类中,可以对外设置访问属性,保护封装体捏的变量等。


 
4.  Inheritance 继承 
一个类可以派生出子类,在这个父类定义额属性、方法自动被子类继承


5.   Polymorphism 多态:
多态是面向对象的重要特性,简单说:"一个接口,多种实现",指一个基类中派生了不同的子类,并且每个子类在继承了同样的方法名的同时又对父类的 方法做了不同的实现,这就是同一种事物表现出了多种形态。


总结:编程其实是把一个将具体世界抽象化的过程,多态是抽象化的一种体现,把一系列具体事物的沟通点抽象出来,再通过这个抽象的事物,与不同的事物进行对话。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值