问题标签 [object-oriented-analysis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
73 浏览

php - 在 db 中做 oo 的常见做法是什么?

这是情况............我有一个DBManager,它实现了一个DBInterface,在DBInterface中,我有4个方法:

DBCmd 对象负责生成 SQL 语句,DBCmd 需要 sql 语句中的对象:

流程将是这样的:

但是当我得到一些与其他表相关的对象时,就会出现问题,例如......一个客户有一个购买记录,而哪个购买记录有很多项目......

那么,我在 read 方法中做了什么?我应该阅读与客户相关的所有记录吗?我是否也需要循环购买记录中的所有项目?如果是的话,当我读客户时,我需要查询 3 个表,但有些可能不需要查看......它浪费了资源......

我想出了另一个解决方案,我制作了一组新的 DBCmd,它允许我获取相关的数据库项目,例如:

但是在这个“解决方案”中,我遇到了一些问题,是我失去了对象客户中的关系......是的,我可以读回所有记录,获取客户对象基本上对购买记录一无所知。 ...

有些人可能会要求我做这样的事情:

它可以工作,但我不希望对象结构与 db 之间有某种紧密的关系......这就是为什么我想出 DBCmd 的东西......

那么,一切似乎都很耦合,怎么解决呢?谢谢你。

0 投票
2 回答
199 浏览

c# - 如何存储设计时数据列表

我的数据中有以下结构:

一个类别将有一个名称、一个描述和一个唯一的整数 ID

例如

该列表在设计时是已知的,我需要绑定到列表视图。我想将描述绑定为列表视图每一行的显示文本,并将值(具有名称和 ID 的对象或枚举)绑定为相应的值成员。

存储此信息的最佳方法是什么?我应该创建大量枚举吗?或者我应该使用分隔字符串(例如“Ford:Mondeo:Some Text:12324”)在设计器模式下直接绑定到列表视图,然后根据需要进行解析和提取。也许最好将数据存储为具有 id/description 值的自定义属性的强类型枚举,例如绑定到字符串是描述且 CarType 是具有属性的类的字典:Make(Ford):enum, Model(Modeo ):enum 和 Id(12324):int?

0 投票
2 回答
94 浏览

data-modeling - OO范式中的子类型关系

让我们考虑一个类 'Human' -->(1..*) 'Human' ,其中 Human 是一个超类型。假设它有像'Male','Female','SociallyPathologicalMale'等子类。基本关联b / w 2实体仍然常见,子类型定义名称和关联的约束,但基本关系仍然是m:nb / w 2人类实体。例子:-

  • '男' -->(1:1)('妻子'(关系名)) '女'

  • '女'-->(1:1)('老公') '男'

  • 'SociallyPathologicalMale'-->(1:0)('friends') 'Male'

    [编辑 13/12/2011] - 如果说我们必须在 java 中实现它,那么有哪些最佳实践可以使关联重用成为可能?

假设我们从基类开始:-

就像是

现在,在 Man(或任何其他子类)中重新定义关系字段这一事实可以在结构上强制执行,即在定义任何子类时,我应该强制定义关系。java中的这种构造是否可能?有没有其他语言可以轻松做到这一点?

0 投票
2 回答
434 浏览

oop - 面向对象设计

我有两个 csv 文件 A 和 B。A 是主存储库。我需要读取这些文件,将 B 的记录映射到 A 并将映射的记录保存到另一个文件。保存记录的类是,比如 Record。保存匹配记录的类是 RecordMatch。

映射场景如下:首先,针对 B 的每条记录,使用州、城市和邮政编码过滤 A 的记录。然后将这样过滤的 A 的记录与 B 的记录进行比较。这种比较是在名称字段之间进行的,并且是使用模糊字符串算法的最佳匹配比较。选择并保存最佳匹配。

字符串匹配算法将给出匹配百分比。因此,必须从所有匹配中选择最佳结果。

现在我已经尽力解释了这个场景,我将进入设计问题。我最初的设计是制作一个 Mapper 类,如下所示:

但看看设计,它似乎只是一些方法的类包装器。我没有看到任何面向对象的设计。我也觉得 Match() 更多地属于 Record 类而不是 Mapper 类。

但从另一个角度来看,我看到这个类实现了类似于 Repository 模式的东西。

我认为另一种方法是保留 Mapper 类,只需将 Match() 方法移至 Record 类,如下所示:

现在我对这个简单的场景完全感到困惑。在这种情况下,什么是理想的 OO 设计?

0 投票
1 回答
244 浏览

java - 我应该使用什么 OO 结构来描述动物的行为?

我有一个 Java 作业,我的教授要求我使用 LeJOS NXT 制作一个模拟某种动物行为的机器人。我选择发展一条龙。到目前为止,我提出的所有可能行为是:

  • 如果距离障碍物太近,转身。
  • 电池电量低时进入睡眠状态。
  • 如果触摸则推动物体。
  • 如果太亮,找一个暗点。
  • 等等

我现在很困惑,因为我不知道是在一个类中顺序开发它还是将所有龙的行为分成不同的类。请看我下面的解释。

而不是像这样在一个类中编写所有内容:

龙.java

但是,我想让它看起来更面向对象,因为该课程旨在帮助我们获得更多的 OOP 技能。所以我的第二个选择是创建像这样(大致)扩展 Dragon's Behavior 抽象类的动作类:

龙.java

DragonBehaviors.java

TurnAround.java

上面的代码大致是一个草稿,不要关注它。最后想问一下我对上面的OO结构的想法是否合理,否则在一个类中开发整个东西要容易得多,但这与OOP无关。我还有几个小组成员来完成代码,所以我认为如果我们共享类以 OOP 方式开发会更好。

在这种情况下我应该走哪条路?

我感谢所有评论(:

0 投票
3 回答
152 浏览

inheritance - 超类有子类引用

我有一种情况,我必须在超类中为子类引用放置 getter 和 setter。我只需要知道这是否是一种好习惯?

我已经给出了下面的代码。

0 投票
2 回答
3462 浏览

java - 设计模式 - 验证输入参数并创建持有者类,J2SE(无框架等)

场景:我们收到一些关于对象的输入参数,例如课程

课程有导师姓名、学生人数、课程时间、房间号等。

我们需要验证(学生人数 > 0、上午 9 点 < 时间 < 晚上 9 点等)输入并创建对象。我们需要返回无效输入的错误源。

我可以想到两种方法

1) 使用静态方法创建一个单独的 Validator 类,

  • 验证输入,(验证方法返回 true,或一些枚举,如 VALID、INVALID_TIME、INVALID_STUDENT_NUMBER)。
  • 如果输入有效,则实例化 Bean。

缺点:

  • 如果我们必须在验证输入值之前处理它们,如果输入有效,上述模式会导致执行两次,一次在 Validator 类中,一次在 bean setter 之前。我们无法返回 Bean 对象,因为 validate 方法需要在无效的情况下返回错误源。

2) Bean 类本身有 validate 方法,输入无效返回异常。通过不同类型的异常追踪错误的来源。

