标签: object-oriented-analysis

面试问题:为Sudoku创建面向对象的设计

我回答说我将有一个二维阵列.

然后我将有3个功能

  • 一检查水平状况.
  • 另一个检查垂直状态的功能
  • 另一个检查3*3阻止条件.

但是他不满意,任何人都能对这个问题给出一个好的答案吗?

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

但是我想要一个适当的面向对象设计(比如应该是类,继承和其他细节),这些都是面试官对我的期望.

java oop object-oriented-analysis 2d-games

4
推荐指数
1
解决办法
3484
查看次数

网上餐厅预订系统(数据结构)

我的任务是设计一个在线预订系统。用户可以在其中输入邮政编码/人数/预订时间并获得餐厅列表。假设(用户和餐厅始终在同一城市)

每个餐厅可以有多个座位不同的桌子。因此,可容纳4人的2张桌子和可容纳4人的4张桌子。

我在使用正确的数据结构时遇到了麻烦。

我的课如下

餐厅:包含timeofopening,timeOfClosing,totalNoOfSeatsAvailable不确定我如何在餐厅内存储表格信息。为表拥有一个单独的类没有任何意义。我需要的所有信息就是howMantables是免费的,它们的大小是多少。

保留:保留实际的保留并允许取消保留

ReservationSystem:包含“列表checkAvailability(长期,国际人士)”的接口,这将如何返回此列表?最初,我想到了使用priorityQueue来维护一个队列,该队列的席位数量最多。但是然后我将遍历该列表以查看时间是否正确,甚至进行保留,然后一旦进行保留,请更新此队列。一个问题是队列执行所有重复操作。

我的具体问题是:

  1. 如何在每个餐厅内存储餐桌信息。
  2. 维护此餐厅列表的最佳方法是什么,这样我就可以返回列表,而不必每次都对这些信息进行排序。

编辑:关于如何存储表信息的问题。我特别担心的是,存储表类将意味着我正在创建不必要的对象。这是我的理由。可容纳2个人的5张桌子具有完全相同的对象-我的意思是,它们之间没有任何有意义的信息是不同的。我只需要数字。座位数/桌子数(如果我有4桌但3 peole的桌子,我会考虑使用这张桌子)

我想到创建3个数组。假设表格代表1,2等,所以int [] differentSeatingOnTable; 它的索引是表,值是允许的座位。接下来是具有totalNoOfThosetable的表数组,其中索引是表,值是该表的总数。空闲表的相似之处freeTables的索引是表,剩余多少个空闲表。

java oop object-oriented-analysis data-structures

4
推荐指数
1
解决办法
2万
查看次数

重载vs重写在javascript中

在最近的一次JavaScript访谈中,我被问到有关重载和覆盖的问题.我知道这是Java中的一个概念:

https://softwareengineering.stackexchange.com/questions/164353/whats-the-difference-between-overloading-a-method-and-overriding-it-in-java

但是在JavaScript中是否有类似内容,如果是这样,代码示例会是什么?我的理解是,重载在javascript中并不常见.你为什么需要在JS中使用"重载"?

OverRiding对我来说有点清楚 - 过度骑行的一个例子是在继承超级类的子类中,但是通过一些方法/属性为子类创建唯一的方法/属性.

javascript computer-science object-oriented-analysis node.js

4
推荐指数
1
解决办法
4952
查看次数

使用Ruby处理抽象类解决方案的正确方法是什么?

我知道抽象类不是Ruby中的一个特性,当然背后有一个哲学原因,但我想知道是否有办法解决通常使用其他语言(如C++和Java)中的抽象类来解决的问题.

例如:我需要三个班Triangle,SquareCircle.因为这些都是几何图形,我想用在编码叫做抽象类AbstractFigure有一个抽象方法get_area,这将通过具体的类来实现Triangle,SquareCircle.

我如何按照Ruby哲学做到这一点?

ruby oop object-oriented-analysis

4
推荐指数
2
解决办法
481
查看次数

Java泛型类中void foo(T y)和<T> void foo(T y)之间的区别

详细解释Java泛型类的以下两个版本之间的差异(如果有)?

class C<T>{
    T x;
    void foo(T y)  { … }
}
Run Code Online (Sandbox Code Playgroud)

class C<T>{
    T x;
    <T> void foo(T y)  { … }
}
Run Code Online (Sandbox Code Playgroud)

还有一个问题:什么可以写在foo()的主体中,取代导致Java编译器接受C的第一个版本但拒绝C的第二个版本的"...".

