ooad相关内容

UML三元关联实现Java代码

三元关联是指定一个事物对象与另两个事物的对象相连接的结构化关系 我理解这种关系,但我不知道如何实现显示这三个类之间关联的方法。 让我们考虑以下示例 项目有许多使用特定编程的开发人员 发展语言 开发人员使用特定编程语言开发多个项目 在选定的项目中,一名开发人员仅使用一种编程语言 这三个类别之间存在三元关联。 我已经在互联网上阅读了关于这个问题的不同来源,但找不到解决方案 ..
发布时间:2022-06-30 11:30:28 Java开发

“不要在设计中使用抽象基类;但在建模/分析中"

虽然我在 OOAD 方面有一些经验,但我是 SOA 的新手. SOA 设计的准则之一是“仅将抽象类用于建模.从设计中省略它们".抽象的使用有助于建模(分析阶段). 在分析阶段,我提出了一个 BankAccount 基类.从它派生的专门类是“FixedAccount"和“SavingsAccount".我需要创建一个服务,该服务将为用户返回所有帐户(帐户列表).满足要求的服务结构应该是什 ..
发布时间:2021-12-13 19:41:30 C#/.NET

“低耦合高内聚"是什么意思

我在理解低耦合和高内聚这句话时有问题.我已经用谷歌搜索并阅读了很多关于此的内容,但仍然发现它很难理解. 据我所知,高内聚意味着我们应该有专门用于执行特定功能的类.希望这是正确的?就像信用卡验证类,专门用于验证信用卡. 仍然不明白低耦合是什么意思? 解决方案 我认为: 内聚度是指一个模块/类的元素之间的归属程度,建议相关的代码应该相互靠近,所以我们应该争取高内聚度,将所有相 ..
发布时间:2021-12-12 08:29:05 其他开发

什么是“编程接口,而不是实现"?意思是?

在阅读有关设计模式的内容时,会偶然发现这句话. 但是我不明白,有人可以为我解释一下吗? 解决方案 接口只是合同或签名,他们不知道任何关于实现的信息. 针对接口编码意味着,客户端代码总是持有一个由工厂提供的接口对象.工厂返回的任何实例都属于任何工厂候选类必须实现的接口类型.这样客户端程序就不用担心实现了,接口签名决定了所有的操作可以做什么.这可用于在运行时更改程序的行为.从维 ..
发布时间:2021-12-11 23:34:43 其他开发

什么时候应该在 C++ 中使用类和结构?

在 C++ 中,struct 与 class 在什么情况下使用更好? 解决方案 class 和 struct 在 C++ 中的区别是: struct 成员和基类/结构默认为 public. class 成员和基类/struts 默认是 private. 类和结构都可以混合使用 public、protected 和 private 成员,可以使用继承并可以具有成员函数. ..
发布时间:2021-12-01 15:04:01 C/C++开发

抽象 VS 信息隐藏 VS 封装

你能告诉我软件开发中抽象和信息隐藏有什么区别吗? 我很困惑.抽象隐藏了细节实现和信息隐藏抽象了事物的全部细节. 更新:我为这三个概念找到了一个很好的答案.请参阅下面的单独答案,以获取从 那里. 解决方案 去源码!Grady Booch 说(在面向对象的分析和设计中,第 49 页,第二版): 抽象和封装是互补的概念:抽象关注对象的可观察行为...封装专注于导致这种行为的实现 ..

什么是抽象与不稳定性图?

我最近使用了 NDepend,它生成了关于我的 .net 程序集和相关 pdb 的很好的报告. 我在报告中发现的最有趣的事情是抽象性与不稳定性图.我想真正详细地了解这一点,我阅读了他们的文档和在线指标,但这只能在一定程度上有所帮助. 我主要想了解如何正确评估图形以及如何稳定地控制抽象性. 有一篇非常好的文章这里讨论了这个问题但除此之外我还需要'我如何控制它?【稳定控制抽象】' ..
发布时间:2021-11-17 02:31:42 其他开发

OOAD书籍推荐:从理论到实践

我正在寻求成为一名优秀的 OO 开发人员.OO 吸引了我,因为我了解模式,知道为什么组合比继承给你更多的灵活性,以及​​更多这样的智慧.但是,我得出的结论是,我知道如何实现单例工厂,但我不知道如何提出健壮的 OO 设计. 我有一堆书 GoF 的设计模式 AntiPatterns Brown 等人 Fowler 重构 代码完成 2 它们可能是非常好的书,但它们不会教您构建应用 ..
发布时间:2021-11-17 02:17:48 其他开发

耦合和内聚

我试图将耦合和内聚的概念归结为一个简洁的定义.有人能给我一个简短易懂的解释吗(比维基百科上的定义要短这里和这里)?他们如何互动? 谢谢. 有人有一个很好的简短例子吗? 解决方案 耦合 Loose:你和便利店的那个人.您通过明确定义的协议进行沟通以实现各自的目标 - 您付钱,他让您带着 Cheetos 的袋子走出去.可以在不中断系统的情况下更换你们中的任何一个. 亲密 ..
发布时间:2021-11-17 01:53:32 其他开发

内聚和耦合的区别

内聚和耦合有什么区别? 耦合和内聚如何导致软件设计的好坏? 有哪些示例概述了两者之间的区别,以及它们对整体代码质量的影响? 解决方案 内聚 是指类(或模块)可以做什么.低内聚意味着这个类会做各种各样的动作——它是广泛的,没有专注于它应该做什么.高内聚意味着类专注于它应该做什么,即只关注与类意图相关的方法. 低内聚的例子: -------------------|员工 | ..
发布时间:2021-11-17 01:41:18 其他开发

