まとめ:学生の記録
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 35/110。
チャレンジ
簡単この章で学んだすべてのカプセル化の概念を統合した、学生記録システムを構築しましょう。機密性の高い学業データを適切に保護しながら、ゲッター、セッター、および計算プロパティを通じて制御されたアクセスを提供する 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]と出力します
- id
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]" を出力する
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