UML:类图复习-鸡生蛋,蛋生鸡

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

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,就是关联关系类

转载于:https://www.cnblogs.com/yjmyzz/p/3739612.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转] 硬盘工具DiskMan使用图解

① 图解DM硬盘分区的基本使用(图) 对于一个新硬盘来说,首先必须进行的工作就是进行分区,只有这样才能正常使用,同时分区也是为方便我们进行资料的管理。DOS中的Fdisk是一个很小巧的工具,但是在使用上有些麻烦,特别是…

Flex布局教程篇

Flex布局是什么? Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。 任何一个容器只要添加”display:flex”都可以指定为Flex布局。行内元素添加”display:inline-flex”便可以指定为使用Flex布局。 注意:设置…

在DrawingVisual上绘制圆形的进度条,类似于IOS系统风格。

1.说明:在WPF中,文件下载时需要显示下载进度,由于系统自带的条型进度条比较占用空间,改用圆形的进度条,需要在DrawingVisual上呈现。 运行的效果如图: private Point GetPointOnCir(Point CenterPoint, double r, doub…

Discuz论坛架设从零起步之四

前期工作: 按Discuz论坛架设从零起步之一([url]http://waringid.blog.51cto.com/65148/50906[/url]) Discuz论坛架设从零起步之二([url]http://waringid.blog.51cto.com/65148/50940[/url]) Discuz论坛架设从零起步之三…

CSS Grid布局(1)

1.网格容器:通过display属性设置属性值为grid或inline-grid可以创建一个网格容器。网格容器中的所有子元素就会自动变成网格项目(grid item) 1.1网格项目默认放在行中,并且跨网格容器的全宽 2.显示网格:使用grid-template-columns和grid-tem…

logogogo最新变种XP.exe的分析(Win32.Logogo)

作者:清新阳光 ( [url]http://hi.baidu.com/newcenturysun[/url])日期:2007/11/17 (转载请保留此声明) 这是之前logogo.exe病毒的…

深入::first-letter的研究

:first-letter 伪元素用来向文本的第一个字母添加特殊样式 1.::first-letter伪元素生效的前提 1.首先,元素的display计算值必须是 block, inline-block, table-cell, list-item或者table-caption,其他所有display计算值都没有用,包括displa…

[转]Android Activity和Intent机制学习笔记

Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见http://www.cnblogs.com/feisky/archive/2010/01/01/1637427.html,由系统控制生命周期,程…

聊一聊CSS中的死循环

什么是死循环呢&#xff1f;&#xff1f;比如一个<div>元素里面有一张vertical-align为bottom同时高度为192像素的图片&#xff0c;此时该<div>高度就是192像素&#xff0c;假设此时&#xff0c;插入一个子元素&#xff0c;高度设为100%&#xff0c;如果此时height…

Vh和Vw的简介和使用

Vw:视区宽度百分值 Vh:视区高度百分值 Vmin:取Vw或Vh中较小的那一个 Vmax:取Vw或Vh中较大的那一个 1.视区:是指浏览器内部的可视区域大小&#xff0c;即window.innerWidth/window.innerHeight大小&#xff0c;不包含任务栏标题栏以及底部工具栏的浏览器区域大小 2.场景之元…

江民杀毒软件KV网络版反病毒整体解决方案──金融行业

江民杀毒软件KV网络版反病毒整体解决方案──金融行业江民杀毒软件KV网络版反病毒整体解决方案──金融行业 金融行业是对信息化要求程度极高的行业。它需要一个高效、安全的网络环境来保证信息处理系统能正常有效运行。但随着信息化的应用面越来越广&#xff0c;信息安全…

2014/5/25 多校

A: 1 #include<iostream>2 #include<stdio.h>3 #include<string.h>4 #include<set>5 #define maxn 58*3000006 using namespace std;7 8 set<int>S;9 int Enum0,score[maxn],son[maxn][26],l[maxn];10 bool flag[maxn];//标记是否打星11 int to…

margin:auto实现绝对定位元素的水平垂直居中

1.绝对定位元素的居中实现的一般方法 兼容性不错的主流用法是&#xff1a; 但&#xff0c;这种方法有一个很明显的不足&#xff0c;就是需要提前知道元素的尺寸。否则margin负值的调整无法精确。此时&#xff0c;往往要借助JS获得。 CSS3的兴起&#xff0c;使得有了更好的…