簡體   English   中英

我該如何建模?

[英]How do I model something like this?


我遇到了機器問題,這是那些棘手的部分之一,這讓我有些困惑。

這是用例:
學生參加一節。
系統不會驗證任何計划沖突。
系統驗證學生已達到要求的先決條件。

因此,我創建了4個對象,分別稱為Student,Section,Schedule和Subject。 我只向您展示我的“主題”課程,因為這讓我感到困惑。

我感到困惑的部分是:
系統驗證學生已達到要求的先決條件。

如何正確建模? 我有一個前提條件,它是一個主題對象,但是如果主題沒有前提條件,該怎么辦? 我有些猶豫,因為我不能只做類似的事情:

Subject math01 = new Subject(1,"math01",null);

我認為在對象上傳遞null是不合適的。 我想避免nullpointer異常。 我該如何解決? :(我想我做錯了。

public class Subject {

    //Each subject is worth three (3) units.
    private int units = 3;

    private int subjectID;
    private String subjectName;
    private Subject prerequisite; //<----How do I express that a subject has a prerequisite? Am I doing this right?

    public Subject(int subjectID, String subjectName, Subject prerequisite) {
        this.subjectID = subjectID;
        this.subjectName = subjectName;
        this.prerequisite = prerequisite;
    }

    public int getUnits() {
        return units;
    }

    public int getSubjectID() {
        return subjectID;
    }

    public String getSubjectName() {
        return subjectName;
    }

    public Subject getPrerequisite(){
        return prerequisite;
    }

    public boolean conflictWith(Subject newSubject){
        return (this.subjectID == newSubject.getSubjectID());
    }

}

考慮添加第二個不需要先決條件的構造函數。 然后,您不必從API客戶端傳遞null。

我還要添加一個方便的方法hasPrerequisite(),以檢查Subject是否確實具有先決條件。 這樣,API的客戶端也不必自己執行null檢查。

使用空對象模式 我的建議是讓您使用Guava庫,以便可以使用Optional類。 這是解釋其用法的教程

暫無
暫無

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

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