类图 – 类:面向对象的“基本积木”详解 🧱

423次阅读

一、类是啥?—— 现实概念的“代码化身”🧠

关键字:类、对象模板、属性、操作

🤔

类是 面向对象的“基本单元”——它像一个“模板”,描述了一组具有相同特征(属性)和行为(操作)的对象。比如“学生类”,就定义了所有学生都有的“姓名、学号”(属性)和“选课、查成绩”(操作)。

💡 新手类比:

类就像“蛋糕模具”——模具(类)规定了蛋糕的形状(属性)和“可以加奶油”(操作),而每个用模具做出来的蛋糕(对象),都是这个类的具体实例~

📊 UML 中的类长这样:

类在 UML 里是一个“三格矩形”:
– 第一格:类名(比如“Student”);
– 第二格:属性(比如“name:String”);
– 第三格:操作(比如“getContactInfo()”)。
也可以隐藏属性 / 操作,只显示类名(简化版)。

二、类名:类的“身份证”🔖

关键字:类名、UpperCamelCase

📌

每个类必须有 唯一的名字,得从“业务术语”里选(比如“学生”“课程”),别用模糊的词~

✍️ 命名规则:

UpperCamelCase(大驼峰):每个单词首字母大写,比如“Student”“ClassRoom”,别用数字 / 特殊符号~

🌰 两种类名:

  • 简单名:比如“Person”(单独的类名);
  • 路径名:比如“java.awt.Rectangle”(带包名,说明类属于哪个“文件夹”)。

三、属性:类的“特征数据”📝

关键字:属性、可见性、类型、多重性、初始值

📌 UML 属性的语法:

可见性opt 属性名 [: 类型] opt [多重性] opt [= 初始值] opt [{特性}] opt

1. 可见性:谁能“碰”这个属性 🔒

UML 用符号表示属性的“访问权限”:
+(公有 public):其他类都能访问;
(私有 private):只有自己类能访问;
#(保护 protected):自己和子类能访问。
比如“- name:String”表示“name 是私有属性,只有 Student 类自己能用”~

2. 类型:属性的“数据格式”📊

指定属性的“数据类型”,比如 String(字符串)、int(整数)、double(小数),也可以是自定义的类(比如“address:ContactInfo”)。

3. 多重性:属性的“数量”📦

用“[数字]”表示属性是“单个”还是“数组”:
– 不写:默认是 1(单个);
nums:int[10]:表示 nums 是“长度为 10 的 int 数组”。

4. 初始值:属性的“默认值”⚙️

用“= 值”给属性设默认值,比如 age:int=18 表示“新建学生对象时,age 默认是 18”~

5. 特性:属性的“规则”📜

UML 定义了 3 种特性:
可变(changeable):可以随便改(默认);
只增(addOnly):只能加,不能减 / 改;
冻结(frozen):初始化后不能改(对应 C ++ 的 const),比如PI:double=3.1415926{frozen}

四、操作:类的“行为能力”🎮

关键字:操作、方法、可见性、参数、返回类型

📌 UML 操作的语法:

可见性opt 操作名([参数列表])opt [: 返回类型] opt [{特性}] opt

1. 操作名:行为的“名字”✍️

动词 / 动词短语 命名(比如“getContactInfo()”“submitOrder()”),命名规则和属性一样(私有操作可以用下划线开头)。

2. 参数列表:操作的“输入”📥

和编程语言里的“函数参数”一样,格式是“[方向]参数名: 类型[= 默认值]”:
– 方向:in(输入,不能改)、out(输出,可以改)、inout(输入输出);
– 例子:oper(out arg1:int, arg2:double=3.2)表示“oper 有两个参数,arg1 是输出参数,arg2 默认值是 3.2”。

3. 返回类型:操作的“输出”📤

用“: 类型”表示操作的返回值类型,比如 getContactInfo():ContactInfo 表示“这个操作返回 ContactInfo 类型的数据”;没有返回值就写“:void”(或不写)。

4. 特性:操作的“行为规则”📜

比如:
查询(isQuery):操作不改变系统状态(比如“getXXX()”);
冻结(frozen):操作不能被重写(对应 C ++ 的非虚函数)。

五、职责:类的“任务清单”📋

关键字:职责、类的责任

📌

职责是类的“义务”——说明这个类“要做啥”。比如“Student 类的职责是管理学生的基本信息和选课行为”,可以写在类的第四格(可选)。

总结:类是“数据 + 行为”的封装体 📦

🎉

类把“属性(数据)”和“操作(行为)”打包在一起,是面向对象的“核心概念”——就像“手机类”包含“颜色、内存”(属性)和“打电话、拍照”(操作),用类能清晰地描述现实中的任何概念~

要不要我帮你整理一份 类的 UML 表示模板,方便你快速画出自己的类图?

正文完
 0