Menu
CoddyTech

まとめ:学生の記録

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]" を出力する
}

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

自分で練習してみよう: Dartオンラインコンパイラ