- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想知道公共(public)墙(位于相邻房间)和房间之间的关系。
据我所知,房间与其墙壁之间的关系是 Composition not Aggregation
(我说的对吗?)
并且根据定义
Composition 所包含的对象不能在两个
容器之间共享,而在
code> 聚合 这是可能的
。
现在我很困惑,什么是表示公共(public)墙和旁边房间之间关系的最佳建模方法?
如果您能提供一些代码建议,我们将不胜感激。
|--------|--------|
方法 1:
(wall class ---- room class) /Composition
方法 2:
wall class ----- room class /Aggregation
方法 3:
我们有一个墙类和一个普通墙类,普通墙类继承自墙类
adjoining room class ---- (1) Common wall class /Aggregation
adjoining room class ---- (6) wall class / composition
方法 4:我是开发人员而不是设计师 :) 所以这是我的想法:
class Room
{
private wall _firstwall ;
private wall _secondtwall;
private wall _thirdwall ;
private wall _commonwall ;
public Room( CommonWall commonwall)
{
_firstwall=new Wall();
_secondtwall=new Wall();
_thirdwall=new Wall();
_commonwall=commonwall;
}
}
Class CommonWall:Wall
{
//...
}
//在某个地方:
static void main()
{
Wall _commonWall=new Wall();
Room room1=new Room(_commonWall);
Room room2=new Room(_commonWall);
Room [] adjacentRoom =new Room[2]{room1,room2};
}
编辑 1:我认为这是一个明确的问题,但只是为了进一步说明:
问题的重点是找出为同时属于两个其他对象的对象的关系建模的最佳模式或方法是什么。
关于我的例子:我说的“房间”是什么意思?当然,我指的是一个封闭的方形房间,有 4 面墙和一扇门。但在这种情况下,其中一堵墙是公共(public)墙,由两个相邻的墙共享房间。
最佳答案
关于房间和墙的问题的答案就是这个问题的答案:“墙可以没有房间吗?”
我相信您的方案正在使用聚合。没有房间,墙还能存在吗?当然可以。一个人可以通过摧毁三堵墙来摧毁这个房间,但剩下的那堵墙是独立存在的。我认为我们现在已经到了语义层面。这个答案可能会根据您在您的场景中查看墙壁的方式而改变。
这link展示了一种简洁的思考方式:
同here :
聚合 表示子项可以独立于父项存在的关系。示例:类(class)( parent )和学生( child )。删除类(class),学生仍然存在。
组合 表示 child 不能独立于 parent 而存在的关系。示例:房子( parent )和房间( child )。房间不是独立于房子而存在的
来自 wikipedia :
聚合 不同于普通的组合,因为它并不暗示所有权。在组合中,当拥有的对象被销毁时,包含的对象也被销毁。在聚合中,这不一定是正确的。例如,一所大学拥有多个系(例如,化学),每个系都有一些教授。如果大学关闭,院系将不复存在,但院系的教授将继续存在。因此,一所大学可以看作是系的组合,而系则是教授的集合。此外,一名教授可以在多个部门工作,但一个部门不能属于多个大学。
关于c# - 一堵公共(public)墙和旁边的房间之间有什么样的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11236215/
我想在 下面添加按钮标签,但不知道使用什么 CSS 来实现。下图显示了一个可能的场景,“Main_Page”标题和按钮构成了一个单独的 div 的每个部分。我尝试使用 margin-top属性,但想
我的图像不会位于 slider 旁边.. 而只是堆叠在 slider 下方。好像没有空间放置图像,因为 slider 占用了太多空间,但是当我查看代码时,情况似乎并非如此,除非我错过了什么:) Thi
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve
我想在文本的左侧放置一个图像,并根据窗口的分辨率保持原样。 这是没有图像的样子:http://prntscr.com/fmky4f 这是我希望它放置后的样子。 https://prnt.sc/fmkk
我创建了一个button,当我点击button然后popup模型显示时,它会隐藏在页面主体旁边,按钮也会隐藏我滚动。我希望当弹出窗口出现时我无法滚动我的页面主体。我使用 Bootstrap 创建了模型
我是一名学生网络开发人员,需要一些帮助。我需要复制这个 wikipedia page尽我所能 我想把 Story 和下面的 div 放在官方 wiki 页面上的位置。 另一个问题是游戏玩法“div”,
需要这项工作的 header 的屏幕截图: 如您所见,菜单位于 Logo 下方。我想要它旁边的菜单,在 Logo 的右侧。我不知道这是否可行,但如果可行,我需要一些帮助,谢谢。 这是所有内容的代码,为
基本上,我们必须有这样的布局,其中图像必须溢出容器,文本填充图像创建的空间(向左偏移)。 我们目前有这样的结构: Some paragraph
我有一个“弹出式”表格,它是一个固定元素。该表有时太高以适应某些屏幕,因此我将 overflow 设置为 auto。然而,滚动条似乎与弹出表格分离,因为父 div 是屏幕的宽度而表格较小。有没有办法让
我有一个带有边框的 div: 表示上面内容的div使用的样式是这样的: const style = { textAlign: "center", mar
如何在各种屏幕尺寸下完美地放置图像? .background-login { background: url(../img/login.png) no-repeat; background-s
我正在尝试在居中的圆形头像旁边的右上角放置一个编辑图标。但是,如果我在行小部件中使用中心小部件,它就不起作用: Row( children: [
首先,感谢您阅读我的问题! 因此,我遇到了一些有关将单元格名称传递到下一个 View 的问题。现在它会传递它,但只会显示最近加载的单元格。 现在的编程方式如下: var passName = "" v
这是网站:www.red-tuxedo.com 我希望“红色燕尾服”文本位于 Logo 旁边,而不是下方,并且我想摆脱贯穿 Logo 的硬性规定。我的 CSS/HTML 技能达不到要求。当我更改文本时
我有一个顶部水平菜单栏,宽度为 100%,居中对齐,位置固定,因此它不会随页面滚动。 但我还想在菜单左侧的菜单内联一个名称(例如名为 test)。 但即使我使用内联 block ,它也会根据左侧的 d
我有一个 4 个链接。我希望他们都在同一行。其中两个在中间,另外两个在右边。我把它们包了两个又两个,但我无法让它工作。 我的 CSS 是这样的: #links_center { } #links_ri
我在 material-ui 中使用 Grid 组件。我无法让网格元素相互堆叠。现在他们正在彼此堆叠。我不确定是什么让它们堆叠在一起。我已经这样做了,所以只有在小屏幕上网格元素才会堆叠在一起,否则每个
我试图在固定宽度的内联 block div 旁边放置一个按钮。但它就在 div 的下面。我试过减少容器的宽度,但这是行不通的。我想在不将类添加按钮放在单独的容器中的情况下完成此操作。该按钮应位于 .i
我在“聊天气泡”旁边有一个用户的图像,但该图像显示在气泡之后。 我如何将图像放在聊天气泡之前并固定在 div 上? 我的代码在这里:http://www.codepen.io/anon/pen/fFx
编辑 #1:这是问题的图片: 编辑 #2:这是我使用品牌类后的图片 编辑#3: 我正在尝试将图像 float 到导航栏旁边。它一直有效,直到我的导航栏宽度达到 100%。然后导航栏位于图像下方。 这是
我是一名优秀的程序员,十分优秀!