Menu
Coddy logo textTech

Podsumowanie — dane uczniów

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 35 z 110.

challenge icon

Wyzwanie

Łatwy

Zbudujmy system ewidencji ocen uczniów, który łączy wszystkie poznane przez Ciebie w tym rozdziale koncepcje hermetyzacji. Utworzysz klasę Student, która odpowiednio chroni wrażliwe dane dotyczące nauki, zapewniając jednocześnie kontrolowany dostęp za pomocą getterów, setterów i właściwości obliczanych.

Podzielisz kod na dwa pliki:

  • student.dart: Zdefiniuj klasę Student, która zarządza dokumentacją szkolną z odpowiednią hermetyzacją:
    • final String id — identyfikator ucznia nie powinien się zmieniać po utworzeniu
    • Publiczne String name — imię można aktualizować
    • Prywatne List<int> _grades — surowa lista ocen powinna być chroniona
    • Konstruktor, który przyjmuje identyfikator, imię i początkową listę ocen
    • Getter gradeCount, który zwraca liczbę zapisanych ocen
    • Obliczany getter average, który oblicza i zwraca średnią wszystkich ocen jako double (zwraca 0.0, jeśli nie ma żadnych ocen)
    • Obliczany getter letterGrade, który zwraca literę na podstawie średniej: 'A' dla 90+, 'B' dla 80-89, 'C' dla 70-79, 'D' dla 60-69 i 'F' dla wyników poniżej 60
    • Metoda addGrade(int grade), która przyjmuje tylko oceny od 0 do 100 (włącznie). Jeśli ocena jest prawidłowa, dodaj ją i wyświetl Grade [grade] added for [name]. Jeśli jest nieprawidłowa, wyświetl Invalid grade: [grade]
    • Metoda getHighestGrade(), która zwraca najwyższą ocenę albo 0, jeśli nie ma żadnych ocen
    • Metoda displayRecord(), która wyświetla podsumowanie osiągnięć ucznia
  • main.dart: Zaimportuj klasę ucznia i pokaż, jak działa hermetyzacja:
    • Utwórz obiekt ucznia o identyfikatorze 'STU001', imieniu 'Emma' i początkowych ocenach [85, 92, 78]
    • Wywołaj displayRecord()
    • Dodaj ocenę 95
    • Spróbuj dodać nieprawidłową ocenę 150
    • Dodaj ocenę 88
    • Wywołaj displayRecord()
    • Wyświetl Highest grade: [highest]

Metoda displayRecord() powinna wyświetlać dane w tym formacie:

===== Student Record =====
ID: [id]
Name: [name]
Grades Recorded: [gradeCount]
Average: [average]
Letter Grade: [letterGrade]

Oczekiwany wynik:

===== 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

Spróbuj swoich sił

import 'student.dart';

void main() {
  // TODO: Utwórz ucznia z identyfikatorem 'STU001', imieniem 'Emma' i początkowymi ocenami [85, 92, 78]
  
  // TODO: Wywołaj displayRecord()
  
  // TODO: Dodaj ocenę 95
  
  // TODO: Spróbuj dodać nieprawidłową ocenę 150
  
  // TODO: Dodaj ocenę 88
  
  // TODO: Wywołaj displayRecord()
  
  // TODO: Wypisz "Highest grade: [highest]"
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online