Bootstrap

UML类图(动物的表述)

上节课(复习)

在这里插入图片描述
主要是简单工厂模式

1.我们的简单工厂,只能生产一种东西,这是一个生产(小熊玩具)的工厂,那么就只能生产小熊玩具,这是个生产运算符号的工厂,那么就只能生产加减乘除!
2.工厂生产的东西就是我们的父类,具体到某一只特定的对象,就是我们的子类!
3.共性就是我们提炼出的方法,非共性就是我们单个对象自己的特色!

UML视图

UML视图主要可以帮我们理清楚思路:知道每个对象直接的交互关系,而且让我们更加清楚的知道什么时候用什么结构,接口?继承?多态?

那首先我们要学会看:
在这里插入图片描述

中心对象:动物

我们首先是需要清楚我们要制作或是表现的对象什么,他有什么属性,有什么能力?
在这副图中:
中心对象---->动物
属性—>有生命
能力---->新陈代谢(),繁殖()
那我们有这些之后,我们是不是就能写一个类出来了,需要注意的是前面的符号:
“+”表示public,“-”表示private,“#”表示protected,斜体表示抽象类,第一层为类名,第二层为属性,第三层为方法或者是类的操作,根据这个:
在这里插入图片描述
可以有类:

public abstract class Animal 
{
    /// <summary>
    /// 有生命
    /// </summary>
    public  string life;

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

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

某些方法,强烈依赖某种东西:比如新陈代谢强烈依赖氧气和水
在这里插入图片描述

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

这里也可以把水和氧气写成类!

第一级子对象:

鸟属于动物,那么鸟必然需要继承抽象类动物,但是鸟又和其他的动物不一样,有自己的特点,所以鸟必然也是我们抽象出来的!
在这里插入图片描述
根据这个我们可以写出:

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

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

    public override void Breed()
    {
    }

    public override void Metabolism(string oir, string water)
    {
    }

    /// <summary>
    /// 下蛋
    /// </summary>
    public abstract void layEggs();
}
组合关系(强拥有关系)

这类关系主要是:鸟有两个翅膀,你有两只眼睛,一个鼻子这种本来就属于你的,这种是强拥有关系,也被称作组合关系.
在这里插入图片描述
这里黑色菱形表示强拥有,1和2表示个数,那么根据这个我们有:

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

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

    private Wing wing;

    public Brid()
    {
        wing = new Wing();
    }

    public override void Breed()
    {
    }

    public override void Metabolism(string oir, string water)
    {
    }

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

第二级子对象:大雁

有的鸟能飞,有的鸟不能飞,大雁属于能飞的那种,你属于不能飞的,别想了!
在这里插入图片描述

public class WildGoose : Brid
{
    /// <summary>
    /// 飞
    /// </summary>
    public void Fly()
    {

    }

    public override void layEggs()
    {
       
    }
}
聚合关系(弱拥有关系)

每一只大雁都属于一个雁群,掉队的除外,那么我们可以理解为每个大雁都属于一个雁群,但是这种关系又和强拥有关系不同,所以有了弱拥有关系:
在这里插入图片描述
弱拥有关系和强拥有关系是反的,指向也是反的!空心的菱形!

public class GooseGroup
{
    public WildGoose[] wildGeeses;

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

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

    }
}
接口方法

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

public interface FlyInterface 
{
    void Fly();
}

public class WildGoose : Brid,FlyInterface
{
    /// <summary>
    /// 飞
    /// </summary>
    public void Fly()
    {

    }

    public override void layEggs()
    {
       
    }
}

第二级子对象:鸭子

鸭子也属于鸟,但是鸭子不能飞
在这里插入图片描述

public class Duck : Brid
{
    public override void layEggs()
    {
     
    }
}
唐老鸭

唐老鸭也是鸭子,但是他有一个特异功能,会说话
在这里插入图片描述

public interface Speed 
{
    void Speed();
}

public class DonaldDuck : Duck, Speed
{
    public void Speed()
    {
       
    }
}

第二级子对象:企鹅

在这里插入图片描述

public class Penguin : Brid
{
    public override void layEggs()
    {

    }
}
关联关系

企鹅是很特别的鸟,生存和天气的原因很大所以:

public class Climte 
{

}

public class Penguin : Brid
{
    /// <summary>
    /// 天气
    /// </summary>
    public Climte climte;

    public override void layEggs()
    {

    }
}

嗯!今天的学习就到这儿!

;