如何在 UML 中使用子集属性?

子集属性广泛用于 UML 规范图中. 子集属性的语义(含义)是什么? 如何使用 UML 子集属性? 一个真实的例子会很棒 编辑: 以下来自 UML 规范 2.5(Beta) 的截图 你能告诉我这个图中的子集是什么意思吗? 解决方案 根据 UML 2.4.1 规范,Subsetted Property 引用了该属性被约束为其子集的属性.真实世界的例子是什么意思 ..
发布时间:2021-06-22 19:35:48 其他开发

每个类的职责以及它们如何在UML中彼此交互

我正在尝试为我的项目管理软件绘制一个类图,描述以下情形. 它包含 项目 经理 员工 经理可以创建项目 经理可以更改项目截止日期 经理可以更改项目名称 经理可以将一名员工分配给项目(单个项目只有一名分配的员工) 员工可以提交项目 为上述要求创建了此类图 并如下所示使用php在代码中实现 Class Manager { private $Id; private $n ..
发布时间:2020-07-02 02:23:48 PHP

用例图-作为参与者的系统

我可以将系统作为用例图上的参与者吗? 系统自动发送电子邮件和/或自动更新其他用户的一些详细信息. 解决方案 取决于.如果您有一个负责发送电子邮件的系统-可以将其称为NOTIFY-而另一个系统-可以将其称为X-使用NOTIFY,则可以将X建模为用例的参与者发送包含以下内容的电子邮件通知.另一方面,不能使用自己的用例将NOTIFY本身建模为参与者. ..
发布时间:2020-07-02 02:23:44 其他开发

在面向对象设计中处理类型指示器的最佳方法是什么?

我们有一个商业模型,需要识别不同类型的车辆.例如,摩托车,轮船,游艇,农用设备,雪地车,重型卡车,轻型卡车,乘用车和“其他". 我认为有两种处理方法:创建一个Vehicle类,其中包含几个子类,例如船,卡车,汽车,并有一个枚举来指示实际类型.这将起作用,使您能够代表与某些通用子类共享某些通用功能的车辆.但是,它允许您使类的枚举数不匹配. 我认为处理该问题的传统方法是为每种类型都有一个单 ..
发布时间:2020-07-02 02:23:42 Java开发

组合和聚合之间有什么区别?

组合和聚合之间有什么区别? 有人可以给我这个OOAD的样品吗? 解决方案 在此处找到 聚合和组合都是特殊的关联.聚合用于表示所有权或整体/部分关系,而组合用于表示更强的所有权形式.通过组合,我们得到零件的寿命一致 合成对象全权负责其部分的创建和破坏. 此外,合计末端的多重性不得超过1;即未共享.一个对象一次只能是一个合成的一部分.如果复合材料被破坏,则它必须要么破坏其所有部件 ..
发布时间:2020-07-02 02:22:39 Java开发

派生类Private方法被调用

我有一个指向派生类对象的基类指针.方法foo()在基类中是公共的,但在派生类中是私有的.基类foo()是虚拟的.因此,当我从基类指针调用foo()时,Vptr Table具有派生类foo()的地址,但是在派生类中是私有的...所以它怎么被调用. 我了解运行时多态性,并且我也了解访问说明符在编译时有效,而虚拟概念在运行时有效.这样就不会有编译器错误. 我的问题是:这是一个漏洞,通过它我们可以 ..
发布时间:2020-07-02 02:22:35 C/C++开发

什么是反模式?

我正在研究模式和反模式.我对模式有一个清晰的认识,但是我没有反模式.网络和维基百科的定义让我非常困惑. 有人可以简单地向我解释什么是反模式吗?目的是什么?他们在做什么?是好事还是坏事? 解决方案 反模式是某些软件开发模式,被认为是不良的编程习惯. 与设计模式相反,这是解决常见问题的常用方法形式化,通常被认为是良好的开发实践,反模式则相反,是不理想的. 例如,在面向对象的编 ..
发布时间:2020-07-02 02:22:33 其他开发

抽象VS信息隐藏VS封装

您能告诉我在软件开发中抽象和信息隐藏有什么区别吗? I很困惑。抽象隐藏细节实现, 信息隐藏抽象某物的全部细节。 更新:我发现这三个概念很好的答案。 请参阅下面的单独答案,以获取有。 解决方案 转到源代码! Grady Booch说(在面向对象的分析和设计,第49页,第二版): 抽象和封装是互补的概念:抽象 专注于对象的可观察行为...封装 专注于引起这种行为的实现. ..

UML多重性的语法是什么? (在班级框内)

我知道可以在同一类框中指定多重性,而不必绘制到另一个类的链接. 我的问题是,名称或类型后面的多重性应该去哪里? 是吗 可见性名称多重性:类型 为 + clients [0..n] : Client 或 可见性名称:输入多重性 为 + clients : Client [0..n] 我有两本书(Larman和UML的《应用UML和模式》以及Ar ..
发布时间:2020-05-20 01:32:01 其他开发

如何避免getter和setter

我在许多地方都读到“吸血鬼和塞特犬是邪恶的".我知道为什么会这样.但是我不知道如何完全避免它们.说项目是具有有关项目名称,数量,价格等信息的类. ItemList是一个类,它具有项目列表.要找到总计: int grandTotal() { int total = 0; for (Item item: itemList) total += item.getPrice(); r ..
发布时间:2020-05-20 01:00:17 其他开发