UML类图

  • 上节课(复习)
    • 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(){}
}

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

UML类图(动物的表述)相关推荐

  1. UML类图最生动的介绍和例子

    目的 这篇文章主要是介绍如何使用UML类图,目的是让我们能读懂类图,以及上手使用类图. 为什么要使用UML类图 UML类图是一种统一建模语言,可以精准的描述类中拥有的属性以及方法,以及类与类之间的关系 ...

  2. UML类图实例 (动物)

    首先是复习一下UML中九种图的理解:http://xhf123456789plain.blog.163.com/blog/static/172880482201192222144421/ 画用例图:h ...

  3. UML类图新手入门级介绍

    UML类图新手入门级介绍 看了大话设计模式,觉得很生动形象,比较适合于我这种初学者理解面向对象,所以就记录了一下. 举一个简单的例子,来看这样一副图,其中就包括了UML类图中的基本图示法. 首先,看动 ...

  4. 从零开始单排学设计模式「UML类图」定级赛

    阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...

  5. UML类图关系大全 and 报表的基本用法

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...

  6. uml 类图_UML 类图

    UML 类图基本符号 UML 类图基本符号含义 1.类(Class):一般是用三层矩形框表示,第一层表示类的名称,第二层表示的是字段和属性,第三层则是类的方法.第一层中,如果是抽象类,需用斜体显示. ...

  7. [转] UML类图的几种关系总结

    在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition ...

  8. UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...

  9. 从零开始单排学设计模式「UML类图」定级赛 1

    阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...

最新文章

  1. java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho
  2. java集合提取最小的日期_提取Java集合的元素-Java 8方法
  3. ios java 图片上传到服务器,iOS 图片上传服务器
  4. Qt工作笔记-对qmake的认识【两篇转载结合】
  5. apache php 整合 linux,apache集成php5.6方法分享
  6. Vision GUI programming products
  7. (day 12 - 双指针)剑指 Offer 22. 链表中倒数第k个节点
  8. 大一计算机引论知识点,计算机引论知识点2015.doc
  9. python 扫码签到_python3之51cto自动定时签到
  10. pdf编辑软件哪个好?编辑pdf的软件分享一款,像word一样好用!
  11. java中函数编程的妙用
  12. 使用面阵相机进行传送带视频流的拼接
  13. 网络技术——路由器原理与测试
  14. 提醒软件如何设置语音提醒功能?
  15. matlab利民的逻辑运算符,matlab逻辑运算符
  16. 使用tushare检验沪深300收益率和中证500收益率相关性
  17. 搜索引擎——新闻搜索引擎
  18. 2016年高校保送生拟录取名单 (北京大学)
  19. 防治交换机窃听技术_尘毒治理:金属冶炼工程技术措施
  20. 普通主播一个月能挣多少钱?结合身边的案例告诉你主播真实的收入!

热门文章

  1. c/c++易错点收集(持续更新)
  2. linux内核二叉查找树的应用
  3. Android:Drawable的缓存机制
  4. EVM 是什么? 怎么测?
  5. 攻防世界web新手区(来自小白)*-*
  6. uniapp 传递参数对象给下个页面的处理方法
  7. Ai绘画到底是创造艺术还是窃取艺术呢
  8. 名帖309 成亲王 行书《南北朝诗五首》
  9. 给数据结构初学者:跨过算法和程序之间的鸿沟
  10. 【LeetCode】467. Unique Substrings in Wraparound String 解题报告(Python)