什么是面向对象编程?

面向对象编程Object Oriented Programming,也就是OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个完整的程序是由一个或者多个对象有机地组合在一起的,一个对象包含了数据和操作数据的函数。

与面向对象相对的是面向过程, 面向过程的程序设计把程序当做是一系列的命令有序集合,也就是一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。

面向对象把对象作为程序的基本执行单元,程序的执行就是一系列消息在各个对象之间传递。

在Python中,所有数据类型都是对象,我们也可以自定义对象,依旧是定义Python中的一个类(class)。

面向过程和面向对象在程序流程上的有何不同, 举例说明一下:

假设我们要处理员工的信息表,为了表示一个员工的信息,面向过程的程序可以用一个dict表示:

staff1 = { ‘name’: ‘小李’, ‘age’: 25,}
staff2 ={ ‘name’: ‘小张’, ‘age’: 30}

而处理员工信息可以通过函数实现,比如打印员工的信息:

def print_info(staff):
print(’%s: %s’ % (staff[‘name’], staff[‘age’]))

如果采用面向对象的程序设计思想,我们首选思考的不是程序的执行流程,而是staff 这种数据类型应该被视为一个对象,这个对象拥有name和age这两个属性(Property)。如果要打印一个员工的信息,首先必须创建出这个员工对应的对象,然后,给对象发一个print_info消息,让对象自己把自己的数据打印出来。

class Staff(object):

def __init__(self, name, age):
    self.name = name
    self.age= age

def print_info(self):
    print('%s: %s' % (self.name, self.age))

给对象发消息实际上就是调用对象对应的关联函数,我们称之为对象的方法(Method)。面向对象的程序写出来就像这样:

laowang= Staff(‘老王’, 33)
laowu= Staff(‘老吴’, 40)

laowang.print_info()
laowu.print_info()

面向对象的设计思想是从自然界中来的,更准确说是生物学来的, 来自于生物学中细胞的概念。因为在自然界中,类(Class)和实例(Instance)的概念是很自然的。Class是一种抽象概念,比如我们例子中的员工是一个概念,而实例(Instance)则是一个个具体的Staff,比如,xiaoli 和xiaozhang是两个具体的Staff。

所以,面向对象的设计思想是抽象出类(class),根据Class创建实例(instance))。

面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法。

补充:
数据封装、继承和多态是面向对象的三大特点
欢迎交流学习:ljhz_by

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值