【UML】第10篇 类图(属性、操作和接口)(2/3)

目录

3.3 类的属性(Attribute)

3.3.1 可见性(Visibility)

3.3.2 属性的名称

3.3.3 数据类型

3.3.4 初始值

3.3.5 属性字符串

3.4 类的操作(Operations)

3.4.1 参数表

3.4.2 返回类型

3.5 类的职责和约束

4.接口(interface)


(接上一章节)

【UML】第9篇 类图-CSDN博客

3.3 类的属性(Attribute)

类的属性用于描述类的一个特征,这个特征是类的每个实例所共有的。一个类可以有零到多个属性。类的属性定义语法如下:

[可见性] 属性名称 [:数据类型] [=初始值] [{属性字符串}]

上面的语法中,[]中的内容表示是可选的。可见性默认是私有,属性名称是必要的,其他都可以省略。

下面对以上语法中的各个部分,进行说明:

3.3.1 可见性(Visibility)

可见性用于控制该属性被类的外部成员的可访问性。主要有以下四种情况:

+:公有属性(Public),其它类可以访问该属性;

-:私有属性(Private),不能被其它类访问(默认为私有);

#:保护属性(Protected),只能被本类及其派生类访问;

3.3.2 属性的名称

能够准确描述类特征的一个标识符,属性名通常是一个名词或名词短语。一般单字属性使用小写字母,多字属性从第2个单词开始,每个单词的第一个字符要大写。也就是我们说的驼峰命名方法。

很多人对驼峰命名法,有不同的表述,其实,有2种驼峰命名法。

  1. 小驼峰法(lower camel case):第一个单词以小写字母开始;第二个单词的首字母大写,例如:myFirstName、myLastName。这种命名方式在Java中较为常见。
  2. 大驼峰法(Upper Camel Case):每一个单词的首字母都采用大写字母,例如:ClassName、MyName。这种命名方式在C#中较为常见。

在这里,属性的命名,一般使用小驼峰法。

3.3.3 数据类型

属性所属的数据类型,如整型、浮点型、字符型,也可以是用户自定义的类型。例如上图中的String,int。 

3.3.4 初始值

属性的默认值,在类的实例没有赋其它值时,将采用该值作为该属性的值。例如上图中的xiaobai,就是初始值。

3.3.5 属性字符串

用来指定该属性的其它信息。任何希望进一步描述该属性又没有合适的地方时都可以放在此处。

3.4 类的操作(Operations)

操作是类的方法或行为,描述了类可以对其属性执行的操作或计算。

在UML中,操作列在类图的第三部分,位于属性之后,并在花括号内。操作的表示包括可见性、名称、参数和返回类型。

类图的表达中,可以只有属性,也可以只有操作,也可以都有。

类的操作定义的语法是:

[可见性] 操作名称 [(参数表)][:返回类型][{属性字符串}]

类的操作的可见性,和熟悉的可见性相同,也是共有、私有和受保护三种。

操作的名称,也是小驼峰命名方法。

注意:如果是操作,没有参数,也要有()标记。

3.4.1 参数表

如上图,-eat(food:Food):String操作,有一个参数食物,属于Food类。如果有多个参数,用“,”隔开。

注意,方法如果要表明返回值,需要在参数的括号后面,加上冒号“:”和返回类型。

3.4.2 返回类型

取值也是字符串型、整形、布尔型等。上图中,吃饭,参数是食物,返回是字符串。

同属性类似,也可以在最后,加上一个大括号,去表示这个操作某些其他说明。

3.5 类的职责和约束

如上图,职责可以在类的最下方,再加一个方格来表示。约束,可以在底部,加上一个大括号。这里一般都是约束类的提示,比如取值等。 

4.接口(interface)

接口包含操作但不包含属性,且它没有对外界可见的关联。一个类可以实现一个或多个接口,从而支持接口所指定的操作。

在UML中,接口是一种定义类或构件行为的方式。接口描述了类或构件的外部可见的操作,但不提供这些操作的具体实现。每个接口仅描述实际类的行为的有限部分。接口定义了类或构件提供的服务,它定义的服务由类或构件实现。因此,接口跨过了系统的逻辑和物理的界限。一个类可以支持多个接口,效果上或互斥,或覆盖。

接口和类的主要区别如下:

  1. 实现与继承:类可以实现一个或多个接口,而接口可以被类或其他接口继承。
  2. 行为的定义与实现:接口定义了对象的行为,但不提供实现。而类不仅定义行为,还提供行为的实现。
  3. 关系的表示:在UML中,接口和类之间的关系可以通过实现关系和继承关系来表示。实现关系表示一个类实现了一个接口,而继承关系表示一个接口继承了另一个接口或类。

