UML简单介绍—类图详解
类图详解
阅读本文前请先阅读:UML简单介绍—类图这么看就懂了
1、泛化关系
一个动物类:
/**
* 动物类
*/
public class Animal { public String name;//名字
public int age;//年龄 public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
属性的表示方式为:【可见性】【属性名称】:【类型】={缺省值,可选}
方法的表示方式为:【可见性】【方法名称】(【参数列表】):【类型】
如下:

子类Dog:
public class Dog extends Animal{
private String sound = "汪汪";//声音
protected void sleep(){
System.out.println("睡四个小时");
}
public String getSound() {
return sound;
}
}
子类Cat:
public class Cat extends Animal {
private String sound = "喵喵";//声音
protected void sleep(){
System.out.println("睡六个小时");
}
public String getSound() {
return sound;
}
}
类图表示如下:

2、实现关系
动物接口:
/**
* 动物接口
*/
public interface Animal { public void getName();
public void getAge();
}
实现类Dog:
public class Dog implements Animal{
@Override
public void getName() {
System.out.println("我是小汪");
}
@Override
public void getAge() {
System.out.println("我4岁了");
}
}
实现类Cat:
public class Cat implements Animal {
@Override
public void getName() {
System.out.println("我是小喵");
}
@Override
public void getAge() {
System.out.println("我3岁了");
}
}

3、依赖关系
人过河要依赖船,鱼依赖水,动物依赖水、食物和空气等,这些都是依赖关系。
船类:
public class Ferry {
public void move(){
}
}
人依赖船,船类作为参数、属性被类Person在某个method方法中使用。
public class Person {
/**
* 人过河要使用船(依赖船)
*/
public void boating(Ferry ferry){
ferry.move();
}
}

4、关联关系
关联是一种拥有关系,人拥有手机。被拥有者作为拥有者的成员变量存在。
被拥有着:
public class Mobile {
/**
* 手机有看视频功能
*/
public void watchTV(){
}
}
拥有者:
public class Person {
//被拥有者成员变量
private Mobile mobile;
/**
* 人拥有手机可以看视频
*/
public void watchTV(){
mobile.watchTV();
}
}

5、聚合关系
聚合是整个与个体的关系,此时整体和部分是可以分离的。作为一个程序员,每天都和电脑打交道,我们以电脑为例,假设电脑有显示器、主机、键盘组成的。
/**
* 显示器
*/
public class Monitor {
}
/**
* 主机
*/
public class Host {
}
/**
* 键盘
*/
public class keyboard {
}
import javax.swing.*;
public class Computer {
private Monitor monitor;//显示器
private Host host;//主机
private KeyStroke keyStroke;//键盘
public Computer(Monitor monitor, Host host, KeyStroke keyStroke) {
this.monitor = monitor;
this.host = host;
this.keyStroke = keyStroke;
}
public void program(){
System.out.println("开始编程");
}
}

6、组合关系
组合关系:是整体与部分的关系,但部分不能离开整体而单独存在。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。比如大雁有两个翅膀,雁翅无法脱离大雁而单独生存。
/**
* 大雁
*/
public class WildGoose { private Wing wing;//翅膀 public WildGoose(Wing wing) {
wing = new Wing();
}
}
/**
* 翅膀
*/
public class Wing {
}

总合实例:
一个动物类,动物依赖氧气、水、食物;
鸟类继承动物,是泛化关系;
鸟类和翅膀是组合关系;
大雁和鸭继承鸟类,是泛化关系;
大雁实现飞行接口,和雁群是聚合关系;
唐老鸭继承鸭类,是泛化关系,实现讲话接口;