缺点:

  • 需要创建多个自定义异常。
  • 在持有人对象本身中包含验证方法是否正确?

我探索了几种设计模式,但它们并不相关。

请帮助我了解上述方法的优缺点,以及更好的方法。

0 投票
2 回答
13342 浏览

uml - 根据这个用例图,这个类图是否正确?

我正在尝试创建一个类图,该类图显示此用例图中的泛化以及某种形式的聚合或组合。预期的系统是类似于 facebook 社交网络的站点/应用程序。

用例图:

在此处输入图像描述

类图:

在此处输入图像描述

我很确定类图有问题,请有人帮助我,谢谢。

0 投票
1 回答
198 浏览

oop - 面向对象模型中平衡类职责分配的例子

在 Bochs 等人的“统一建模语言用户指南”中。人。在“第 4 章。类”中有(子)部分,标题为“对系统中的职责分配进行建模”。它讨论了平衡职责,这可能导致类的拆分或合并。

你能给我举个例子,这种“责任平衡”可能是什么样的吗?

0 投票
6 回答
4073 浏览

java - 面试题:为数独创建面向对象的设计

我回答说我会有一个二维数组。

然后我将拥有 3 个功能

  • 一是检查水平状态。
  • 另一个检查垂直条件的功能
  • 另一个检查 3*3 块条件。

但他不满意,有谁能给这个问题一个好的答案吗?

我发现这个堆栈溢出链接与我的问题有关。 编程设计帮助 - 如何构建数独求解器程序?.

但我想要一个适当的面向对象设计(比如应该是什么类、继承和其他细节),这与面试官对我的期望相同。