本章比较面向过程和面向对象的编程实践,涵盖了类和对象的基本概念,并讨论了属性、方法、封装和数据隐藏、__init__函数(类似于构造函数)、访问器、复制器,学习如何使用UML对类进行建模,以及如何在特定问题中查找类。
#1Pet类
class Pet:
def __init__(self,name,animal_type,age):
self.__name=name
self.__animal_type=animal_type
self.__age=age
def set_name(self,name):
self.__name=name
def set_animal_type(self,animal_tyoe):
self.__animal_type=animal_tyoe
def set_age(self,age):
self.__age=age
def get_name(self):
return self.__name
def get_animal_type(self):
return self.__animal_type
def get_age(self):
return self.__age
def main():
pet=Pet('Tom','Cat',12)
print(pet.get_name()+" "+pet.get_animal_type()+" "+str(pet.get_age()))
pet.set_name('Jerry')
pet.set_animal_type('Mouse')
pet.set_age(12)
print(pet.get_name() + " " + pet.get_animal_type() + " "+ str(pet.get_age()))
if __name__=="__main__":
main()
#2Car类
class Car:
def __init__(self,year_model,make):
self.__year_model=year_model
self.__make=make
self.__speed=0
def accelerate(self):
self.__speed+=5
def brake(self):
self.__speed-=5
def get_speed(self):
return self.__speed
def main():
car=Car('Carriage','My neighbour')
for i in range(5):
car.accelerate()
print(car.get_speed())
for i in range(5):
car.brake()
print(car.get_speed())
if __name__=="__main__":
main()
#3Information(个人信息)类
class Information:
def __init__(self,name,address,age,phone):
self.__name=name
self.__address=address
self.__age=age
self.__phone=phone
def set_name(self,name):
self.__name=name
def set_address(self,address):
self.__address=address
def set_age(self,age):
self.__age=age
def set_phone(self,phone):
self.__phone=phone
def get_name(self):
return self.__name
def get_address(self):
return self.__address
def get_age(self):
return self.__age
def get_phone(self):
return self.__phone
def main():
p1=Information('Tom','England',18,'123456789')
p2=Information('Jack','American',20,'123456765')
p3=Information('Bob','Russian',20,'213132113')
if __name__=="__main__":
main()
#4Employee(员工)类
class Employee:
def __init__(self,name,id,dep,pos):
self.__name=name
self.__id=id
self.__dep=dep
self.__pos=pos
def __str__(self):
return "Name:" + self.__name + " Id:" + self.__id + " Department:" + self.__dep + " Position:" + self.__pos
def main():
e=[]
e.append(Employee('Susan Meyers','47899','Accounting','Vice President'))
e.append(Employee('Mark Jones','39119','IT','Programmer'))
e.append(Employee('Joy Rogers','81774','Manufacturing','Engineer'))
for i in e:
print(i.__str__())
if __name__=="__main__":
main()
#5RetailItem类
class RetailItem:
def __init__(self,des,unit,price):
self.__des=des
self.__unit=unit
self.__price=price
def __str__(self):
return "Description:"+self.__des+" Unit:"+str(self.__unit)+" Price"+str(self.__price)
def main():
r=[]
r.append(RetailItem('Jacket',12,59.95))
r.append(RetailItem('Designer Jeans',40,34.95))
r.append(RetailItem('Shirt',20,24.95))
for i in r:
print(i)
if __name__=="__main__":
main()
#6病人计费
class Patient:
def __init__(self,name,middle_name,surname,address,city,state,postcode,tel_number,emergency_contact,emergency_contact_tel_number):
self.__name=name
self.__middle_name=middle_name
self.__surname=surname
self.__address=address
self.__city=city
self.__state=state
self.__postcode=postcode
self.__tel_number=tel_number
self.__emergency_contact=emergency_contact
self.__emergency_contact_tel_number=emergency_contact_tel_number
def get_name(self):
return self.__name
def get_middle_name(self):
return self.__middle_name
def get_surname(self):
return self.__surname
def get_address(self):
return self.__address
def get_city(self):
return self.__city
def get_state(self):
return self.__state
def get_postcode(self):
return self.__postcode
def get_tel_number(self):
return self.__tel_number
def get_emergency_contact(self):
return self.__emergency_contact
def get_emergency_contact_tel_number(self):
return self.__emergency_contact_tel_number
def set_name(self, name):
self.__name = name
def set_middle_name(self, middle_name):
self.__middle_name = middle_name
def set_surname(self, surname):
self.__surname = surname
def set_address(self, address):
self.__address = address
def set_city(self, city):
self.__city = city
def set_state(self, state):
self.__state = state
def set_postcode(self, postcode):
self.__postcode = postcode
def set_tel_number(self, tel_number):
self.__tel_number = tel_number
def set_emergency_contact(self, emergency_contact):
self.__emergency_contact = emergency_contact
def set_emergency_contact_tel_number(self, emergency_contact_tel_number):
self.__emergency_contact_tel_number = emergency_contact_tel_number
class Procedure:
def __init__(self,name,date,executor,expense):
self.__name=name
self.__date=date
self.__executor=executor
self.__expense=expense
def set_name(self, name):
self.__name = name
def set_date(self, date):
self.__date = date
def set_executor(self, executor):
self.__executor = executor
def set_expense(self, expense):
self.__expense = expense
def get_name(self):
return self.__name
def get_date(self):
return self.__date
def get_executor(self):
return self.__executor
def get_expense(self):
return self.__expense
def main():
p=Patient('Donald Trump','Donald','Trump','Columbia University','New York','New York','10041 NY 212','1234','Joe Biden','321')
proc=[]
proc.append(Procedure('Physical Exam','Today\'s date','Dr.Irvine',250.00))
proc.append(Procedure('X-ray','Today\'s date','Dr.Jamison',500.00))
proc.append(Procedure('Blood test','Today\'s date','Dr.Smith',200.00))
print(p.get_name())
print(p.get_middle_name())
print(p.get_surname())
print(p.get_address())
print(p.get_city())
print(p.get_state())
print(p.get_postcode())
print(p.get_tel_number())
print(p.get_emergency_contact())
print(p.get_emergency_contact_tel_number())
sum_=0
for i in proc:
sum_+=i.get_expense()
print("Total expense:", sum_)
if __name__=="__main__":
main()
#7员工管理系统
import pickle
class Employee:
def __init__(self,name,id,dep,pos):
self.__name=name
self.__id=id
self.__dep=dep
self.__pos=pos
def __str__(self):
return "Name:" + self.__name + " Id:" + self.__id + " Department:" + self.__dep + " Position:" + self.__pos
def set_name(self,name):
self.__name=name
def set_id(self,id):
self.__id=id
def set_dep(self,dep):
self.__dep=dep
def set_pos(self,pos):
self.__pos=pos
def read_inf():
file=open('inf.dat','rb')
try:
dic = pickle.load(file)
except IOError:
dic=dict()
file.close()
return dic
def write_inf(dic):
file=open('inf.dat','wb')
pickle.dump(dic,file)
file.close()
def looking(dic):
id=input("Please enter ID from employee:")
if id in dic: print(dic[id].__str__())
else: print("This employee non-exist")
def adding(dic):
id=input("Please enter the id:")
if id in dic:
print("This person is existing")
return
name=input("Please enter the name:")
dep=input("Please enter the department:")
pos=input("Please enter the position:")
one=Employee(name, id, dep, pos)
dic[id]=one
def editing(dic):
id=input("Please enter the id:")
if id not in dic:
print("This employee is non-existing")
return
one=dic[id]
name = input("Please enter the name:")
one.set_name(name)
dep = input("Please enter the department:")
one.set_dep(dep)
pos = input("Please enter the position:")
one.set_pos(pos)
def deleting(dic):
id=input("Please enter id from employee:")
if id in dic:
del dic[id]
def main():
Flag=True
dic = dict()
while Flag:
dic=read_inf()
print("******-Looking for an employee please enter :1-******")
print("******-Adding new employee please enter :2-******")
print("******-Editing information from employee please enter :3-******")
print("******-Deleting a employee please enter :4-******")
print("******-Exiting please enter :0-******")
choice=input()
if choice=='0':Flag=False
elif choice=='1':looking(dic)
elif choice=='2':adding(dic)
elif choice=='3':editing(dic)
elif choice=='4':deleting(dic)
else: continue
write_inf(dic)
if __name__=="__main__":
main()
#8收银机
class RetailItem:
def __init__(self,des,unit,price):
self.__des=des
self.__unit=unit
self.__price=price
def __str__(self):
return "Description:"+self.__des+" Unit:"+str(self.__unit)+" Price"+str(self.__price)
def get_price(self):
return self.__price
class CashRegister:
def __init__(self):
self.__lis=[]
def purchase_item(self,retail_item):
self.__lis.append(retail_item)
def get_total(self):
sum=0
for i in self.__lis:
sum+=i.get_price()
return sum
def show_item(self):
for i in self.__lis:
print(i)
def clear(self):
self.__lis.clear()
def main():
c=CashRegister()
r=[]
r.append(RetailItem('Jacket',12,59.95))
r.append(RetailItem('Designer Jeans',40,34.95))
r.append(RetailItem('Shirt',20,24.95))
for i in r:
c.purchase_item(i)
c.show_item()
print(f'{c.get_total():0.2f}')
c.clear()
if __name__=="__main__":
main()
#9Trivia(问答)游戏
class Question:
def __init__(self,problem,key1,key2,key3,key4,key):
self.__problem=problem
self.__key1=key1
self.__key2=key2
self.__key3=key3
self.__key4=key4
self.__key=key
def get_problem(self): return self.__problem
def get_key1(self): return self.__key1
def get_key2(self): return self.__key2
def get_key3(self): return self.__key3
def get_key4(self): return self.__key4
def get_key(self): return self.__key
def set_problem(self, problem): self.__problem = problem
def set_key1(self, key1): self.__key1 = key1
def set_key2(self, key2): self.__key2 = key2
def set_key3(self, key3): self.__key3 = key3
def set_key4(self, key4): self.__key4 = key4
def set_key(self, key): self.__key = key
def main():
pass
if __name__=="__main__":
main()