面向對象,繼承封裝的應用

使用面向對象思想,利用封裝和繼承書寫代碼 

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}")


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