面向对象练习
- 题目1:
使用面向对象的思想,编写自定义描述狗的信息。
设定属性包括:品种,年龄,心 情,名字;
方法包括:叫,跑。
要求:
设置属性的私有访问权限,通过公有的 get,set 方法实现对属性的访问
限定心情只能有“心情好”和“心情不好”两种情况,如果无效输入进行提示, 默认设置“心情好”。
设置构造函数实现对属性赋值
叫和跑的方法,需要根据心情好坏,描述不同的行为方式。
编写测试类,测试狗类的对象及相关方法(测试数据信息自定义)
class Dog:
def __init__(self,name,age,variety,mood):
self.__name=name
self.__age=age
self.__variety=variety
self.set_mood(mood)
def set_name(self,name):
self.__name=name
def get_name(self):
return self.__name
def set_age(self,age):
self.__age=age
def get_age(self):
return self.__age
def set_variety(self,variety):
self.__variety=variety
def get_variety(self):
return self.__variety
def set_mood(self,mood):
if mood=="心情不好":
self.__mood="心情不好"
elif mood=="心情好":
self.__mood='心情很好'
else:
self.__mood = '心情很好'
print( "输入信息错误,这只狗狗今天心情很好")
def get_mood(self):
return self.__mood
def shout(self):
if self.__mood=="心情很好":
str1= "开心的汪汪叫"
else:
str1= "伤心的呜呜叫"
return f"名字叫{self.get_name()}的{self.get_variety()}{self.get_mood()},{str1}"
def run(self):
if self.__mood == "心情很好":
str2= "开心的围着主人身边转"
else:
str2= "伤心的一动不动"
return f"名字叫{self.get_name()}的{self.get_variety()}{self.get_mood()},{str2}"
def __str__(self):
return f"{self.run()}\n{self.shout()}"
dog1=Dog("甜心",2,"贵宾犬","哈哈哈")
print(dog1.__str__())
print("=============================================")
dog2=Dog("太子",2,"德国牧羊犬","心情不好")
print(dog2.__str__())
- 题目2:
以面向对象的思想,编写自定义类描述 IT 从业者。设定属性包括:姓名,年龄, 技术方向,工作年限, 工作单位和职务;方法包括:工作
要求:
设置属性的私有访问权限,通过公有的 get,set 方法实现对属性的访问
限定 IT 从业人员必须年满 15 岁,无效信息需提示,并设置默认年龄为 15。
限定“技术方向”是只读属性(只提供 get 方法)
工作方法通过输入参数,接收工作单位和职务,输出个人工作信息
编写测试类,测试 IT 从业者类的对象及相关方法(测试数据信息自定义)
class Person:
def __init__(self,name,age,direction,year,company,position):
self.name=name
self.set_age(age)
self.direction=direction
self.year=year
self.company = company
self.position = position
def set_age(self, age):
if age >= 15:
self.age = age
return
else:
print("年龄信息无效!修改默认年龄为15")
self.age = 15
return
def get_age(self):
return self.age
def work(self):
print(f"目前就职于:{self.company}")
print(f"职务是:{self.position}")
def __str__(self):
print(f"姓名:{self.name}")
print(f"年龄:{self.age}")
print(f"技术方向:{self.direction}")
print(f"工作年限:{self.year}")
self.work()
p1=Person("马未龙",35,"数据库维护",10,"腾讯实业","数据库维护工程师")
p1.__str__()
print("==============================")
p2=Person("张凯",6,"Java开发",1,"鼎盛科技","Java开发工程师")
p2.__str__()
- 题目3:
请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息。
设定
- 出租车类:
属性包括:车型,车牌,所属出租公司;方法包括:启动,停止
- 家用轿车类:
属性包括:车型,车牌,车主姓名;方法包括:启动,停止
要求
分析出租车和家用轿车的公共成员,提取出父类—汽车类
利用继承机制,实现出租车类和家用轿车类
编写测试类,分别测试汽车类,出租车类和家用轿车类对象的相关方法
定义名为car的包存放汽车类,出租车类,家用轿车类和测试类
class Car:
# def __init__(self):
# # self.variety=variety
# # self.id=id
def start(self):
print("我是车,我启动")
def stop(self):
print("我是车,我停止")
class taxiCar(Car):
def __init__(self,id,taxi_company):
self.id=id
self.taxi_company=taxi_company
def start(self):
print("乘客您好")
print(f"我是{self.taxi_company}的,我车牌是{self.id},您要去哪里?")
def stop(self):
print("目的地已经到了,请您付费下车,欢迎再次乘坐")
class familyCar(Car):
def __init__(self,user_name):
self.user_name=user_name
def start(self):
print(f"我是{self.user_name},我的汽车我做主")
def stop(self):
print("目的地到了,我们去玩吧")
c1=Car()
c1.start()
c1.stop()
print('=========================')
c2=familyCar("武大郎")
c2.start()
c2.stop()
print('=========================')
c3=taxiCar("京B123","景顺出租车公司")
c3.start()
c3.stop()
- 题目4
某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
设定
- 蛇怪类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值)
- 蜈蚣精类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(飞行移动)
要求
分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类
利用继承机制,实现蛇怪类和蜈蚣精类
攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法
定义名为mon的包存怪物类,蛇怪类,蜈蚣精类和测试类
class Monster:
def __init__(self,name,health_value,attack_power):
self.name=name
self.health_value=health_value
self.attack_power=attack_power
print(f"怪物{self.name}展开攻击")
print(f"当前生命值是:{self.health_value}")
print(f"攻击力是:{self.attack_power}")
def attack(self):
print("")
@abstractmethod
def move(self):
print("")
class Basilisk(Monster):
def enrich_blood(self):
if self.health_value < 10:
print(f"实施大蛇补血术。。。。。,当前生命值是:{self.health_value+20}")
def move(self):
print("我是蛇怪,我走S型路线")
class Centipede(Monster):
def move(self):
print("我是蜈蚣精,御风飞行")
b1=Basilisk('蛇妖甲',5,20)
b1.enrich_blood()
b1.move()
print("================================================")
c1=Centipede('蜈蚣乙',60,15)
c1.move()