Menu
CoddyTech

요약 - 학생 기록

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

challenge icon

챌린지

쉬움

이 장에서 배운 캡슐화 개념을 모두 적용해 학생 기록 시스템을 만들어 봅시다. 민감한 학업 데이터를 적절히 보호하면서 getter, setter, 계산된 속성을 통해 제어된 접근을 제공하는 Student 클래스를 만들 거예요.

코드를 두 파일로 나누어 구성합니다.

  • student.dart: 적절한 캡슐화를 적용해 학업 기록을 관리하는 Student 클래스를 정의합니다.
    • final String id - 학생 ID는 생성된 후 절대 변경되지 않아야 합니다.
    • 공개 String name - 이름은 업데이트할 수 있습니다.
    • 비공개 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]를 출력합니다.
    • 가장 높은 성적을 반환하는 메서드 getHighestGrade(). 성적이 없으면 0을 반환합니다.
    • 학생의 학업 요약을 표시하는 메서드 displayRecord()
  • main.dart: 학생 클래스를 가져오고 캡슐화가 작동하는 모습을 보여 줍니다.
    • id가 'STU001', name이 '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', 이름이 'Emma', 초기 성적이 [85, 92, 78]인 학생을 생성하세요
  
  // TODO: displayRecord()를 호출하세요
  
  // TODO: 성적 95를 추가하세요
  
  // TODO: 유효하지 않은 성적 150을 추가해 보세요
  
  // TODO: 성적 88을 추가하세요
  
  // TODO: displayRecord()를 호출하세요
  
  // TODO: "Highest grade: [highest]"를 출력하세요
}

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

직접 연습해 보세요: 온라인 Dart 컴파일러