요약 - 학생 기록
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 110개 중 35번째.
챌린지
쉬움이 장에서 배운 캡슐화 개념을 모두 적용해 학생 기록 시스템을 만들어 봅시다. 민감한 학업 데이터를 적절히 보호하면서 getter, setter, 계산된 속성을 통해 제어된 접근을 제공하는 Student 클래스를 만들 거예요.
코드를 두 파일로 나누어 구성합니다.
student.dart: 적절한 캡슐화를 적용해 학업 기록을 관리하는Student클래스를 정의합니다.final String id- 학생 ID는 생성된 후 절대 변경되지 않아야 합니다.- 공개
String name- 이름은 업데이트할 수 있습니다. - 비공개
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]를 출력합니다. - 가장 높은 성적을 반환하는 메서드
getHighestGrade(). 성적이 없으면0을 반환합니다. - 학생의 학업 요약을 표시하는 메서드
displayRecord()
main.dart: 학생 클래스를 가져오고 캡슐화가 작동하는 모습을 보여 줍니다.- id가
'STU001', name이'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]"를 출력하세요
}
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 Dart 컴파일러