我正在修復系統的OOP設計,因爲我認爲該體系結構存在缺陷。爲了正確的代碼重用和關係,我必須重寫正確的對象方向應用程序的類,例如繼承,接口和聚合/組合。應用OOP聚合概念的正確方法
說我有課程類,主題類,學年班,年級班,我想申請HAS-A
(聚集)的概念作爲
課程HAS-A
主題 課程HAS-A
年的水平 課程HAS-A
學年 主題HAS-A
學年 主題HAS-A
年的水平
是否足夠做到這一點,如:
public class Curriculum {
SchoolYear schoolYear = new SchoolYear();
YearLevel yearLevel = new YearLevel();
}
或使用構造函數初始化:
public class Curriculum {
SchoolYear schoolYear;
YearLevel yearLevel;
public Curriculum(SchoolYear sy, YearLevel yl){
this.schoolYear = sy;
this.yearLevel = yl;
}
或者就像一個方法中創建類的實例:
public DefaultListModel getAllYearLevel(){
YearLevel yl = new YearLevel();
return yl.getAllYearLevels();
}
,我不認爲這是正確的,因爲我沒有看到重新創建相同的方法只是說課程類HAS-A
YearLevel。
考慮到課程由年級,學科和學年組成,我如何實施或應用HAS-A
概念?
在這一點上,我不能繼續使用setters和getters,因爲我不知道哪個方法是正確的。我希望能夠正確應用面向對象的概念。
我會很感激任何建議或幫助。
#3不是聚合。一旦你返回它,你構造的新東西與它的「父」沒有更多的關係。在1到2之間,你可以辯論組合/聚合和關聯之間的差異,但這沒有意義。做適合自己情況的最佳方法。 – zapl
這些SchoolYear和YearLevel構造函數沒有參數嗎?哪一年?哪個級別?這些價值對象還是可以共享並擁有自己的身份? – plalx