面向对象,继承封装的应用

使用面向对象思想,利用封装和继承书写代码 

1)⼩学⽣:
属性:姓名、学号、年龄、性别
⾏为: 学习 打架
2)中学⽣:
属性:姓名、学号、年龄、性别
⾏为: 学习 谈恋爱
3)⼤学⽣:
属性: 姓名、学号、年龄、性别
⾏为: 学习 打游戏
测试类中: 创建⼩学⽣对象、调⽤学习的⽅法
打印内容为: xx 学习的内容为:语⽂ 数学 英语
创建中学⽣对象 、调⽤学习的⽅法
打印内容为:xx 学习的内容为:语数外 ⽣物化 史地政
创建⼤学⽣对象 、调⽤学习的⽅法:
打印内容为: 逃课中。。。。。。
class Student:
    def __init__(self,name,sno,age,sex):
        self.name = name
        self.sno = sno
        self.age = age
        self.sex = sex

    # 学习
    def study(self,subject):
        print(f"{self.name}学习的内容为:{subject}")

class PrimaryStudent(Student):
    def fight(self):
        print(f"{self.name}在外面打架")

class MiddleStudent(Student):
    def amativeness(self):
        print(f"{self.name}正在谈恋爱")

class CollegeStudent(Student):
    def study(self):
        print("逃课中。。。。。。。")

    def play_game(self):
        print(f"{self.name}在打英雄联盟")

# 小学生对象
ps = PrimaryStudent("tom","20200601",18,"男")
ps.study("语文 数学 英语")
ps.fight()

# 中学生对象
ms = MiddleStudent("the bug","20200602",19,"女")
ms.study("语数外 生物化 史地政")
ms.amativeness()

# 大学生对象
cs = CollegeStudent("the shy","20200603",20,"男")
cs.study()
cs.play_game()
2、主⼈杨夫⼈ 向客⼈ 李⼩姐介绍⾃⼰家的宠物狗和宠物猫
 宠物狗:
    暱称是:⻉⻉
    年龄是:2
    性别:雌
    会两条腿⾏⾛的才艺
宠物猫
   暱称是:花花
   年龄是 1
   性别是:雄
   会装死的才艺
class Animal:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

class Dog(Animal):
    def __str__(self):
        return f"""
                宠物狗:
                   暱称是:{self.name}
                   年龄是:{self.age}
                   性别:{self.sex}
                   会两条腿行走的才艺
                """
class Cat(Animal):
    def __str__(self):
        return f"""
                宠物猫:
                   暱称是:{self.name}
                   年龄是:{self.age}
                   性别:{self.sex}
                   会装死的才艺
                """

class Person:
    def __init__(self,host,guest):
        self.host = host
        self.guest = guest
    def show(self):
        print(f"主人{self.host}向客人{self.guest}介绍自己家的宠物猫,宠物狗")

dog = Dog("贝贝",2,"雌")
cat = Cat("花花",2,"雄")
person = Person("杨夫人","李小姐")
person.show()
print(dog,cat)

3、设计⼀个Person,包含姓名、年龄和性别三个私有成员属性,另外Person类还包含males和females两个私有类属性,⽤来记录男⽣和⼥⽣的数量, 可以通过number_male和number_female两个公有类⽅法获取males和females两个私有类属性的值。⾃⼰完成Person类的设计,然后实例化多个Person的对象, 分别统计男⼥的⼈数

class Person:
    __males = 0   # 私有类属性
    __females = 0  # 私有类属性
    def __init__(self,name,age,sex):
        self.__name = name
        self.__age = age
        self.__sex = sex
        if self.__sex == '男':
            self.__class__.__males += 1    # __class__ 当前对象所处的类,然后调用类属性
        else:
            self.__class__.__females += 1
    @classmethod   # 类方法装饰器
    def number_males(cls):
        print(cls.__males)
    @classmethod
    def number_females(cls):
        print(cls.__females)

    # 析构函数,删除,对应减一
    def __del__(self):
        if self.__sex == '男':
            self.__class__.__males -= 1
        else:
            self.__class__.__females -= 1

