zoukankan      html  css  js  c++  java
  • 005---组合

    组合与重用性

    软件重用的方式除了继承还有另外一种,即组合。

    • 组合:在一个类中以另一个类的对象作为属性,称为组合。组合指的是一种什么有什么的关系。
        #! /usr/bin/env python
        # -*- coding: utf-8 -*-
        # __author__ = "ziya"
        # Date: 2018-08-26
    
        class Person:
            school = 'LuffyCity'
        
            def __init__(self, name, age, sex):
                self.name = name
                self.age = age
                self.sex = sex
        
        
        class Teacher(Person):
            school = 'LuffyCity'
        
            def __init__(self, name, age, sex, level, salary):
                super().__init__(name, age, sex)
                self.level = level
                self.salary = salary
        
            def teach(self):
                print('%s is teaching' % self.name)
        
        
        class Student(Person):
            school = 'LuffyCity'
        
            def __init__(self, name, age, sex, class_time):
                super().__init__(name, age, sex)
                self.class_time = class_time
        
            def learn(self):
                print('%s is learning' % self.name)
        
        
        class Course:
            def __init__(self, course_name, course_price, course_peroid):
                self.course_name = course_name
                self.course_price = course_price
                self.course_peroid = course_peroid
        
            def tell_info(self):
                print('课程名:%s  课程价钱:%s 课程周期:%s ' % (self.course_name, self.course_price, self.course_peroid))
        
        
        # 实例化两个教师
        t1 = Teacher('alex', 18, 'male', 10, 3000)
        t2 = Teacher('egon', 28, 'male', 8, 2000)
        # 实例化一个学生
        s1 = Student('张三', 28, 'famale', '8:30')
        # 实例化两门课程
        python = Course('Python', 8999, '6months')
        linux = Course('Linux', 6666, '3months')
        
        # 把Course的对象,python课程赋值给教师。代表教师教这么课程
        t1.course = python
        t2.course = python
        print('老师%s教的课的名称' % t1.name, t1.course.course_name)
        print('老师%s教的课的价格' % t2.name, t2.course.course_price)
        t1.course.tell_info()  
        
        s1.course = linux
        s1.course.tell_info()  
    
    • 总结:当类之间有显著不同,并且较小的类是较大的类的组件时候,用组合比较好。
  • 相关阅读:
    只需 4 步,手把手教你如何实现滤镜功能
    paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制
    socket网络编程的一些基础知识
    图像处理、模式识别、模式分类、机器视觉推荐图书
    数据挖掘、机器学习和模式识别关系与区别
    Qt4_VS10 程序打包发布
    Qt之多线程
    QT中.pro文件的写法
    高斯定理的证明
    《Linear Algebra and Its Applications》-chaper3-行列式-行列式初等变换
  • 原文地址:https://www.cnblogs.com/xjmlove/p/10321078.html
Copyright © 2011-2022 走看看