day 016 面向对象---类与类的关系

---恢复内容开始---

一  依赖关系(最轻的一种关系,在方法中引入另一个类的对象)                    

class Elephant:
    def __init__(self,name):
        self.name=name
    def open(self,ab):  # 依赖关系  
        print("冰箱哥哥%s开门"  % self.name)  #  想要一个冰箱,是哪个冰箱没有指定
        # print(self)
        ab.open_door()  # 引入另一个变量 ab.为引入方式  
# 由外界传递进来⼀个冰箱, 让冰箱开⻔. 这时. ⼤象不⽤背着冰箱到处跑.
# 类与类之间的关系也就不那么的紧密了. 换句话说. 只要是有open_door()⽅法的对 象. 都可以接收运⾏ def jin(self): print(
"我进冰箱了") def close(self,ab): print("冰箱哥哥关门") ab.close_door() class bingxaing: def open_door(self): print("冰箱自己打开们") # print(self) def close_door(self): print("冰箱自己关上了门") alex=Elephant("离散") #大象的名字属性 bx=bingxaing() #创建冰箱对像 alex.open(bx) #调用创建的对象 注意. 此时是把⼀个冰箱作为参数传递进去了. 也就是说. ⼤象可以指定任何⼀个 冰箱 alex.jin() alex.close(bx)

 ⼤象和冰箱之间就是依赖关系. 我⽤着你. 但是你不属于我. 这种关系是最弱的.

二 关联关系, 组合关系,聚合关系

这三个代码在写法上是一样的,但是,从含义上是不一样

1 关联关系 : 两种食物必须是互相关联的,但是在某些特殊情况下是可以更改和更换的

2 聚合关系.

属于关联关系中的⼀一种特例例. 侧重点是xxx和xxx聚合成xxx. 各⾃自有各⾃自的
声明周期. 比如电脑. 电脑⾥里里有CPU, 硬盘, 内存等等. 电脑挂了了. CPU还是好的. 还是
完整的个体

3 组合关系:

属于关联关系中的⼀一种特例例. 写法上差不多. 组合关系比聚合还要紧密. 比
如⼈人的⼤大脑, ⼼心脏, 各个器官. 这些器官组合成⼀一个⼈人. 这时. ⼈人如果挂了了. 其他的东⻄西
也跟着挂了了.

先看看关联关系的例子


class
boy: def __init__(self,name,xingge,girFriend=None): self.name=name self.xingge=xingge self.girFriend=girFriend def yujian(self,girl): self.girFriend=girl def chi(self): if self.girFriend: print("随便吃 %s和%s" % (self.name,self.girFriend.name)) else: print("单身狗,吃什么吃") class girl: def __init__(self,name): self.name = name def chi(self): print("%s在吃饭" % self.name) girl = girl("撒旦") boy=boy("李二","急撒") boy.chi() # 结果 :单身狗,吃什么吃 boy.yujian(girl) boy.chi() # 结果 : 随便吃 李二和撒旦 # boy.girFriend.name # 找到他的女友 # boy.girFriend.chi()

例子二:

class School:
    def __init__(self, name, address, phone):
        self.name = name
        self.address = address
        self.phone = phone
        self.__teach_list = []

    def zhaopin(self, t):
        self.__teach_list.append(t)

    def display(self):
        for el in self.__teach_list:
            print(el.name, el.hobby)




class Teacher:
    def __init__(self, name, gender, salary, hobby, school):
        self.name = name
        self.gender = gender
        self.salary = salary
        self.hobby = hobby

        self.school = school

oldboy_bj = School("北京老男孩", "美丽富饶的沙河", "10086")
oldboy_sh = School("北京老男孩, 上海分校", "上海浦东", "10010")
oldboy_sz = School("北京老男孩, 深圳分校(骑士计划)", "南山区", "10000")


t1 = Teacher("配齐", "", 200000, "上课", oldboy_bj)
t2 = Teacher("太白", "", 150000, "开车", oldboy_bj)
t3 = Teacher("Eggon", "", 123456, "钻研技术", oldboy_sh)
t4 = Teacher("高鑫", "", 45678, "相夫教子", oldboy_sz)
t5 = Teacher("日天", "", 666, "看天", oldboy_sz)


# print(t3.school.address) # 找到老师所在的学校的地址

oldboy_bj.zhaopin(t1)
oldboy_bj.zhaopin(t2)
oldboy_bj.display()

oldboy_sh.zhaopin(t3)

oldboy_sz.zhaopin(t4)
oldboy_sz.zhaopin(t5)

oldboy_sz.display()

三 继承关系  

              子类在不影响⽗类的程序运行的基础上对父类进行的扩充和扩展. 这里.我们可以把父类被称为超类或

者基类. 子类被称为派生类

猜你喜欢

转载自www.cnblogs.com/systemsystem/p/9715903.html
今日推荐