1.什么是类图
类图(class diagram)描述了模型的静态结构,包括模型中的类的类的内部结构以及于其他类的关系,在结构化设计一个系统的时候类图可以让我们的思路更加清晰。

2.学习类图有什么好处呢?
自我总结:我们从java类图中很清晰看到这个类中的方法,属性,以及实现的接口,继承类,引用其他的对象等等.类图简单 易懂 明了.在查看一些框架源码的时候 因为框架使用很多经典的设计模式

类与类图

类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。

在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。

类的属性即类的数据职责,类的操作即类的行为职责。

基本元素符号:

1. 类(Classes)

类包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。

属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接受的参数,以及返回类型,如下图所示:

2. 包(Package)

包是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,你通常拥有逻辑性的包,它主要用于对你的模型进行组织。你还会拥有物理性的包,它直接转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。

3. 接口(Interface)

接口是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。接口既可用下面的那个图标来表示(上面一个圆圈符号,圆圈符号下面是接口名,中间是直线,直线下面是方法名),也可由附加了<<interface>>的一个标准类来表示。通常,根据接口在类图上的样子,就能知道与其他类的关系。

类之间的关系

一、关联关系

关联关系(Association)是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。

在UML类图中,用实线连接有关联的对象所对应的类,在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性。

在使用类图表示关联关系时可以在关联线上标注角色名。

1.关联关系

public class LoginForm
{private JButton loginButton;……
}
public class JButton
{……
}

2.双向关联

默认情况下,关联是双向的。

public class Customer
{private Product[] products;……
}
public class Product
{private Customer customer;……
}

3.单向关联

类的关联关系也可以是单向的,单向关联用带箭头的实线表示。

public class Customer
{private Address address;……
}public class Address
{……
}

4.自关联

在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。

public class Node
{private Node subNode;……
} 

5.重数性关联

重数性关联关系又称为多重性关联关系(Multiplicity),表示一个类的对象与另一个类的对象连接的个数。在UML中多重性关系可以直接在关联直线上增加一个数字表示与之对应的另一个类的对象的个数。

表示方式 多重性说明
1..1 表示另一个类的一个对象只与一个该类对象有关系
0..* 表示另一个类的一个对象与零个或多个该类对象有关系
1..* 表示另一个类的一个对象与一个或多个该类对象有关系
0..1 表示另一个类的一个对象没有或只与一个该类对象有关系
m..n 表示另一个类的一个对象与最少m、最多n个该类对象有关系 (m<=n)

public class Form
{private Button buttons[];……
}
public class Button
{…
}

6.聚合关系

聚合关系(Aggregation)表示一个整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合关系。

在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。

public class Car
{private Engine engine;public Car(Engine engine){this.engine = engine;}public void setEngine(Engine engine){this.engine = engine;}……
}
public class Engine
{……
}

7.组合关系

组合关系(Composition)也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之间具有同生共死的关系。

在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。在UML中,组合关系用带实心菱形的直线表示。

public class Head
{private Mouth mouth;public Head(){mouth = new Mouth();}……
}public class Mouth
{……
}

8.依赖关系

依赖关系(Dependency)是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。

public class Driver
{public void drive(Car car){car.move();}……
}
public class Car
{public void move(){......}……
}

9.泛化关系

泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示。

在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字、在C++/C#中使用冒号“:”来实现。

public class Person
{protected String name;protected int age;public void move() {……}public void say() {……}
}
public class Student extends Person
{private String studentNo;public void study() {……}
}

10.接口与实现关系

接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现关系(Realization),在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。

public interface Vehicle
{public void move();
}
public class Ship implements Vehicle
{public void move() {……}
}
public class Car implements Vehicle
{public void move() {……}
}

实例说明

某基于Java语言的C/S软件需要提供注册功能,该功能简要描述如下:

用户通过注册界面(RegisterForm)输入个人信息,用户点击“注册”按钮后将输入的信息通过一个封装用户输入数据的对象(UserDTO)传递给操作数据库的数据访问类(DAO),为了提高系统的扩展性,针对不同的数据库可能需要提供不同的数据访问类,因此提供了数据访问类接口,如IUserDAO,每一个具体数据访问类都是某一个数据访问类接口的实现类,如OracleUserDAO就是一个专门用于访问Oracle数据库的数据访问类。

根据以上描述绘制类图。为了简化类图,个人信息仅包括账号(userAccount)和密码(userPassword),且界面类无须涉及界面细节元素。

UML类图工具 亿图:https://www.edrawsoft.cn/edrawmax/uml-lp.html?channel=baidu

