一、UML类图的表明办法
在UML中,类运用包含类名、特点和操作且带有分割线的矩形来表明。
(1)类名:是一个字符串。
(2)特点:指类的成员变量。UML表明格局:[可见性]特点名:类型[=默认值]
例如-name:String
(3)操作:是类的成员办法。UML表明格局:[可见性]称号(参数列表)[:回来类型]
例如:+display():void
可见性表明该特点对类外的元素是否可见,包含公有(public)、私有(private)、受保护(protected)和缺省四种,在类图中分别用符号+、-、#、~表明。
银行账户类的UML表明:
二、类之间的联络
类与类之间主要有6种联络,耦合度从弱到强摆放依次是:依靠、相关、聚合、组合、承继、完成。
1、依靠联络
依靠联络是一种运用联络,它是目标之间耦合度最弱的一种相关办法,是临时性的相关。是use-a的联络。
依靠联络表现在,某个类的办法通过局部变量、办法的参数或者对静态办法的调用来访问另一个类(被依靠类)中的某些办法。
办法履行完毕,就没有联络。
class Cat {
public static void eat(){
System.out.println("猫在吃喵粮");
}
}
class User {
//运用形参办法发生依靠联络
public void user1(Cat cat){
cat.eat();
}
//运用局部变量发生依靠联络
public void user2(){
Cat cat = new Cat();
cat.eat();
}
//运用静态变量发生依靠联络
public void user3(){
Cat.eat();
}
}
在UML类图中,依靠联络运用带箭头的虚线来表明,箭头从运用类指向被依靠的类。
2、相相联络
相相联络是目标之间的一种引证联络,用于表明一个类目标与另一个类目标之间的联络,如教师和学生、师傅和徒弟、客户和订单等。
在代码中,通常将一个类的目标作为另一个类的成员变量来完成相相联络。
在整个目标的生命周期,一直有联络。
public class Customer {
public Address address;
public void setAddress (Address address){
this.address= address;
}
public Address getAddress (){
return address;
}
}
在UML类图中,双向的相关用带两个箭头或者没有箭头的实线来表明,单向的相关用带一个箭头的实线来表明,箭头从运用类指向被相关的类。
相关、聚合和组合联络仅仅是在语义上有所区别,所谓语义便是指上下文环境、特定情形等,它们在编程语言中的表现却是基本相同的。
3、聚合联络
聚合联络是相相联络的一种特例,是强相相联络,是全体和部分之间的联络,即has-a的联络。
聚合联络也是通过成员目标来完成的,其间成员目标是全体目标的一部分,但是成员目标能够脱离全体目标而独立存在。
例如轿车由引擎、轮胎以及其它零件组成,假如轿车毁了,它的引擎和轮胎还能够安装在其他轿车上。
public class Team {
public Person person;
public Team(Person person){
this.person = person;
}
}
//Team 由 Person 组成,其生命周期不同,全体不存在了,部分依然存在,当前Team解散了,人还在,还能够加入其他组。
在UML类图中,聚合联络用带空心菱形的实线来表明,菱形指向全体。
4、组合联络
组合联络是相相联络的一种,表明类之间的全体与部分的联络,但它是一种更强烈的聚合联络,是contains-a 联络。
在组合联络中,全体目标能够控制部分目标的生命周期,一旦全体目标不存在,部分目标也将不存在,部分目标不能脱离全体目标而存在。
例如头和嘴,人和人的大脑的联络。
public class Person {
public Head head;
public Body body;
public Arm arm;
public Leg leg;
public Person(){
head = new Head();
body = new Body();
arm=new Arm();
leg=new Leg();
}
}
//head,body,Arm和Leg等组合成People,其生命周期相同,假如全体不存在了,部分也将消亡。
在UML类图中,组合联络用带实心的菱形的实线来表明,菱形指向全体。
5、承继联络
承继联络是目标之间耦合度最大的一种联络。承继联络指的是一个类(称为子类、子接口)承继别的的一个类(称为父类、父接口)的功用,是is-a 的联络。
在UML类图中,承继联络用带空心三角箭头的实线来表明,箭头从子类指向父类,子接口指向父接口。
6、完成联络
完成联络是接口与完成类之间的联络。在这种联络中,类完成了接口中所声明的所有的抽象操作。
interface UserService{}
public class UserServiceImpl implements UserService{}
在UML类图中,完成联络运用带空心三角箭头的虚线来表明,箭头从完成类指向接口。
三、高内聚低耦合
注:现在的软件结构设计,要求高内聚低耦合。
高内聚低耦合,是判断软件设计好坏的标准,主要用于程序的面向目标的设计。
耦合:
便是模块之间的相互依靠程度。
模块之间的耦合度越低,意味着它们的独立性越高,修改一个模块不会影响到其他模块。少运用承继和全局变量。内聚:
一个模块内的元素是否紧密相关,即模块的功用。
高内聚便是模块的功用要尽可能简洁,最好一个模块只完成一个功用。