一、实验目的与要求
(一)目的
面向对象程序设计的方法是从日常处理问题思路中形成的一种新的设计方法。通过了解对象、类、封装、继承、方法、构造函数和析构函数等面向对象的程序设计的基本概念,掌握Python类的定义、类的方法、类的继承等,为解决复杂现实问题,培养编程能力及工程应用技能,打下坚实的基础。
(二)要求
1.了解面向对象的程序设计思想
2.掌握Python对象、类、封装、继承、方法、构造函数和析构函数等.
3.掌握Python的类的继承与组合
二、实验内容与步骤
1.设计一个Circle类来表示园,这个类包含圆的半径以及求周长和面积的函数。再使用这个类创建半径为1~100的圆,并计算出相应的周长及面积。
2.编写程序并测试,有一个汽车类Vehicle,类中的私有数据成员为车轮个数wheels和车重weight;小车类Car是汽车类vehicle派生类,其中包含载客人数passenger_load,默认4人;卡车类Truck是汽车类vehicle派生类,其中包含载客人数passenger_load和载重量payload。
提示:编写类时要使用get和set方法,Vehicle类定义display()显示车轮和重量,Car和Truck中要对display()进行同名覆盖。
3.编写一个学生和教师数据输入和输出的程序。学生数据包括编号、姓名、班号、和成绩;教师的数据含有编号、姓名、职称和部门。要求设计一个person类,作为学生数据操作类student和教师数据操作类teacher的基类。
三、实验代码清单
class Circle:
def __init__(self, radius):
self.radius = radius
def areas(self):
return self.radius ** 2
c = Circle(16)
print(c.areas())
class Vehicle:
def __init__(self, wheels, weight):
self.__wheels = wheels
self.__weight = weight
def display(self):
print('车轮个数为' + str(self.__wheels))
print('车重为' + str(self.__weight))
def set_wheels(self, wheels):
self.__wheels = wheels
def set_weight(self, weight):
self.__weight = weight
def get_wheels(self):
return self.__wheels
def get_weight(self):
return self.__weight
class Car(Vehicle):
def __init__(self, wheels, weight):
self.__wheels = wheels
self.__weight = weight
self.__passenger_load = 4
def display(self):
print('车轮个数为:' + str(self.__wheels), end=',')
print('车重为' + str(self.__weight), end=',')
print('最大载客量为' + str(self.__passenger_load))
def set_passenger_load(self):
self.__passenger_load = 4
def get_passenger_load(self):
return self.__passenger_load
class Truck(Vehicle):
def __init__(self, wheels, weight, passenger_load, payload):
self.__wheels = wheels
self.__weight = weight
self.__passenger_load = passenger_load
self.__payload = payload
def display(self):
print('车轮个数为:' + str(self.__wheels), end=',')
print('车重为' + str(self.__weight), end=',')
print('最大载客量为' + str(self.__passenger_load), end=',')
print('最大载重量为' + str(self.__payload))
def set_passenger_load(self, passenger_load):
self.__passenger_load = passenger_load
def set_payload(self, payload):
self.__payload = payload
def get_passenger_load(self):
return self.__passenger_load
def get_payload(self):
return self.__payload
car = Car(4, '8t')
car.display()
car.set_weight('16t')
print('我的新体重为'+car.get_weight())
truck = Truck(12, '30t', 2, '15t')
truck.display()
class Person:
def __init__(self, number, name):
self._number = number
self._name = name
def set_number(self, number):
sefl._number = number
def set_name(self, name):
self._name = name
def get_number(self):
return self._number
def get_name(self):
return self._name
def display(self):
print('编号:' + str(self._number), end=',')
print('姓名:' + str(self._name), end=',')
class Student(Person):
def __init__(self, number, name, classNum, grade):
Person.__init__(self, number, name)
self._classNum = classNum
self._grade = grade
def set_classNum(self, classNum):
self._classNum = classNum
def set_grade(self, grade):
self._grade = grade
def get_classNum(self):
return self._classNum
def get_grade(self):
return self._grade
def display(self):
print('编号:' + str(self._number), end=',')
print('姓名:' + str(self._name), end=',')
print('班级:' + str(self._classNum), end=',')
print('成绩:' + str(self._grade))
class Teacher(Person):
def __init__(self, number, name, title, department):
Person.__init__(self, number, name)
self._title = title
self._department = department
def set_title(self, title):
self._title = title
def set_department(self, department):
self._department = department
def get_title(self):
return self._title
def get_department(self):
return self._department
def display(self):
print('编号:' + str(self._number), end=',')
print('姓名:' + str(self._name), end=',')
print('职称' + str(self._title), end=',')
print('部门:' + str(self._department))
student = Student(111, '张三', '1班', '99分')
student.display()
student.set_classNum('2班')
print('我修改以后的班级是' + str(student.get_classNum()))
teacher = Teacher(222,'李四','教授','材料学院')
teacher.display()
四、实验运行结果