接口和类的联系主要体现在以下几个方面:

  1. 行为的规范:接口为类提供了一种行为的规范或契约,类通过实现接口来遵循这种规范。
  2. 多态性:通过实现相同的接口,不同的类可以以统一的方式对外提供服务,从而实现多态性。
  3. 模块化:接口有助于实现软件的模块化,将功能划分为独立的、可重用的部分。
  4. 松耦合:使用接口可以降低系统各部分之间的耦合度,提高系统的可维护性和可扩展性。

接口在UML中提供了一种定义和规范行为的方式,与类一起协作以实现软件系统的功能和特性。

接口可以用两种图标来表示:

第一种是用一个矩形图标来表示接口,接口的名字以大写字母"I"开头,表示这是一个接口。

第二种表示法(省略表示法)是将接口表示为一个小圆圈,并和实现它的类用一条线连起来,这种图有时被形象地称作棒糖图(lollipop diagram)。

具体使用哪种图标,取决于实际的绘图工具和建模需求。

下面是接口的几个代码片段例子。

// 定义接口  
public interface IDog {  void bark(); // 狗叫的方法  
}  // 创建实现接口的类  
public class Puppy implements IDog {  @Override  public void bark() {  System.out.println("汪汪汪!"); // 实现狗叫的方法  }  
}  // 测试类  
public class Test {  public static void main(String[] args) {  IDog myDog = new Puppy(); // 创建小狗对象  myDog.bark(); // 调用狗叫的方法  }  
}

在这个例子中,我们定义了一个名为IDog的接口,其中包含一个bark方法,用于描述狗叫的行为。然后,我们创建了一个名为Puppy的类,该类实现了Dog接口,并提供了bark方法的具体实现。最后,在Test类中,我们创建了一个Puppy对象,并调用了其bark方法,从而实现了小狗叫的功能。 

不用的狗可能有不同的叫声,但是都用同一个接口去调用,实现了多态。

例如,我们扩展一下上面的代码:

// 定义接口  
public interface IAnimal {  void makeSound(); // 发出声音的方法  
}  // 创建实现接口的类 - 小狗  
public class Dog implements IAnimal {  @Override  public void makeSound() {  System.out.println("汪汪汪!"); // 狗的叫声  }  
}  // 创建实现接口的类 - 小猫  
public class Cat implements IAnimal {  @Override  public void makeSound() {  System.out.println("喵喵喵!"); // 猫的叫声  }  
}  // 测试类  
public class TestPolymorphism {  public static void main(String[] args) {  IAnimal myDog = new Dog(); // 创建小狗对象  IAnimal myCat = new Cat(); // 创建小猫对象  // 调用makeSound方法,根据对象的实际类型输出不同的声音  myDog.makeSound();   myCat.makeSound();  // 假设有一个动物数组  IAnimal[] animals = new IAnimal[]{myDog, myCat};  // 遍历动物数组,并调用每个动物的makeSound方法  for (IAnimal animal : animals) {  animal.makeSound();  }  }  
}

注意,在这个例子中,IAnimal是一个接口,可以看作是一个特殊的父类类型,而Dog是实现了IAnimal接口的一个子类。

(待续,下次一起学习类图的4种关系,请关注。)

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

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

相关文章

基于JavaWeb的个人健康信息管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本个人健康信息管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…

data数据响应式

data数据响应式 所有在实例上挂载的属性,都可以在视图中直接使用 data中的数据,是经过“数据劫持”的,是“响应式数据” 响应式:修改数据,视图会自动更新 MV原理:其中一条线的原理,data响应式的…

Nessus详细安装-windows (保姆级教程)

Nessus描述 Nessus 是一款广泛使用的网络漏洞扫描工具。它由 Tenable Network Security 公司开发,旨在帮助组织评估其计算机系统和网络的安全性。 Nessus 可以执行自动化的漏洞扫描,通过扫描目标系统、识别和评估可能存在的安全漏洞和弱点。它可以检测…

DRF从入门到精通三(反序列化数据校验源码分析、断言Assert、DRF之请求、响应)

文章目录 一、反序列化数据校验源码分析二、断言Assert三、DRF之请求、响应Request类和Response类请求中的Request 能够解析前端传入的编码格式响应中的Response能够响应的编码格式 一、反序列化数据校验源码分析 反序列化数据校验,校验顺序为:先校验字段…

Go后端开发 -- Golang的语言特性

Go后端开发 – Golang的语言特性 文章目录 Go后端开发 -- Golang的语言特性一、Golang的优势1.部署极其简单:2.静态语言3.语言层面的并发4.强大的标准库5.简单易学6.运行效率对比 二、Golang的适用领域1.应用领域2.明星产品 三、Golang的不足 一、Golang的优势 1.部…

共享购:消费前沿的领导者

在当今这个信息化、互联网高速发展的时代,商业模式也在不断地创新和变革。共享购模式作为一种新型的商业模式,正逐渐受到广泛的关注和追捧。本文将深入探讨共享购模式的核心理念、优势以及如何应用在实际商业场景中,为读者揭示这一模式的巨大…

计算机组成原理综合5

A 按照题意,程序P执行的时钟周期数为1000080%11000020%1028000,程序P的平均CPI为28000/100002.8,计算机主频为1GHz,CPU执行时间为28000/(1G/s)28μs。 B A 符号位为1 首先将0.4375转化为二进制,0.250.1250.06250.43…

nodejs+vue+ElementUi资源互助共享平台的设计

后台:管理员功能有个人中心,用户管理,卖家管理,咨询师管理,萌宝信息管理,幼儿知识管理,保姆推荐管理,音频资源管理,二手商品管理,商品分类管理,资…

推荐给前端开发的 5 款 Chrome 扩展

工欲善其事,必先利其器。Chrome 可能是前端开发中使用最多的浏览器。在日常开发中,下列几款 Chrome 扩展也许能让你的开发工作事半功倍 🚀 Vue.js devtools ⚙️ vue 官方专为 vue 应用开发的调试工具。 通过使用它,你可以快速查看…

力扣单调栈算法专题训练

目录 1 专题说明2 训练 1 专题说明 本博客用来计算力扣上的单调栈题目、解题思路和代码。 单调栈题目记录: 2232866美丽塔II 2 训练 题目1:2866美丽塔II。 解题思路:先计算出prefix[i],表示0~i满足递增情况下,0~i…

NC65 查询单据所处的流程状态以及流程平台客户端工具类

1、查询单据所处的流程状态 nc.bs.wfengine.engine.EngineService的queryFlowStatus()方法 /*** 查询单据所处的流程状态* * param billId* param billType* param result* return* throws DbException*/public int queryFlowStatus(String billId, String billType, int flo…

【UML】第8篇 用例图(3/3)

目录 一、用例的关系 1.1 泛化(Generalization)关系 1.2 包含(include)关系 1.3 扩展关系 二、用例表示例 不是非要把电影改成连续剧,给大家播,确实是时间和精力有限。 用例图,虽然简单&…

荣誉 | 第七在线(7thonline)荣获STIF2023年度数智化创新典范奖

12月15日,STIF2023 第四届国际科创节暨 DSC2023 国际数字服务大会(数服会)在北京隆重举行。 在本届科创节暨数服会活动评选中,经企业申报、评委会审议,第七在线(7thonline)AI智能零售商品计划库…

什么是集成测试?它和系统测试的区别是什么? 操作方法来了

01 什么是集成测试? 集成测试是软件测试的一种方法,用于测试不同的软件模块之间的交互和协作是否正常。集成测试的主要目的是确保不同的软件模块能够无缝协作,形成一个完整的软件系统,并且能够满足系统的需求和规格。 在集成测试…

【3D生成与重建】SSDNeRF:单阶段Diffusion NeRF的三维生成和重建

系列文章目录 题目:Single-Stage Diffusion NeRF: A Unified Approach to 3D Generation and Reconstruction 论文:https://arxiv.org/pdf/2304.06714.pdf 任务:无条件3D生成(如从噪音中,生成不同的车等)、…

[C++]模板进阶

目录 C模板进阶:: 非类型模板参数 模板的特化 函数模板特化 类模板特化 全特化 偏特化 模板的分离编译 模板总结 C模板进阶:: 非类型模板参数 模板参数可分为类型形参和非类型形参。 类型形参:出现在参数列表中&am…

浅谈Redis分布式锁(上)

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 不论面试还是实际工作中…

信息安全等级保护的定义与意义

目录 前言 信息安全等级保护定义 广义上 狭义上 技术和管理 信息安全的基本要素 信息安全等级保护的意义 当前形式 形式严峻 国家安全 三个基本一个根本 预期目标 最终效果 实际意义 前言 信息安全等级保护是对信息和信息载体按照重要性等级分级进行保护的一种…

Windows平台开发需要掌握的基础知识

windows本身也是一个软件。在这个软件中进行开发时,我们需要对它有个基础的了解,这样能让我们的开发过程更顺畅一些。 下面我就来说一下我们需要关注的基础知识点。 环境变量 有时候我们的程序执行,需要基于一些基础的库。比如Java运行&am…

matlab 最小二乘拟合平面(直接求解法)

目录 一、算法原理二、代码实现三、算法效果本文由CSDN点云侠原创,原文链接。爬虫网站自重。 一、算法原理 平面方程的一般表达式为: A x + B y +