这是前一阵《高级软件工程》课堂上,老师随堂出的一道讨论题,随手贴在这里:

ps: 今天是520,正好聊一些OoXx,关于爱的扯淡话题:)

题目:“鸡生蛋,蛋孵鸡”,世间万物生生不息,如何用O-O中的类图以尽可能接近现实的方式来描述?

参考答案:

解析:

1、Chicken是基类,Hen(母鸡),Cock(公鸡)从Chicken派生,

2、Hen与Egg是关联关系,注意关联关系中的“重数”表示,从Hen向Egg的方向看去,0..*表示1只母鸡,可能下“0或多”个蛋,而反过来,1只蛋,却只能由1只母鸡所生

3、Egg与Chicken也是关联关系,类似的,从Egg向Chicken的方向看去,0..1表示这只蛋,有可能孵化出1只鸡(不论公母),也有可能孵不出来(这是1个悲惨的蛋)

4、Hen与Cock也有关联关系,1只公鸡可能与0或多个母鸡OOXX,反过来也是类似的道理

5、虚线表示“关联关系类(Association Class)”,Hen与Cock发生关系后,所生的蛋才能称为受精蛋(爱的结晶),才有可能孵化出1只小鸡,这也正好对应了解析中的第3点,但是我们也知道,这世上Hen单靠自己,也能下蛋,只不过孵不出小鸡(个人觉得这是鸟类一个比较NB的功能)

注:

关联关系类,技术层面讲,就是建一个小类,记录Hen,Cock这二个的ID

商城系统中,有很多类似的应用,比如Product(商品)与Category(商品分类),如果一个商品可按不同标准归到多个类,通常会在database中新建一张小表,记录Product与Category的ID映射,这张表对应的Class,就是关联关系类

UML:类图复习-鸡生蛋,蛋生鸡的更多相关文章

  1. 设计模式之UML类图六大关系辨析【2】

    六大关系:继承(extends).实现(Realization).依赖(use-a).关联(association).聚合(has-a).组合(强聚合)(Composition). 类与类之间的强弱关 ...

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

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父 ...

  3. UML类图五种关系与代码的对应关系

    转: UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系 ...

  4. UML[1] UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)(转)

    转自:http://blog.csdn.net/zhaoxu0312/article/details/7212152 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是 ...

  5. 什么是UML类图

    百度了下,看评论不错我就收藏了,学习,真心不懂!!! 首先是复习一下UML中九种图的理解:http://xhf123456789plain.blog.163.com/blog/static/17288 ...

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

    http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的 ...

  7. 设计模式-UML类图基础

    设计模式之序-UML类图那点事儿 打14年年底就像写那么一个系列,用于讲设计模式的,代码基于JAVA语言,最早接触设计模式是大一还是大二来着,那时候网上有人给推荐书,其中就有设计模式,当时给我推荐的书 ...

  8. UML类图介绍(转载)

    UML类图详细介绍   类图主要描述程序对象以及他们之间的关系.一般来说,类.接口.抽象类这些程序对象的区别很容易,但是他们之间六种关系以前总是理解不够深刻,这次进行了一次复习,顺便写成博文以便加深理 ...

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

    继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者 ...

随机推荐

  1. MyCat:取代Cobar数据库中间件

    什么是MyCAT?简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务.ACID.可以替代Mysql的加强版数据库 ? 一个可以视为“Mysql”集群的企业级数据库 ...

  2. 查看mysql,apache,php,nginx编译参数

    查看nginx编译参数: #/usr/local/nginx/sbin/nginx -V   查看mysql编译参数: cat /usr/local/mysql/bin/mysqlbug | grep ...

  3. php框架laravel:数据库建立:artisan

    aravel 迁移是一种数据库的版本控制.迁移通常和 结构生成器 配对使用来管理您应用程序的数据库结构. 配置数据库 我们安装wamp,并且使用mysql方式.用wamp自带的phpMyAdmin添加 ...

  4. 今天说一下where 中 exists 和 in 里面的一些区别

    in 和 exists 已经成为我们日常查询时候的常客了.很多时候他们2个都是可以互通实现的,但是,无论兄弟怎么亲,还是会有那么一些差别的. 先搞个测试表 )) ),Col2 )) INSERT IN ...

  5. MySQL入门(三)

    写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...

  6. pycharm active code

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  7. 使用virt-manager创建和管理虚拟机

    1.虚拟机管理程序和虚拟机管理 一个服务器上只安装单一操作系统的时代已经过去,单个服务器可通过安装多个虚拟机来运行不同操作系统.虚拟机的大量使用减少了所需的服务其硬件,降低了服务器的功耗,但却带来了另 ...

  8. 敲-PHP与MySQL,JSON

    hi 敲代码~ 1.php与mysql 5.4 修改界面 同样是界面和程序. 界面article.modify.php <?php require_once('../connect.php'); ...

  9. ActionErrors和ActionError

    **ActionErrors和ActionError都是ActionMessage的子类,ActionError存放在 ActionErrors中,ActionError对象中的参数为配置文件中配置的 ...

  10. HDU3535AreYouBusy[混合背包 分组背包]

    AreYouBusy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...