注:在Visio中的画的类图中使用的是C#的数据类型,与Java的略有差别。
类与类之间主要有6种关系,包括依赖,关联,聚合,组合,继承,实现。他们的耦合度是一次增强的。
依赖主要体现了一种使用关系,两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,主要体现为依赖关系。
依赖关系主要有3种表现形式:(以类A中使用了类B为例)
在依赖中使用的是“虚线+箭头”。
publicclassStudent{publicvoidread(Bookbook){System.out.println("读的书是:"+book.getName());}publicvoideat(Foodfood){System.out.println("吃的是:"+food.getName());}}2、关联(Association)关联主要体现的是一种对应关系,两个相对独立的对象,当一个对象的实例与另一个对象的实例存在固定的对应关系时,这两个对象之间为关联关系。通常是将一个类的对象作为另一个类的成员变量。
关联关系的分类:
(单向关联)
(双向关联)
publicclassStudent{privateStringid;privateClassNameclassName;publicStudent(Stringid){this.id=id;this.className=newClassName();}}3、聚合(Aggregation)聚合是关联关系的一种,表现了一种弱的“拥有”关系,关联关系的对象之间是相互独立的,但是聚合关系的对象之间存在着一种包容关系,体现的是A对象可以包容B对象,但是B对象不是A对象的一部分。他们之间是“整体-个体”的关系。
成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。
publicclassPeople{privateStudentstudent;privateWorkerworker;privateFarmerfarmer;publicPeople(Studentstudent,Workerworker,Farmerfarmer){this.student=student;this.worker=worker;this.farmer=farmer;}}4、组合(Composition)组合是一种强的“拥有”关系,组合中的类之间是“整体-部分”的关系,“整体”负责“部分”的生命周期,“部分”和“整体”的生命周期是一样的,“部分”单独存在是没有任何意义的。通常在整体类的构造方法中直接实例化成员类。
publicclassBird{privateWingwing;publicPeople(){wing=newWing();}5、继承(Generalization)继承表示的是类与类之间或者接口与接口之间的父子关系,在java中使用的是extends关键字。
publicclassBirdextendsAnimal{}6、实现(Implementation)实现表示的是一个类实现一个或者多个接口,在java中使用的是implements关键字。