欢迎大家来到IT世界,在知识的湖畔探索吧!
一、概述
类图是描述类、接口以及它们之间关系的图,是一种静态模型,显示了系统中各个类的静态结构。类图根据系统中的类以及各个类的关系描述系统的静态视图,可以用某种面向对象的语言实现类图中的类。
二、类之间的关系
其中由若到强的关系:
依赖 ——> 聚合 —-> 组合
1、关联关系
关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。
在UML类图中,用实线连接有关联关系的对象所对应的类,在使用Java、C++和C#等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。
在使用类图表示关联关系时可以在关联线上标注角色名。
public class LoginForm {
private JButton loginButton; //定义为成员变量
……
}
public class JButton {
……
}
(1)双向关联
public class Customer {
private Product[] products;
……
}
public class Product{
private Customer customer;
……
}
(2)单向关联
public class Customer {
private Address address;
……
}
public class Address {
……
}
(3)自关联
public class Node {
private Node subNode;
……
}
2、泛化关系
泛化描述了一般事物与该事物的特殊种类之间的关系。在解决复杂问题时通常需要将具有共同特性的元素抽象成类别,并通过增加其内容而进一步分类。例如,车可以分为火车、汽车、摩托车等。继承是类与类或者接口与接口最常见的关系,在Java中通过关键字extends来表示。
3、依赖
依赖(dependency)关系也是表示类与类之间的连接,表示一个类依赖于另外一个类的定义,依赖关系时是单向的。简单理解就是类A使用到了类B,这种依赖具有偶然性、临时性,是非常弱的关系。但是类B的变化会影响到类A。举个例子,如某人要过河,则人与船的关系就是依赖,人过河之后,与船的关系就解除了,因此是一种弱的连接。在代码层面,为类B作为参数被类A在某个方法中使用。
在java中,依赖表现为:局部变量,方法中的参数和对静态方法的调用。
4、聚合关系
聚合(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 {
……
}
5、组合关系
组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。在UML中,组合关系用带实心菱形的直线表示。
public class Head {
private Mouth mouth;
public Head() {
mouth = new Mouth(); //实例化成员类
}
……
}
public class Mouth {
……
}
6、实现关系(接口关系)
三、多重性关联
表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示。
表示方式
多重性说明
(1) 1..1
表示另一个类的一个对象只与该类的一个对象有关系
(2) 0..*
表示另一个类的一个对象与该类的零个或多个对象有关系
(3) 1..*
表示另一个类的一个对象与该类的一个或多个对象有关系
(4) 0..1
表示另一个类的一个对象没有或只与该类的一个对象有关系
(5) m..n
表示另一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n)
《大数据和人工智能交流》的宗旨
1、将大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。
2、将大数据和人工智能的专业涉及到的数据结构和算法:分类、聚类 、回归算法、概率等算法变得通俗易懂。
3、最新的高科技动态:数据采集方面的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等等。
根据初学者需要会有C语言、Java语言、Python语言、Scala函数式等目前主流计算机语言。
根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/35941.html