一、什么是面向对象
C++、Java、Python等这些高级语言即有面向过程也有面向对象,那么什么是面向对象呢?
简单解释以下就是
一种抽象化的编程思想,很多编程语言中都有的一种思想。
例如:洗衣服
思考:几种途径可以完成洗衣服?
答: 手洗 和 机洗。 手洗:找盆 - 放水 - 加洗衣粉 - 浸泡 - 搓洗 - 拧干水 -倒水 - 漂洗N次 - 拧干 - 晾晒。
机洗:打开洗衣机 - 放衣服 - 加洗衣粉 - 按下开始按钮 - 晾晒。
思考:对比两种洗衣服途径,有什么区别?
答:机洗更简单
思考:机洗,只需要找到一台洗衣机,加入简单操作就可以完成洗衣服的工作,而不需要关心洗衣机内部发生了什么事情。
总结:
面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况。而编程就是设置事物能够做什么事。
二、类和对象
知道了对象能简化工作,简化编程;那么什么是类呢?
类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物
特征特点即是属性
行为功能即是方法
类可以比作制造洗衣机时要用到的图纸,也就是说
类是用来创建对象的
;对象是类创建出来的真实存在的事物,用类去创建(实例化)一个对象;例如:使用设计图纸来实例化一个洗衣机。
注意:开发中,先有类,再有对象。
以上只是简单说明以下类与对象的关系,下面直接进入真实的项目中来应用
三、综合应用
3.1 烤羊肉
3.1.1 需求分析
需求主线:
被烤的时间和对应的羊肉状态:
0-3分钟:生的
3-5分钟:半生不熟
5-8分钟:熟的
超过8分钟:烤糊了
添加的调料:
用户可以按自己的意愿添加调料
3.1.2 类的定义
根据需求分析,可以基本判断出类的属性如下
被烤的时间
被烤的状态
添加的调料
类的方法有如下
被烤
用户根据意愿设定每次烤羊肉的时间
判断羊肉被烤的总时间是在哪个区间,修改羊肉状态
添加调料
用户根据意愿设定添加的调料
将用户添加的调料存储
3.1.3 实例化对象,调用相关类的方法
代码展示
# 类的定义
class beat():
#初始化魔法函数,用于创建对象时自动调用
def __init__(self):
# 类的属性
self.time = 0
self.state = '生的'
self.condiment = []
#用于判断羊肉烤的状态,存在参数,用于用户根据状态来判断需不需要继续烤
def cook(self,time):
#每次烤的时间都被累加到一起
self.time += time
if 0
self.state = "生的"
elif 3
self.state = "半生不熟的"
elif 5 < self.time <= 8:
self.state = "熟的"
elif 8 < self.time :
self.state = "烤糊了"
#添加调味品的函数,每次添加的调味品都被存储在一个叫做condiment的列表中
def add_condiment(self,condiment):
self.condiment.append(condiment)
#提示信息,用于打印对象时输出
def __str__(self):
return f"羊肉烤了{self.time}min,此时的状态为{self.state},添加的调料有{self.condiment}"
#创建对象
mutton = beat()
mutton.cook(5)
mutton.add_condiment('辣椒面')
#mutton.add_condiment('胡椒')
#mutton.cook(2)
print(mutton)
执行结果:
若增加调料品与烤的时间,则输出为
mutton.add_condiment('胡椒')
mutton.cook(2)
3.2 搬家具
3.2.1 需求分析
将小于房子剩余面积的家具摆放到房子中
3.2.2 类的定义
房子类
实例属性
房子地理位置
房子占地面积
房子剩余面积
房子内家具列表
实例方法
容纳家具
显示房屋信息
家具类
家具名称
家具占地面积
3.2.3 实例化对象,调用相关类的方法
代码展示:
#家具类
class furn():
def __init__(self,name,area):
#家具名字
self.name = name
#家具的占地面积
self.area = area
#房子类
class home():
#初始化函数,用于初始化对象内的一些信息
def __init__(self,address,area):
#地理位置
self.address = address
#房屋面积
self.area = area
# 注意此时还没有家具搬进来,所以剩余的房屋面积就是房屋的初始面积
self.free_area = area
#家具列表
self.furn = []
#用于判断是否还能容纳家具,
#注意 这里需要与家具类中的“占地面积”参数进行比较,所以参数写成家具类的对象
def add_furn(self,item):
if self.free_area > item.area:
self.furn.append(item.name)
#家具搬入后,房屋剩余面积 = 之前剩余面积 - 该家具面积
self.free_area -= item.area
else:
print('家具太大,剩余面积不足,无法容纳')
#用于显示房屋的信息
def __str__(self):
return f"您的房子在{self.address},总面积为{self.area},剩余面积为{self.free_area},有{self.furn}这些家具"
#实例化对象
bed = furn('bed',5)
sofa = furn("sofa",15)
soccer = furn('goal',2000)
hu = home('成都',220)
hu.add_furn(bed)
hu.add_furn(sofa)
#hu.add_furn(soccer)
print(hu)
执行结果:
如果将足球场放进房子里肯定是不可能实现的,如下演示结果
hu.add_furn(soccer)
以上就是Python中面向对象的简单应用,你学废了吗~