[英]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.