UML类图及C#实现

UML类图

我们引用《大话设计模式》中得UML类图图示样例来学习UML类图。
本文UML类图使用了Visual Paradigm工具绘制。
UML视图主要可以帮我们理清楚思路:知道每个对象直接的交互关系,而且让我们更加清楚的知道什么时候用什么结构。
在这里插入图片描述

1、类

首先是“动物”矩形框,它表示一个类(Class)。类图有三层,从上至下分别表示:

类名称(如果是接口,就使用斜体表示)
类的特性(一般是类的字段和属性,可以没有)
类的操作(一般是类的方法或行为)
它们前边的符号有以下几类:

“+”表示public
“-”表示private
“#”表示protected
“_”下划线表示static
在这里插入图片描述

public class Water
{
}
public class Oxygen
{
}
public abstract class Animal
{
        /// <summary>
        /// 是否有生命
        /// </summary>
        public bool life { get; set; }

        /// <summary>
        /// 新陈代谢
        /// </summary>
        /// <param name="oxygen"></param>
        /// <param name="water"></param>
        public abstract void Metabolism(Oxygen oxygen , Water water);

        /// <summary>
        /// 繁殖
        /// </summary>
        public abstract void Breed();
}
2、依赖关系

某个类,强烈依赖某种东西:比如新陈代谢强烈依赖氧气和水。依赖关系用带箭头的虚线表示。

在这里插入图片描述

/// <summary>
/// 新陈代谢
/// </summary>
/// <param name="oxygen"></param>
/// <param name="water"></param>
public abstract void Metabolism(Oxygen oxygen , Water water);
3、继承关系

鸟属于动物,那么鸟必然需要继承抽象类动物,但是鸟又和其他的动物不一样,有自己的特点,所以鸟必然也是我们抽象出来的!例如:鸟是动物的一种,企鹅、鸭、大雁是鸟的一种。依赖关系用带空心三角形的实线表示。
在这里插入图片描述

    public abstract class Brid : Animal
    {
        /// <summary>
        /// 有羽毛
        /// </summary>
        public bool feather;

        /// <summary>
        /// 有喙状的嘴巴
        /// </summary>
        public bool coronoid;

        public override void Breed()
        {
            Console.WriteLine("我可以繁衍后代");
        }

        public override void Metabolism(Oxygen oxygen, Water water)
        {
            Console.WriteLine($"我依赖{oxygen}和{water}进行新陈代谢");
        }

        /// <summary>
        /// 下蛋
        /// </summary>
        public abstract void LayEggs();
    }

    /// <summary>
    /// 企鹅类
    /// </summary>
    public class Penguin : Brid
    {
        public override void LayEggs()
        {
        }
    }

    /// <summary>
    /// 大雁类
    /// </summary>
    public class WildGoose : Brid
    {
        public override void LayEggs()
        {
        }
    }

    /// <summary>
    /// 鸭类
    /// </summary>
    public class Duck : Brid
    {
        public override void LayEggs()
        {
        }
    }

    /// <summary>
    /// 唐老鸭类
    /// </summary>
    public class DonaldDuck:Duck
    {
    }
4、实现接口

接口的作用是方法的复用,所以用到此方法的对象都只需要实现这个接口,在这里,我们有的鸟类可以飞比如,燕子和喜鹊可以飞,但是有的不行,那么燕子和喜鹊就要继承这个接口,实现接口用带空心三角形的虚线表示。
在这里插入图片描述

    interface IFly
    {
        void Fly();
    }
    
    public class WildGoose : Brid, IFly
    {
        public void Fly()
        {
            Console.WriteLine("我能飞");
        }

        public override void LayEggs()
        {
        }
    }

鸭子也属于鸟,但是鸭子不能飞。
唐老鸭也是鸭子,但是他有一个特异功能,会说话,接口也可以用棒棒糖表示法

在这里插入图片描述

    interface ISpeed
    {
        void Speak();
    }
    
    /// <summary>
    /// 唐老鸭类
    /// </summary>
    public class DonaldDuck : Duck, ISpeed
    {
        public void Speak()
        {
            Console.WriteLine("我能说话");
        }
    }
5、组合关系(强拥有关系)

特点:在组合中,部分与整体生命期一致,部分与组合同时创建并同时消亡 。比如:鸟与翅膀的关系。

组合关系用带实心菱形的实线表示。

在这里插入图片描述

    /// <summary>
    /// 翅膀类
    /// </summary>
    public class Wing
    {
    }

    public abstract class Brid : Animal
    {
        /// <summary>
        /// 有羽毛
        /// </summary>
        public bool feather;

        /// <summary>
        /// 有喙状的嘴巴
        /// </summary>
        public bool coronoid;

        /// <summary>
        /// 翅膀
        /// </summary>
        public Wing wing;

        public override void Breed()
        {
            Console.WriteLine("我可以繁衍后代");
        }

        public override void Metabolism(Oxygen oxygen, Water water)
        {
            Console.WriteLine($"我依赖{oxygen}和{water}进行新陈代谢");
        }

        /// <summary>
        /// 下蛋
        /// </summary>
        public abstract void LayEggs();
    }
    
6、聚合关系(弱拥有关系)

每一只大雁都属于一个雁群,掉队的除外,那么我们可以理解为每个大雁都属于一个雁群,但是这种关系又和强拥有关系不同,用带空心菱形的实线表示,所以有了弱拥有关系。

特点: 部分对象的生命周期并不由整体对象来管理。也就是说,当整体对象已经不存在的时候,部分的对象还是可能继续存在的。比如:一只大雁脱离了雁群,依然是可以继续存活的。

弱拥有关系和强拥有关系是反的,指向也是反的!空心的菱形!

在这里插入图片描述

    public class GooseGroup
    {
        public WildGoose[] wildGeese;

        /// <summary>
        /// 一字飞
        /// </summary>
        public void LFly()
        { 
        
        }

        /// <summary>
        /// V字飞
        /// </summary>
        public void VFly()
        {

        }
    }
7、关联关系

企鹅是很特别的鸟,生存和天气的原因很大,关联关系用带箭线的实线表示。

在这里插入图片描述

    public class Climte
    {
    }
    public class Penguin : Brid
    {
        /// <summary>
        /// 天气
        /// </summary>
        public Climte climte;
        public override void LayEggs()
        {
        }
    }
转存中...(img-FaaSw9j4-1657863408908)]

```C#
    public class Climte
    {
    }
    public class Penguin : Brid
    {
        /// <summary>
        /// 天气
        /// </summary>
        public Climte climte;
        public override void LayEggs()
        {
        }
    }
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会敲键盘的肘子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值