簡體   English   中英

"這些實體的層次結構"

[英]Hierarchy structure for these entities

我需要為以下實體定義一個面向對象的類層次結構:計算機、處理器、賽揚處理器、速龍處理器、惠普、戴爾、鼠標、鍵盤。

我想出了以下幾點:

public interface Computer
{
    public void mouse();
    public void keyboard();
}
public class Processor
{
   public void Celeron(){ }
   public void Athlon(){ }
}
public class HP extends Processor,implements Computer
{
}

有人能指出這個設計有什么問題嗎?另外,如果有人能提出更好的設計,那就太好了。

謝謝。

我寧願說一台Computer 有一個 Processor
HP 是一台 Computer ; Dell 是一台 Computer
Celeron Processor ; Athlon Processor
而一個Computer 有一個 Mouse和一個Keyboard
有一個 :協會。
是一個 :繼承。

我認為可能會執行以下操作:

public interface IInputDevice {}
public interface IProcessor {}

public abstract class Computer 
{
    IInputDevice[] inputDevices;
    IProcessor processor;
}

public class Mouse implements IInputDevice {}
public class KeyBoard implements IInputDevice {}

public class AthlonProcessor implements IProcessor {}
public class CeleronProcessor implements IProcessor {}

public abstract class HP extends Computer
{

}

public abstract class Dell extends Computer
{

}

無論使用哪種編程語言,都請停止並考慮如何構建一個信息模型來表示所涉及的事物。 您可以使用幾種關系:

  • 某些事物或概念是對某些其他概念的改進或可以與之互換,例如“ Celeron處理器”是處理器。 繼承可以為這種關系建模,但是並非所有繼承都可以為這種關系建模。

  • 有個

    某種事物包含或與某種其他事物相關聯,例如連接了鍵盤的計算機。 結構中的成員變量或字段可以將此關系建模為按值包含 (包括控制所包含事物的生命周期)或按引用聚合 (通常不控制關聯事物的生命周期)。

  • 用途

    has-a更籠統,一件事需要引用另一件事來完成其工作。 這可以表示為成員函數或方法的必需參數。

對於您的問題,我們可以看到Celeron 處理器,計算機具有處理器(一個或多個),HP 銷售計算機公司,或者計算機具有負責任的供應商(一個或多個)。 ),而HP 供應商。 惠普也可以出售鼠標,一台計算機可以連接零或更多的鼠標。

我不願意告訴您如何使用Java構建這樣的模型。 有許多解決方案,探索不止一種解決方案還可以洞悉為什么關系模型比Java的類和接口工具更能表達信息模型。

我寧願說,計算機有處理器。 惠普是一台電腦; 戴爾是一台計算機。 賽揚是處理器; Athlon 是一個處理器。 計算機有鼠標和鍵盤。 有一個:公會。 是一個:繼承。

您正在實現鼠標和鍵盤以及celeron和athlon作為方法。 它們應該是單獨的類。 計算機也應該是一類,而不是接口。

而且我不明白您為什么要讓“ HP”擴展處理器並實施計算機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM