UML之类图

news2024/12/30 2:28:46

概要

  • 类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法。
  • 类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象。

元素解析

  • 从上到下分为三部分,分别是类名、属性和操作。类名是必须有的
  • 类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等
  • 类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等

属性和方法:

  • private:成员前有一个“-”号,表示成员私有
  • public: 成员前有一个“+”号,表示成员公开
  • protected:成员前有一个“#”号,表示成员受保护的
  • package:成员前有一个“~”号,表示成员包可见

例如

public abstract class Vehicle
{
  public abstract int Start();
  public abstract int Stop();
  public abstract int Run(float fSpeed);

  private float fMaxSpeed;
}

接口

        一组操作的集合,只有操作的声明而没有实现

抽象类

        不能被实例化的类,一般至少包含一个抽象操作

模板类

        一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类

关系解析

关联关系

        描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关联关系语义较弱。也有两种语义较强,分别是聚合与组合。

例如

public class Dialog{ 
    
  private Button btnOK;
  private Button btnCancel;
  private TextBox txtInfo;
    
}

public class Button{
    ...
}

public class TextBox{
    ...
}

聚合关系

        特殊关联关系,指明一个聚集(整体)和组成部分之间的关系,箭头指向部分,菱形指向整体。

        聚合关系整体与部分的生命周期是可以不一致的,且部分可以脱离整体存在。

// 汽车类
public class Car {
 
    private Engine engine = null;       // 一辆车存在一个引擎
    private List<Tyre> tyres = null;    // 一辆车存在四个车轮
    
}
// 引擎类
class Engine {
 
   ...  
}
// 轮胎类
class Tyre {
 
   ...
}

组合关系

        语义更强的聚合,部分和整体具有相同的生命周期,箭头指向部分,菱形指向整体。

// 人类
public class Person {
 
    private Head head = null;       // 一个人有一个大脑
    private List<Hand> hands = null;    // 一个人有一双手
    
}
// 大脑类
class Head {
 
    ...    
}
// 手类
class Tyre {
 
    ...
}

泛化关系

        在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间

例如

public class SavingsAccount extends Account{
    ...
}

实现关系

        对应于类和接口之间的关系

例如

// Shape类
public interface Shape{ 
    
	public abstract void Draw();
    
}

// Circle类
public class Circle implements Shape{
    
	public void Draw();

	private Point ptCenter;
	private int nRadius;
    
}

依赖关系

        描述了一个类的变化对依赖于它的类产生影响的情况。有多种表现形式,例如绑定(bind)、友元(friend)等

例如

class FloatStack{ 
	private int size;
    
	public int Push(float elem);
  	public int Pop();
    public float GetTop();
}

常用例子

图形编辑器

  • 图形编辑器一般都具有一些基本图形,如直线、矩形等,用户可以直接使用基本图形画图,也可以把基本图形组合在一起创建复杂图形
  • 如果区别对待基本图形和组合图形,会使代码变得复杂,而且多数情况下用户认为二者是一样的
  • 组合模式可以用相同的方式处理两种图形

演出售票系统

        在用例驱动的开发过程中,通过分析各个用例及参与者得到类图。分析用例图的过程中需要根据面向对象的原则设计类和关系,根据用例的细节设计类的属性和操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jetson Nx 串口接收数据丢失首字节问题

1 问题描述 I write a uart program using c on Jetson Nx(Jetpack 4.6.1,Ubuntu version 18.04 LTS) to communicate with a PC. On PC there’s a uart simulator( as below figure 1) sending data at a period of one second, 30 bytes data are : EB90021112131415161718…

VUE综合数据库编程

VUE综合数据库编程 案例要求 基于node expressvue clielementUImysql&#xff0c;在如图8.14所示的功能的基础上增加一个输入框用于输入商品的id&#xff0c;增加一个“删除”按钮&#xff0c;完成根据id删除商品的功能&#xff08;删除后的结果通过查看数据表goods的最新数据…

LinkedIn领英怎么避免封号?封号怎么解决?(建议收藏)

使用领英的朋友都知道&#xff0c;领英是很容易封号的。辛辛苦苦经营到上千好友的账号&#xff0c;第二天登录&#xff0c;提示“您的账号受到限制&#xff0c;暂时无法使用”。 例如1&#xff1a; 例如2&#xff1a; Linkedin如何避免封号&#xff1f; 大家肯定不愿看到这…

【JavaSE】Comparable接口和Comparator接口

文章目录一、Comparable接口二、Comparator接口一、Comparable接口 当我们要比较两个类的大小时&#xff0c;我们该如何比较呢&#xff0c;是这样吗&#xff1f; 这样写是错误的&#xff0c;所以我们需要用到接口Comparable的CompareTo方法。 而ComparaTo是抽象方法&#x…

74cms骑士人才招聘系统源码SE版 v3.16.0

介绍&#xff1a; 74cms骑士人才招聘系统是一项基于PHPMYSQL为核心开发的一套专业人才招聘系统。骑士人才系统拥有十多年的人才招聘系统运营解决方案&#xff0c;同时我们提供智能化招聘系统、招考系统等全方位系统化解决方案。 74cms骑士人才招聘系统SE版&#xff1a; 更懂运…

Redhat(9)-磁盘分区-parted-swap-lvm-stratis-vdo-tuned

1.parted 2.swap 3.lvm 4.stratis 5.vdo 6.tuned 1.MBR: MASTER BOOT LOADER 逻辑分区&#xff1a;可以直接格式化使用 扩展分区&#xff1a;不可以直接格式化使用 2.GPT分区 1.parted 2.swap 虚拟内存 linux vmmemoryswap Hibernate :内存 3.lvm 3.1实现的功能和优点&…

前三强重磅揭晓!华秋第八届硬创大赛-全国总决赛路演活动成功举办!

11月19日&#xff0c;华秋第八届硬创大赛-全国总决赛路演活动在深圳高交会成功举办。此次项目路演活动是在深圳市福田区科技创新局指导下&#xff0c;由深圳华秋电子有限公司主办&#xff0c;深圳高交会联合主办的硬件创新领域专业赛事。共13个硬科技领域的优秀项目从众多报名项…

零基础入门JavaWeb——Web基本概念

一、服务器和客户端的概念 1.1 客户端的作用 与用户进行交互&#xff0c;用于接收用户的输入、展示服务器端的数据以及向服务器端传递数据。 1.2 服务器的作用 与客户端进行交互&#xff0c;接收客户端的数据、处理具体的业务逻辑、传递给客户端需要的数据。 1.3 什么是服务…

王道考研——操作系统(第二章 进程管理)

一、进程的概念、组成、特征 进程的概念 进程的组成——PCB 进程的组成——程序段、数据段 知识滚雪球&#xff1a;程序是如何运行的&#xff1f; 进程的组成 进程的特征 知识回顾与重要考点 二、进程的状态与转换 进程的状态——创建态、就绪态 进程的状态——运行态 进程的…

5G+北斗:人员定位系统为化工厂定位赋能

人员定位系统是集计算机软硬件、信息采集处理、无线数据传输、网络数据通讯、自动控制等技术多学科综合应用为一体的自动识别信息技术产品&#xff0c;可以实现对不同人、物在不同状态下的智能识别。 物联网时代&#xff0c;人们以感知为目的实现人与人、人与物、物与物全面互联…

【栈和队列的相互转换】

目录&#xff1a;前言一、 用队列实现栈&#xff08;一&#xff09; 题目分析1.队列基本操作2.画图分析3.翻译图解&#xff08;二&#xff09;整体代码二、用栈实现队列&#xff08;一&#xff09; 题目分析1.栈基本操作2.画图分析3.翻译图解&#xff08;二&#xff09;整体代码…

wy的leetcode刷题记录_Day47

wy的leetcode刷题记录_Day47 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2022-11-20 前言 补 目录wy的leetcode刷题记录_Day47声明前言799. 香槟塔题目介绍思路代码收获105. 从前序与中序遍历序列构造二叉树题目介绍思路代码收获79…

优思学院|精益六西格玛的成本效益怎么样?

所有精益六西格玛的实施都以项目工作为中心&#xff0c;因此可以用投资回报率&#xff08;ROI&#xff09;确定成本效益。项目可以集中在通过改善营收或降低成本&#xff08;或两者&#xff09;来提高净利润。 它们也可以侧重于通过减少资产&#xff08;通常是库存或应收账款&…

迅为IMX8M开发板2gst-inspect-1.0测试

gstreamer 开发中&#xff0c;一般开发思路为&#xff1a;寻找命令行实现--命令行验证--将命令行集成到代码中---代码工程 化。当然如果你要代码更优雅一点&#xff0c;可以用命令行用对应的 API 来实现。本节来总结一下 gstreamer 的常用 使用过程。 gst-inspect 可以查看插件…

新鲜出炉,Linux眼花缭乱的小寄巧

14天学习训练营导师课程&#xff1a; 互联网老辛《 符合学习规律的超详细linux实战快速入门》 努力是为了不平庸~ 学习有些时候是枯燥的&#xff0c;但收获的快乐是加倍的&#xff0c;欢迎记录下你的那些努力时刻&#xff08;学习知识点/题解/项目实操/遇到的bug/等等&#xf…

MySQL_数据库的约束

文章目录 1. NULL约束 2. UNIQUE(唯一约束) 3. DEFAULT(默认值约束) 4. PRIMARY KEY(主键约束) 5. FOREIGN KEY(外键约束) 数据库的约束就是关系型数据库给我们提供的一种"校验数据"合法性的机制 1. NULL约束 创建表时,可以指定某列不为空 create table stud…

MindFusion Scheduler for JavaScript 2.0 Crack

用纯 JAVASCRIPT 编写的交互式调度库--MindFusion Scheduler for JavaScript MindFusion 为所有需要呈现交互式时间表、活动日程或约会日历的应用程序提供了完整的解决方案。完全响应、高度可定制且易于集成的 JavaScript 调度库&#xff0c;您可以根据需要快速编程。 本土化 本…

Centos7 linux 中 防火墙操作命令及SSH远程连接

文章目录查看防火墙状态开启防火墙关闭防火墙查看对外开放的端口状态对外开发端口SSH 工具远程连接VMware 虚拟机查看防火墙状态 systemctl status firewalld开启防火墙 systemctl start firewalld若遇到无法开启 先用&#xff1a;systemctl unmask firewalld.service 然后&a…

Java继承——抽象类与接口的比较以及内部类、匿名类、异常类......

文章目录壹、抽象类与接口的比较贰、内部类叁、匿名类&#xff08;匿名内部类&#xff09;肆、异常类&#xff08;Exception&#xff09;壹、抽象类与接口的比较 1、抽象类与接口都可以有抽象方法&#xff1b; 2、接口中只可以有常量&#xff0c;不可以有变量&#xff1b;而抽…

Mac | 使用 Wineskin 在 Mac 上运行 exe 程序

​1 Wineskin 简介 Wineskin is a user-friendly tool used to make ports of Microsoft Windows software to macOS. 很多实用工具只有 Windows 版本&#xff0c;而 Mac 机器本身不支持运行 exe 程序&#xff0c;除了安装双系统、虚拟机等方法外&#xff0c;Wineskin 可以将…