p1 = Person('tom',18,'男')
p2 = Person('tom1',17,'女')
p3 = Person('tom2',19,'男')
p4 = Person('tom3',18,'男')
p5 = Person('tom4',18,'女')
p6 = Person('tom5',17,'男')
p7 = Person('tom5',20,'女')
p8 = Person('tom6',18,'男')
p9 = Person('tom7',21,'男')
Person.number_males()
Person.number_females()
.4、编写⼀个简单的⼯资管理程序,系统可以管理以下四类⼈:⼯⼈(worker)、销 售员(salesman)、经理(manager)、销售经理(salemanger)。 所有的员⼯都具 有员⼯号,姓名,⼯资等属性,有设置姓名,获取姓名,获取员⼯号,计算⼯资等
⽅法。 1)⼯⼈:⼯⼈具有⼯作⼩时数和时薪的属性,⼯资计算法⽅法为⼯作⼩时 数时薪。 2)销售员:具有销售额和提成⽐例的属性,⼯资计算⽅法为销售额提成 ⽐例。 3)经理:具有固定⽉薪的属性,⼯资计算⽅法为固定⽉薪。 4)销售经理: ⼯资计算⽅法为销售额*提成⽐例+固定⽉薪。 请根据以上要求设计合理的类,完 成以下功能: 1)添加所有类型的⼈员 2)计算⽉薪 3)显示所有⼈⼯资情况
# -*- coding: utf-8 -*- 
# @File : 工资管理系统.py
# 描述 : 
# @Time : 2020/6/6 13:00 
# @Author : 崔
# @versions : 1.0

class Staff:
    def __init__(self,id,name):
        self.__id = id
        self.__name = name
        self.wage = 0

    @property
    def get_name(self):
        return self.name

    @get_name.setter   # 可写属性 先定义读 才能定义写
    def set_name(self):
        return self.name

    @property  # 可读
    def get_id(self):
        return self.id
    def Calculate_salary(self):
        return self.wage

class Worker(Staff):
    def __init__(self,id,name,hour_num,hour_wage):
        """
        :param id: 工号
        :param name: 姓名
        :param hour_num: 工作小时数 
        :param hour_wage:  时薪
        """
        super().__init__(id,name)
        self.hour_num = hour_num
        self.hour_wage = hour_wage

    def Calculate_salary(self):
        self.wage = self.hour_num * self.hour_wage
        return self.wage

class Salesman(Staff):
    def __init__(self,id,name,sales,sales_percentage):
        """
        :param sales: 销售额
        :param sales_percentage: 提成比例,小数 
        """
        super().__init__(id,name)
        self.sales = sales
        self.sales_percentage = sales_percentage

    def Calculate_salary(self):
        self.wage = self.sales * self.sales_percentage
        return self.wage

class Manager(Staff):
    def __init__(self,id,name,month_money):
        """
        :param month_money: 月薪
        """
        super().__init__(id,name)
        self.month_money = month_money

    def Calculate_salary(self):
        self.wage = self.month_money
        return self.wage

class Salemanger(Staff):
    def __init__(self,id,name,month_money,sales,sales_percentage):
        """
        :param month_money: 月薪
        :param sales: 销售额
        :param sales_percentage: 提成,小数
        """
        super().__init__(id,name)
        self.month_money = month_money
        self.sales = sales
        self.sales_percentage = sales_percentage

    def Calculate_salary(self):
        self.wage = self.sales * self.sales_percentage + self.month_money
        return self.wage

worker = Worker("20200601","小明",10,300)
salesman = Salesman("20200701","Jack",8000,0.15)
manager = Manager("20200801","Tom",10000)
salemanger = Salemanger("20201111","shy",6000,20000,0.2)
m1 = worker.Calculate_salary()
m2 = salesman.Calculate_salary()
m3 = manager.Calculate_salary()
m4 = salemanger.Calculate_salary()


print(f"{worker.name}:{m1}\n{salesman.name}:{m2}\n{manager.name}:{m3}\n{salemanger.name}:{m4}")


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章