我很困惑.

java generics object-oriented-analysis

3
推荐指数
1
解决办法
474
查看次数

领域驱动的设计理念

我正在使用域驱动设计构建的应用程序中的一些概念遇到一些麻烦.

我有以下几层:

  • 应用
  • 基础设施

所以,我们假设我有以下类:

  • Order
  • EmailService
  • OrderNotificationService
  • OrderApplicationService

显然,Order进入域层并OrderApplicationService进入应用层.这EmailService是用于发送电子邮件的通用服务,并在基础结构层中实现.这OrderNotificationService是发送订单通知的具体实现.该OrderNotificationService用途EmailService发送实际的电子邮件.

所以,我的第一个问题是:是否OrderNotificationService将实现为域服务,应用程序服务或基础结构服务?

对于我的下一个问题,让我们假设以下对象:

  • Employee
  • SalesforceService

假设当员工加入系统时,他们也应该被添加到Salesforce.这SalesforceService是一个使用Salesforce api注册用户的服务.请问SalesforceService可以实现为域服务或通用的基础设施服务,应用服务将通过向员工信息使用?

感谢您的建议.

architecture oop domain-driven-design separation-of-concerns object-oriented-analysis

3
推荐指数
1
解决办法
1829
查看次数

面向对象的设计原则抽象

在阅读抽象时,我遇到了以下声明

"抽象仅捕获与当前视角相关的对象的细节"

例如.从驾驶员的角度来看,Car class会是

  public class Car
  {
     void start();
     void applybrakes();
     void changegear();
     void stop();
   }
Run Code Online (Sandbox Code Playgroud)

从机械师的角度来看,Car class会是

  public class Car
  {
     void changeOil();
     void adjustBrakes();
   }
Run Code Online (Sandbox Code Playgroud)

我的问题,在设计系统时,我们是为一个用户视角(驱动程序还是机制)设计的,还是我们可以设计多个用户视角并根据用户类型进一步抽象出来?

希望我的问题很明确.

谢谢

oop abstraction object-oriented-analysis

3
推荐指数
1
解决办法
611
查看次数

"控制器"是Facade模式的一个例子吗?

我的问题很简单.今天,前端和后端都有很多框架,它们实现了MVC(模型 - 视图 - 控制)架构.

"MVC中的控制器"是Facade Design Pattern的一个例子吗?

model-view-controller design-patterns controller facade object-oriented-analysis

3
推荐指数
1
解决办法
1664
查看次数

Smalltalk - 在这种情况下如何避免类型攻击?

这是一个例子.

假设以下约束:

  • 一家商店只能有5种商品.
  • 食品店只能添加食品.
  • 一家服装店只能添加服装产品.
  • 混合商店可以添加两种产品.

我有以下课程:

  • AbstractShop

    • 食品店
    • 服装店
    • MixedShop
  • AbstractProduct

    • 服装
    • 餐饮

功能:

    AbstractShop>>addProduct: aProduct
    (products size < 5)
    ifTrue:[^ products add:aProduct]
    ifFalse:[ self error: 'A shop can only have five products' ]

    FoodShop>>addProduct: aProduct
    (aProduct isMemberOf: Food)
    ifTrue:[^ super addProduct: aProduct]
    ifFalse:[ self error: 'You can only add food products to a foodshop' ]

    ClothesShop>>addProduct: aProduct
    (aProduct isMemberOf: Clothing)
    ifTrue:[^ super addProduct: aProduct]
    ifFalse:[ self error: 'You can only add clothing products to a clothes shop' ] …
Run Code Online (Sandbox Code Playgroud)

smalltalk typechecking object-oriented-analysis

3
推荐指数
1
解决办法
76
查看次数

为什么Swing组件有.getParent()方法,是否违反了面向对象的原则?

我正在研究面向对象的设计原则和启发式方法.
在这本名为"面向对象设计启发式"的着名书籍中,Arthur J. Riel(1996)看到了这种启发式:

启发式4.13:一个类必须知道它包含什么,但它永远不应该知道谁包含它.基于J.Reil,主要原因是可重用性.

但是在Swing Structure中,我们可以直接访问Parent对象的引用.

例如: label.getParent()

所以我的问题是:
为什么swing组件有.getParent()方法?现有的这种方法有
哪些面向对象的原理启发式方法?

java oop swing software-design object-oriented-analysis

3
推荐指数
1
解决办法
98
查看次数