zoukankan      html  css  js  c++  java
  • 面向对象的核心特征之:聚合/组合、接口/实现、抽象

    1.聚合/组合 Aggregation/Composition

    首先继承(Inheritance 它表述的是一种“is a”的关系,即一个类继承了另一个类的特征,比如:A car is a vehicle(汽车是一种交通工具)   A student is a person(学生是一类人)
    聚合(Aggregation)它表述的是一种“has a”的关系,即一个对象是另一个对象的一部分,比如:A car has wheels (汽车有轮子)  A person has legs (人有腿)
    聚合一个对象包含一组其他对象。如,大学 是由学生、老师组成的
    Aggregation relationships are transitive 聚合是可传递的。如,if A contains B an B contains C, then A contains C
    Aggregation relationships are asymmetric 聚合是不对称的。如,If A contains B, then B does not contain A

    组合:

    聚合关系的一个变种,称为组合。整体控制着部分的生命。

    即整体与部分之间是命运相关体,比如手掌与手指(手掌没了手指自然就不存在了)
    部分对象只能存在于整体对象之中,整体对象控制部分对象的生命周期
    注意:有些时候,聚合与组合的关系不是很明确。  如,房间 与 门(这时候就统一认为是聚合即可,当关系不明确的时候使用聚合即可)

    2.接口/实现 Interface /Implementation

    生活中的例子,比比皆是
    电视机接口 、水管接口等,举例:汽车里面有哪些接口?
    对于软件系统
    软件系统的内部是由大量的互相关联的类构成的,当对其中某一个类的局部进行修改的时候,不能影响其它的类
    接口 interface
    describe how users of the class interact with the class 描述一个类的用户如何与这个类交互
    实现 Implementation
    完成接口所定义的功能,如类、构件等完成的任务
    A change to the implementation should not require a change to the user's code.(对实现的修改,不需要对用户代码进行更改。)
    both the user and the implementation must conform to the interface specification(用户和实现都必须符合接口规范)
      举例如下图:

     3.抽象 Abstraction

     定义:“抽象表示一个对象与其他所有对象相区别的基本特征,因此提供了同观察者角度有关的清晰定义的概念界限。 ”

    简单地讲,抽象(abstraction)就是过滤掉对象的一部分特性和操作,直到只剩下你所需要的属性和操作。

    抽象是一种思维方式、一种思维能力,“抽取比较像的部分出来”
    客观世界的事物由各种各样的实体(对象)构成
    每个对象都有各自的内部状态和运动(状态)规律
    根据对象的属性和运动规律的相似性可以将对象分类
       复杂对象由相对简单的对象组成
       不同对象的组合及其之间的相互作用和联系构成了系统
       对象间的相互作用通过消息传递,对象根据所接收到的消息做出自身的反应
    “继承” 的强大就在于它的抽象和组织技术
    毛主席提出的“统一战线”、“论持久战”,都是高度抽象的结果
    抽象错了,危害很大!如张国涛的“南下抗日!

    抽象与具体的比较:

    举例:

    你要到飞机场去。坐进出租车,该如何描述?
    A: 师傅,请送我去飞机场!(抽象)
    B: 师傅,走!出门左拐、直行、过桥、右转、直行、红绿灯左拐后继续直行…..(具体)
    抽象是面向对象领域发现类的主要方法
     

     




     



     

  • 相关阅读:
    模块
    time/datetime/random/string/os/sys/shutil/zipfile/tarfile
    模块
    模块
    模块
    2.1
    1.4
    生成器 迭代器
    闭包 装饰器
    函数
  • 原文地址:https://www.cnblogs.com/cdlyy/p/12359362.html
Copyright © 2011-2022 走看看