요약 - 학생 기록
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 35번째.
챌린지
쉬움이 장에서 배운 모든 캡슐화 개념을 통합하는 학생 기록 시스템을 구축해 보겠습니다. 민감한 학업 데이터를 적절히 보호하면서 getter, setter 및 계산된 속성(computed properties)을 통해 제어된 액세스를 제공하는 Student 클래스를 만들 것입니다.
코드를 두 개의 파일로 구성합니다:
student.dart: 적절한 캡슐화를 통해 학업 기록을 관리하는Student클래스를 정의합니다:final String id- 학생 ID는 생성 후 절대 변경되지 않아야 합니다.- 공개(public)
String name- 이름은 업데이트될 수 있습니다. - 비공개(private)
List<int> _grades- 원본 성적 리스트는 보호되어야 합니다. - id, name, 초기 성적 리스트를 인자로 받는 생성자
- 기록된 성적의 개수를 반환하는 getter
gradeCount - 모든 성적의 평균을 계산하여
double로 반환하는 계산된 getteraverage(성적이 없으면0.0을 반환) - 평균에 따라 등급을 반환하는 계산된 getter
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]를 출력합니다. - 가장 높은 성적을 반환하거나 성적이 없으면
0을 반환하는getHighestGrade()메서드 - 학생의 학업 요약을 보여주는
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', name 'Emma', 초기 점수 [85, 92, 78]를 가진 학생을 생성하세요
// TODO: displayRecord()를 호출하세요
// TODO: 점수 95를 추가하세요
// TODO: 유효하지 않은 점수 150을 추가해 보세요
// TODO: 점수 88을 추가하세요
// TODO: displayRecord()를 호출하세요
// TODO: "Highest grade: [highest]"를 출력하세요
}