第十章 面向对象
面向过程与面向对象
面向过程:
- 注重算法、步骤,在微观上操作细节
- 如把大象放进冰箱-3步:打开冰箱、放大象、关冰箱
面向对象:
- 宏观上把控,每个对象各行其事
- 把大象放进冰箱-大象、冰箱分别做什么事
面向过程和面向对象不是相互对立的,是相辅相成的。
支持面向对象的编程语言:C++,C#,Python,Javascript
面向对象思想:
- 用语言模拟现实世界
- 万事万物皆对象。对象是一个真实的存在。
- 例如:张三
- 静态的特征:姓名,年龄,性别,身份证号,电话号
- 动态的特征:(动作,行为,功能,能力等):上课、写作业
- 对象就是静态特征和动态特征的结合体。
- 人会自然而然的对事物进行归类。具有相同静态特征和动态特征的对象称为类。
类和对象之间的关系:
- 类是抽象的,对象是具体的
- 类是一个集合,对象是一个个体
- 类和对象不是局部的关系
- 编程时,类当作一种数据类型。有类型创建出来的对象叫实例
面向对象的思路:
-
抽象出类
-
抽象出对象跟业务相关的静态特征:属性:name,age,phone
抽象出对象跟业务相关的动态特征:方法:gotoclass() run() eat()
-
创建对象–实例化对象
对象.属性 对象名。方法()
面向对象的使用:
class Student:
def __init__(self, name, age):
self.stu_name = name #实例属性
self.stu_age = age
#实例方法
def show(self):
print(self.stu_name+"\t"+str(self.stu_age))
# 实例化对象 对象名=类名()
stu = Student('张三',21)
print(stu.stu_name)
stu.stu_name='张伟' #重新赋值
print(stu.stu_name)
stu.show()
class Dog:
def __init__(self,name,lei):
#self 当前对象,类似java中的this
self.name=name
self.lei=lei
def show(self):
print(self.name+"\t"+self.lei)
hasiqi = Dog("廖铖","哈士奇")
hasiqi.show()
python支持动态属性
# 使用
# 定义一个MP3类 属性:品牌 方法:下载音乐、播放下载的音乐
class MP3:
def __init__(self,brand):
self.brand=brand
def download(self):
return '稻香'
def play(self):
print(self.brand+"正在播放"+self.download(