类class
- 第一层:类的名称,若为抽象类用斜体表示
- 第二层:类的特性,字段和属性
- 第三层:类的操作,方法和行为
+:public
-:private
#:protected
接口
与类的主要区别是顶端有<<interface>>
矩形表示法
//飞翔接口
interface IFly
{
void Fly();
}
- 第一行是接口名称
- 第二行是接口方法
棒棒糖表示法
//讲话接口
interface ILanguage
{
void Speak();
}
唐老鸭实现了“讲人话”的接口
为什么是“讲人话”?
因为鸭子本来也有语言,只不过只有唐老鸭是能讲人话的鸭子
类与类之间的关系
继承
- 例:鸟类继承动物类,鸭继承鸟类,唐老鸭继承鸭类
- 空心三角形+实线
//
//鸟继承动物类
class Bird:Animal
{
}
关联association
- 当一个类“知道”另一个类时,可以用关联。
- 例:企鹅和气候两个类,企鹅需要知道气候的变化,这两个类之间的关系可以用关联来表示
- 实线箭头表示
//在企鹅Penguin中,引用到气候Climate对象
class Penguin:Bird
{
private Climate climate;
聚合Aggregation
- 聚合表示一种弱的”拥有关系“,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
- 例:大雁和雁群两个类,大雁是群居动物,每只大雁属于一个雁群,一个雁群可以由多只大雁,满足聚合关系。
在雁群WideGooseAggregate类中,有大雁数组对象arrayWideGose
class WideGooseAggregate
{
private WideGoose[] arragWideGoose;
}
合成Composition
- 合成是一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
- 例:鸟和翅膀是合成关系
- 用实心的菱形+实线箭头表示,连线两端有基数,一只鸟有两只翅膀,所以为1和2.如果一个类有无数个实例,则用n表示,关联关系,聚合关系也可以有基数
在鸟Bird类中,初始化时,实例化翅膀Wing,他们之间同时生成
class Bird
{
private Wing wing;
public Bird()
{
wing=new Wing();
}
}
依赖Dependency
动物几大特征,新陈代谢,繁殖,而动物要有生命力,需要氧气、水、食物。即,动物依赖于氧气和水。
用虚线箭头表示
abstract class Animal
{
public Metabolism(Oxygen oxygen,Water water)
{
}
}
类与接口
实现
空心三角形+虚线
//大雁实现飞翔接口
class WideGoose:IFly
{
}