Menu
Coddy logo textTech

요약 - 학생 기록

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 35번째.

challenge icon

챌린지

쉬움

이 장에서 배운 모든 캡슐화 개념을 통합하는 학생 기록 시스템을 구축해 보겠습니다. 민감한 학업 데이터를 적절히 보호하면서 getter, setter 및 계산된 속성(computed properties)을 통해 제어된 액세스를 제공하는 Student 클래스를 만들 것입니다.

코드를 두 개의 파일로 구성합니다:

  • student.dart: 적절한 캡슐화를 통해 학업 기록을 관리하는 Student 클래스를 정의합니다:
    • final String id - 학생 ID는 생성 후 절대 변경되지 않아야 합니다.
    • 공개(public) String name - 이름은 업데이트될 수 있습니다.
    • 비공개(private) List<int> _grades - 원본 성적 리스트는 보호되어야 합니다.
    • id, name, 초기 성적 리스트를 인자로 받는 생성자
    • 기록된 성적의 개수를 반환하는 getter gradeCount
    • 모든 성적의 평균을 계산하여 double로 반환하는 계산된 getter average (성적이 없으면 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]를 출력합니다.

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]"를 출력하세요
}

객체 지향 프로그래밍의 모든 레슨