まとめ:学生の記録
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まとめ:ジェネリックなストレージ自分で練習してみよう: Dartオンラインコンパイラ