Menu
Coddy logo textTech

まとめ:学生の記録

CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 35/110。

challenge icon

チャレンジ

簡単

この章で学んだすべてのカプセル化の概念を統合した、学生記録システムを構築しましょう。機密性の高い学業データを適切に保護しながら、ゲッター、セッター、および計算プロパティを通じて制御されたアクセスを提供する Student クラスを作成します。

コードを2つのファイルに整理します:

  • student.dart: 適切なカプセル化を使用して学業成績を管理する Student クラスを定義します:
    • final String id - 学生IDは作成後に変更してはいけません
    • パブリックな String name - 名前は更新可能です
    • プライベートな List<int> _grades - 生の成績リストは保護される必要があります
    • id、name、および成績の初期リストを受け取るコンストラクタ
    • 記録されている成績の数を返すゲッター gradeCount
    • すべての成績の平均を計算し、double として返す計算ゲッター average(成績が存在しない場合は 0.0 を返します)
    • 平均に基づいて文字を返す計算ゲッター letterGrade:90以上は 'A'、80-89は 'B'、70-79は 'C'、60-69は 'D'、60未満は 'F'
    • 0から100(両端を含む)の間の成績のみを受け入れるメソッド addGrade(int grade)。有効な場合は成績を追加し、Grade [grade] added for [name] と出力します。無効な場合は Invalid grade: [grade] と出力します
    • 最高成績を返すメソッド getHighestGrade()。成績が存在しない場合は 0 を返します
    • 学生の学業成績の要約を表示するメソッド displayRecord()
  • main.dart: 学生クラスをインポートし、カプセル化の動作を実演します:
    • id 'STU001'、名前 'Emma'、初期成績 [85, 92, 78] で学生を作成します
    • displayRecord() を呼び出します
    • 成績 95 を追加します
    • 無効な成績 150 の追加を試みます
    • 成績 88 を追加します
    • displayRecord() を呼び出します
    • Highest grade: [highest] と出力します

displayRecord() メソッドは、次の形式で出力する必要があります:

===== Student Record =====
ID: [id]
Name: [name]
Grades Recorded: [gradeCount]
Average: [average]
Letter Grade: [letterGrade]

期待される出力:

===== Student Record =====
ID: STU001
Name: Emma
Grades Recorded: 3
Average: 85.0
Letter Grade: B
Grade 95 added for Emma
Invalid grade: 150
Grade 88 added for Emma
===== Student Record =====
ID: STU001
Name: Emma
Grades Recorded: 5
Average: 87.6
Letter Grade: B
Highest grade: 95

自分で試してみよう

import 'student.dart';

void main() {
  // TODO: ID 'STU001'、名前 'Emma'、初期成績 [85, 92, 78] で学生を作成する
  
  // TODO: displayRecord() を呼び出す
  
  // TODO: 成績 95 を追加する
  
  // TODO: 無効な成績 150 の追加を試行する
  
  // TODO: 成績 88 を追加する
  
  // TODO: displayRecord() を呼び出す
  
  // TODO: "Highest grade: [highest]" を出力する
}

オブジェクト指向プログラミングのすべてのレッスン