六、面向对象#

1. 面向对象和面向过程思想#

面向对象面向过程都是一种编程思想,就是解决问题的思路

  • 面向对象:OOP(Object Oriented Programming)

常见的面向对象语言包括:java c++ go python koltin

  • 面向过程:POP(Process Oriented Programming)

面向过程语言代表是c语言

我们看同一个问题,面向过程和面向对象是怎么解决的?

中午想吃西红柿炒鸡蛋怎么办呢?

面向过程思想

面向过程解决问题必须要知道完成这个功能每一步的操作

  • 面向过程思想,强调的是过程(动作)
  • 而完成这个功能我们充当的角色是执行者的角色

面向对象思想

同样是中午想吃西红柿炒鸡蛋,

直接到饿了么上下个单,老板就把西红柿炒鸡蛋做好送过来了

餐馆老板具备做西红柿炒鸡蛋的功能,直接调用他的功能即可,不需要知道具体的流程

  • 面向对象思想:不再关注具体的过程
  • 功能里面充当的角色是指挥者的角色

面向过程和面向对象的总结

面向对象,强调的是对象(实体)

面向对象是一种思想,更加符合人的思维习惯

面向对象使复杂的问题简单化了

面向对象的出现,让曾经在过程中的执行者,编程了对象中的指挥者

2. 类和对象#

类和对象是面向对象非常重要的概念

  • 类是描述了一种类型(相当于图纸)
  • 对象是这个类型的具体实现(相当于图纸具体实现)
1
2
思考:
狗和旺财,哪个是类,哪个是对象?

狗是一个类型,属于类

旺财是狗的实现,属于对象

定义类和创建对象

类的定义格式:

1
2
class 类名:
    pass

创建对象

1
对象名 = 类名()

代码演示:

1
2
3
4
5
# 定义类
class Person:
    pass
# 创建对象
p1 = Person()

3. 类的组成#

类可以描述世间万物

类都需要有类名,也应该具备一些静态属性动态的行为

  • 类的关键字:class
  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许进行操作的方法(行为)

人Person类应该具备什么属性和行为呢?

属性:姓名(name) 、年纪(age)

方法:跑(run)、说话(say)

方法的定义#

成员方法的定义格式为:

def 函数名(self)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Person:
    # 定义成员方法sayHello
    def sayHello(self):
        print('hello')
    # 定义成员方法run
    def run(self):
        print('跑')

# 创建对象
p = Person()
# 调用成员方法
p.sayHello()

注意:

成员方法有都有参数self,调用的时候不需要传递self

成员属性#

成员属性的定义需要在__init__方法下定义

格式:

def __init__(self):

​ self.属性 = 属性值

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class Person:
    def __init__(self,name,age):
        # 成员属性
        self.name = name
        self.age = age

# 创建对象
p = Person('张三',30)
# 访问成员属性
print(p.name)
print(p.age)