簡體   English   中英

如何將帶有構造函數的 UML class 轉換為 java object?

[英]How to convert an UML class with a constructor to a java object?

我正在嘗試創建一個構造函數來創建一組空作業分數(每個學生 6 個)和一個空考試分數數組(每個學生 3 個)。

getHomeworkAverage() 方法返回學生家庭作業的平均分。 getFinalScore() 方法使用以下評分返回每個學生的最終成績:(exam1 為 15%,exam2 為 25%,exam3 為 30%,家庭作業平均分為 30%)。

UML 圖在這里

public class Student {
    private String name;
    private int[] homeworks;
    private int[] exams;
    
    private int[] homeworkScores;
    private int[] examScores;
    
    private double homeworkAvergae;
    private int finalScore;

    public Student(String name, int[] homeworks, int[] exams, int[] homeworkScores, int[] examScores, double homeworkAvergae, int finalScore) {
        this.name = name;
        this.homeworks = homeworks;
        this.exams = exams;
        this.homeworkScores = homeworkScores;
        this.examScores = examScores;
        this.homeworkAvergae = homeworkAvergae;
        this.finalScore = finalScore;
    }

    public int[] getHomeworkScores() {
        return homeworkScores;
    }

    public void setHomeworkScores(int[] homeworkScores) {
        this.homeworkScores = homeworkScores;
    }
    
    public double getHomeworkAvergae() {
        return homeworkAvergae;
    }
    
    public int[] getExamScores() {
        return examScores;
    }

    public void setExamScores(int[] examScores) {
        this.examScores = examScores;
    }
    
    public int getFinalScore() {
        return finalScore;
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int[] getHomeworks() {
        return homeworks;
    }

    public void setHomeworks(int[] homeworks) {
        this.homeworks = homeworks;
    }

    public int[] getExams() {
        return exams;
    }

    public void setExams(int[] exams) {
        this.exams = exams;
    }
}

圖中有構造函數嗎?

如果按照書上的說法,您的 UML class 不包含任何構造函數。 UML 中的構造函數將是具有構造型«Create»並返回Student的操作:

+ «Create» Student(name:String):Student

當然,一些主流的 OOP 語言使用命名為 class 的構造函數的約定,並且沒有指定返回類型。 這就是為什么許多人會理解Student(name:String)作為構造函數,盡管 UML 不一致。

圖中的構造函數簽名是什么?

假設Student(name:String) ,您需要按照設計中的預見實現此 class :

public class Student {
    ...
    public Student(String name) {
    ...
    }
}

其他備注

如果您在初始化 arrays 時遇到困難,您可能會在 SO 上找到很多答案 我的第一個猜測是這樣的:

homeworks = new int[6];
...

我不會審查代碼,也不會補全缺失的部分。 我唯一想強調的是數組字段的 getter 返回對對象數組的引用,這允許在沒有控制的情況下更新數組的內容。 同樣,設置數組,復用另一個數組,不覆蓋當前數組內容。 在這里查看如何克隆 arrays 以避免這些風險

你的問題是如何構造構造函數?

    int[] homeworks = new int[]{ 1,2,3,4,5,6,7,8,9,10 };
    int[] exams = new int[]{ 1,2,3,4,5,6,7,8,9,10 };
    int[] homeworkScores = new int[]{ 1,2,3,4,5,6,7,8,9,10 };
    int[] examScores = new int[]{ 1,2,3,4,5,6,7,8,9,10 };
    Student student = new Student(
            "Name",
            homeworks,
            exams,
            homeworkScores,
            examScores,
            6.0,
            6
    );

暫無
暫無

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

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