阿摩線上測驗 登入

申論題資訊

試卷:99年 - 099年專門職業及技術人員高等建築師、技師暨普通不動產經紀人、記帳士資訊技師#32440
科目:程式設計
年份:99年
排序:0

題組內容

一個班級 40 位同學,考完期中考,已經知道國文、數學成績,請撰寫適當程式碼解決 下列問題(若題目規範有不周之處,請自行假設並說明之);程式必須採取物件導向方 式設計,儘量採用類別、繼承、封裝、多型等技巧,可採用上述技巧而未採用者將會影 響其得分:

申論題內容

一、適合解決下列事務的資料表達方式。(10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

為了解決關於一個班級40位同學的期中考國文和數學成績的管理問題,我們可以採用面向對象的方式設計。下麵是一種可能的設計方案,包括類的設計、屬性封裝、以及繼承和多態的應用。這個設計假設我們需要處理的主要事務包括存儲成績、計算每位同學的平均成績、以及可能的擴展到其他科目。

 

1. 基本類設計

首先,我們定義一個Student類,用來表示一個學生的基本資訊和成績。

 

java

Copy code

public class Student {

    private String name;

    private int chineseScore;

    private int mathScore;

 

    public Student(String name, int chineseScore, int mathScore) {

        this.name = name;

        this.chineseScore = chineseScore;

        this.mathScore = mathScore;

    }

 

    // Getter Setter 方法

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

 

    public int getChineseScore() {

        return chineseScore;

    }

 

    public void setChineseScore(int chineseScore) {

        this.chineseScore = chineseScore;

    }

 

    public int getMathScore() {

        return mathScore;

    }

 

    public void setMathScore(int mathScore) {

        this.mathScore = mathScore;

    }

 

    // 計算平均成績

    public double getAverageScore() {

        return (chineseScore + mathScore) / 2.0;

    }

}

2. 班級管理類

然後,我們定義一個Classroom類,用來管理一個班級的學生列表以及提供一些班級級別的操作,比如添加學生、獲取學生的平均成績等。

 

java

Copy code

import java.util.ArrayList;

import java.util.List;

 

public class Classroom {

    private List<Student> students;

 

    public Classroom() {

        this.students = new ArrayList<>();

    }

 

    // 添加學生

    public void addStudent(Student student) {

        students.add(student);

    }

 

    // 獲取班級平均成績

    public double getClassAverageScore() {

        double total = 0;

        for (Student student : students) {

            total += student.getAverageScore();

        }

        return total / students.size();

    }

 

    // 獲取所有學生資訊

    public List<Student> getStudents() {

        return students;

    }

}

3. 設計考慮

封裝:通過使用私有屬性和公共方法(getters/setters),我們封裝了學生的數據。

繼承:如果將來有不同類型的學生(如特殊需要學生),我們可以讓特殊的學生類繼承Student類,並添加特定的屬性和方法。

多態:如果有不同的計算平均成績的方式,我們可以通過創建一個介面或抽象類來定義計算平均成績的方法,然後讓不同的子類以不同的方式實現這個方法。

這種設計方式提供了一定的靈活性和擴展性,使得未來的修改和添加新功能變得更加容易。