UML简单介绍—类图详解的更多相关文章
- UML简单介绍—类图这么看就懂了
如何看懂类图 1.类图简介 描述类的内部结构和类与类之间的关系,是一种静态结构图. 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关 ...
- UML类图详解_关联关系_一对多
对于一对多的示例,可以想象一个账户可以多次申购.在申购的时候没有固定上限,下限为0,那么就可以使用容器类(container class)来搞,最常见的就是vector了. 下面我们来看一个“一对多” ...
- UML类图详解_关联关系_多对一
首先先来明确一个概念,即多重性.什么是多重性呢?多重性是指两个对象之间的链接数目,表示法是“下限...上限”,最小数据为零(0),最大数目为没有设限(*),如果仅标示一个数目级上下限相同. 实际在UM ...
- UML 类图详解
转载来源:http://blog.csdn.net/shift_wwx/article/details/79205187 可以参考:http://www.uml.org.cn/oobject/2012 ...
- UML类图详解_泛化关系
泛化其实就是继承关系,还是比较简单的,那么我们就把之前有些问题的博客UML类图重新来实现一次. 依旧是这个图 下面我们来看一个例子 Account.h #include <cstdlib> ...
- UML类图详解
下面是类图的实例: (注:飞翔接口那里应为空心三角形) UML中类图实例 接口:空心圆+直线(唐老鸭类实现了‘讲人话’):依赖:虚线+箭头(动物和空气的关系):关联:实线+箭头(企鹅需要知道气候才迁移 ...
- UML类图详解_组合关系
组合关系和聚合关系有一个最大的不同,组合关系中的整体直接掌握部件的生灭,聚合关系中的整体并不具有生灭部件的权力.一旦组合中的整体不存在时,其组合部件也不能单独存在,必须同时消灭.另外,外界也不能直接与 ...
- UML类图详解和示例
ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/UMLDescription UML类图概述 什么是UML ...
- UML类图详解_聚合关系
结合UML关系,以看台和基金来介绍聚合关系 aggregation,是一种特殊的关联关系,既有关联关系的特质,还独有“整体 —— 部分(whole —— part)”的特质. 也就是说,用之前的关联关 ...
随机推荐
- python读写配置文件使用总结与避坑指南
关于今天的内容 最近拿python在写项目部署的相关集成代码,本来两天的工作量,硬是在来回的需求变更中,拖到了一周的时间.今天算是暂时告一段落了.这次由于涉及多个系统的调用和配置参数,代码开发中出现了 ...
- 第四章 JavaScript对象及初始面向对象
创建对象: //方式一 var ower=new Object(); ower.name="长春花"; ower.genera="夹竹挑科 长春花属"; owe ...
- 主题: 002.04 Tkinter 星空大战
为了更加熟练 Tkinter 的应用,决定只用 Tkinter 来写一个游戏,而不是用 Pygame, 在过程中,出了很多很大的问题,最后留了一点已知的问题,不想在花时间去找出来,不过整个程序算跑的没 ...
- 2019牛客全国多校训练四 I题 string (SAM+PAM)
链接:https://ac.nowcoder.com/acm/contest/884/I来源:牛客网 题目描述 We call a,ba,ba,b non-equivalent if and only ...
- Selenium之下拉框操作
下拉框操作: 一般下拉框适用场景:在新增时有下拉框选项,在二级联动或多级联动有下拉(比如:在选择省市县时的多级联动下拉). 下拉框选择都有select的标签属性,存在两个属性select和option ...
- Linux-(2)Linux安装
二.Linux 安装 2.1 物理机安装 使用相关镜像制作软件(软碟通等)制作U盘启动盘即可,按照正常的安装步骤安装即可,一般来说(迷你版本)有线网卡直接会有驱动,无线网卡的驱动需要自行编译或者查找. ...
- 3年Java开发都知道的Redis数据结构和通用命令
Redis的数据结构 Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据结构可以满足不同的应用场景. 五种基础数据结构 String:字符串,是构建其他数据结构的基础 ...
- 这道Java基础题真的有坑!我求求你,认真思考后再回答。
本文目录 一.题是什么题? 二.阿里Java开发规范. 2.1 正例代码. 2.2 反例代码. 三.层层揭秘,为什么发生异常了呢? 3.1 第一层:异常信息解读. 3.2 第二层:抛出异常的条件解读. ...
- 深入解析http协议
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...
- ps命令输出进程状态S后面加号的含义
最近发现一个问题,ps命令输出里面进程状态为S+的含义,网上好多文章都说是表明进程“位于在后台进程组”. 例如下面这个ps命令输出说明: D 不可中断 Uninterruptible sleep (u ...