Java类图(记录/转)相关推荐

  1. Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图

    文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...

  2. java类图与代码实例

    在 Java编程中,类图是一个非常重要的概念.类图的作用是用来展示类的结构以及类之间的关系.通过类图,可以很方便地展示出对象之间的关系.下面我将使用实例来演示一下我在学习 Java时的类图. 首先我们 ...

  3. eclipse java类图_eclipse中。green UML 自动生成类图

    Green UML和AmaterasUML 两种 一.安装方法: 1.都是先安装GEF 通过eclipse-> install new software安装GEF的网址: http://down ...

  4. Visual Paradigm创建Java类图时如何绘制实线箭头?

    在使用visual paradigm创建类图时 无法选择实线箭头 →,网上搜了很多资料无果 (包过visual paradigm自带的教程),特此记录. 解决方案

  5. java类图_java UML类图的使用-UML基础-火龙果软件工程

    类图 是用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据.学习好类图的绘制,是一位合格的软件工程师应有的技能 ...

  6. 用IntelliJ IDEA看Java类图

    看代码的遇见子类或者接口的实现时,如果有个类图工具就能让我们层次和关系一目了然,如果您的IDE是IntelliJ IDEA,推荐使用其自带的类图功能: 工具版本 社区版不带类图功能,所以请使用完整版, ...

  7. startuml java 类图_【StarUML】类图

    类图是可视化地表现类的属性和方法,以及类与类之间的关系. 1.类 a.类 普通实体类,它有对应的属性和方法: 双击类名,会弹出一些控制按钮: 右边区域,各个图标的含义依次是: 增加类的属性.增加类的操 ...

  8. java类图设计题_试题七阅读下列说明、图以及Java程序。[说明]某订单管理系统的部分UML类图如 - 信管网...

    试题七 阅读下列说明.图以及Java程序. [说明] 某订单管理系统的部分UML类图如下图所示. 上图中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,O ...

  9. 画Java类图的mac软件_StarUML for Mac(UML软件建模器)

    StarUML是一款Mac平台上的UML建模工具,该软件主要用于各种图纸的绘制操作,并且可以将制作好的图纸文件导出为JPG.JPEG.BMP.EMF等图片格式,同时还拥有读取c++.c#代码生成类图的 ...

  10. visio uml 画java类图_用visio画UML类图

    对于画类图的工具很多,曾经学过用starUML画类图,但这个是用于Java语言的,对于用vs编程C++语言,个人感觉用visio会好一点.以下用以前面的俄罗斯方块游戏中的一个Block类为例来讲述 c ...

最新文章

  1. 34.在排序数组中查找元素的起始和末尾位置
  2. tf.expand_dims() 的用法
  3. 6.DeepFM: A Factorization-Machine based Neural Network for CTR Prediction论文详解和代码实现
  4. 关于Java里面File类创建txt文件重复???
  5. dns的主从服务器的简单配置
  6. Android 控件之RatingBar评分条
  7. 知识图谱:刻画事物关系,沉淀领域知识!
  8. 谷歌:中国版搜索引擎之心不死!
  9. java collection 常用类_分析Collection常用的实现类
  10. anaconda 安装Mosek
  11. SIM868——AT+CBC 监测锂电池电量理解与测试
  12. 6亿债务年底还完,老罗“真还传”即将完结
  13. 利用Python高效自动化运维巡检网络设备
  14. 游戏人工智能——聚集与避障
  15. c语言switch购物折扣,SWITCH国际版ESHOP史低来袭推荐(64):精彩在继续,折扣在进行,捡漏的机会到啦!...
  16. 基于微信小程序的二手闲置跳蚤市场交易平台 uni-app
  17. flask android app socketio加解密 匿名加密聊天室 不被任何官方非官方机构个人监视的匿名聊天室!!! 想聊什么就聊什么!
  18. arduino并口屏_零知开源软件库使用-ILI9341并口显示屏
  19. keras冻结_Keras 实现加载预训练模型并冻结网络的层
  20. 云门舞集新作《毛月亮》4月开启台湾巡演

热门文章

  1. 【MySQL基础篇】MySQL数据库安装教程
  2. AXURE原型——移动端标签、菜单原型集合
  3. maven中使用MySQL
  4. win10系统字体 chrome 修改苹果字体
  5. Springboot JUnit5 Controller 单元测试
  6. SQL常用连接查询(JOIN)
  7. python for spss statistics_SPSS Statistics功能介绍
  8. python题目-通过字母判断星期几
  9. c语言单片机烧写器,单片机烧写器是什么 烧写器怎么用
  10. 【渝粤教育】电大中专跨境电子商务理论与实务答案作业 题库