zoukankan      html  css  js  c++  java
  • 类与类之间的关系

    设计模式在程序设计上有着很重要的作用,使用设计模式可以使得代码更容易被理解,使得代码更规范,真正实现工程化。

    一、用UML表示一个类


    类图一般是三行的结构:

    类名称
    属性:格式(可见性 名称:类型[=缺省值])
    方法:格式(可见性 名称(参数列表)[返回类型])
    注:在Visio中的画的类图中使用的是C#的数据类型,与Java的略有差别。
    二、类与类之间的关系
    类与类之间主要有6种关系,包括依赖,关联,聚合,组合,继承,实现。他们的耦合度是一次增强的。

    1、依赖(Dependency)
        依赖主要体现了一种使用关系,两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,主要体现为依赖关系。

        依赖关系主要有3种表现形式:(以类A中使用了类B为例)

    类B是作为类A的方法参数
    类B是类A的方法中的局部变量
    在类A中调用类B的静态方法

    在依赖中使用的是“虚线+箭头”。


    public class Student {
    public void read(Book book){
    System.out.println("读的书是:" + book.getName());
    }

    public void eat(Food food){
    System.out.println("吃的是:" + food.getName());
    }
    }


    2、关联(Association)
    关联主要体现的是一种对应关系,两个相对独立的对象,当一个对象的实例与另一个对象的实例存在固定的对应关系时,这两个对象之间为关联关系。通常是将一个类的对象作为另一个类的成员变量。

    关联关系的分类:

    单向关联
    双向关联

    (单向关联)

    (双向关联)


    public class Student{
    private String id;
    private ClassName className;

    public Student(String id){
    this.id = id;
    this.className = new ClassName();
    }
    }


    3、聚合(Aggregation)
    聚合是关联关系的一种,表现了一种弱的“拥有”关系,关联关系的对象之间是相互独立的,但是聚合关系的对象之间存在着一种包容关系,体现的是A对象可以包容B对象,但是B对象不是A对象的一部分。他们之间是“整体-个体”的关系。

    成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。


    public class People{
    private Student student;
    private Worker worker;
    private Farmer farmer;

    public People(Student student, Worker worker, Farmer farmer){
    this.student = student;
    this.worker = worker;
    this.farmer = farmer;
    }
    }


    4、组合(Composition)
        组合是一种强的“拥有”关系,组合中的类之间是“整体-部分”的关系,“整体”负责“部分”的生命周期,“部分”和“整体”的生命周期是一样的,“部分”单独存在是没有任何意义的。通常在整体类的构造方法中直接实例化成员类。


    public class Bird{
    private Wing wing;

    public People(){
    wing = new Wing();
    }


    5、继承(Generalization)
       继承表示的是类与类之间或者接口与接口之间的父子关系,在java中使用的是extends关键字。


    public class Bird extends Animal{

    }


    6、实现(Implementation)
       实现表示的是一个类实现一个或者多个接口,在java中使用的是implements关键字。


    public class Bird implements Animal{

    }

    ---------------------
    作者:zhiyong_will
    来源:CSDN
    原文:https://blog.csdn.net/google19890102/article/details/44903645
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    作为一名JAVA程序员应该有怎样的就业思维
    Html +++++css总结
    spring知识点全部复习
    Spring注解问题,[action中注入service失败
    VMware中Ubuntu18配置静态IP地址
    MySQL5.7修改登录密码的几种方式
    MySQL忘记root密码
    Windows安装Redis
    Java两个整数相除保留n位小数
    Java四舍五入保留n位小数的常用写法
  • 原文地址:https://www.cnblogs.com/gaogch/p/10687206.html
Copyright © 2011-2022 走看看