Podsumowanie — dane uczniów
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 35 z 110.
Wyzwanie
ŁatwyZbudujmy 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 jakodouble(zwraca0.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świetlGrade [grade] added for [name]. Jeśli jest nieprawidłowa, wyświetlInvalid grade: [grade] - Metoda
getHighestGrade(), która zwraca najwyższą ocenę albo0, 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]
- Utwórz obiekt ucznia o identyfikatorze
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: 95Spró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
1Podstawy OOP
Pliki zewnętrzneBiblioteki i importyWprowadzenie do OOPKlasy a obiektySłowo kluczowe thisMetodyZmienne instancjiPodstawy konstruktorówPowtórka – prosty kalkulator4Bezpieczeństwo wartości null
Wprowadzenie do bezpieczeństwa wartości nullTypy dopuszczające null i niedopuszczające nullOperatory ? i !Słowo kluczowe late a bezpieczeństwo wartości nullOperatory uwzględniające nullBezpieczeństwo wartości null w klasachPodsumowanie — system profili użytkowników7Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjneMetody abstrakcyjneInterfejsy w DartInterfejsy niejawneImplementowanie a rozszerzanieWiele interfejsówPowtórka — kalkulator kształtów10Kolekcje i typy generyczne
Przegląd List, Set i MapKolekcje bezpieczne typowoKlasy generyczneMetody generyczneOgraniczenia typów generycznychIterable i IteratorPowtórka — generyczne przechowywanie danych13Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieMetody rozszerzająceKlasy wywoływalneKlasy zapieczętowane (Dart 3)Rekordy (Dart 3)Wzorce i dopasowywanie (3.0)Typy wyliczeniowe z metodami16Projekt: Zarządzanie biblioteką
Omówienie projektuKlasy książek i użytkowników2Konstruktory w Dart
Konstruktor domyślnyKonstruktory nazwaneListy inicjalizująceKonstruktory stałeKonstruktory fabryczneKonstruktory przekierowującePodsumowanie — budowanie kształtów5Hermetyzacja
Elementy publiczne a prywatneKonwencja prefiksu _Prywatność na poziomie bibliotekiGettery i settery — szczegółowoUkrywanie informacjiPodsumowanie — dane uczniów8Domieszki
Wprowadzenie do domieszekTworzenie domieszekKorzystanie z wielu domieszekSłowo kluczowe on w domieszkachDomieszka a dziedziczenieDomieszka a interfejsPodsumowanie – system zwierząt11Metody specjalne
Nadpisanie toString()Nadpisanie hashCode i ==Interfejs ComparableMetoda call()Nadpisanie noSuchMethodPodsumowanie — własna kolekcja14Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy3Właściwości klas
Elementy instancji a elementy statycznePola final i constZmienne inicjalizowane z opóźnieniemMetody i pola statyczneGettery i setteryPowtórzenie – menedżer kont bankowych6Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superPrzesłanianie metodAdnotacja @overrideSłowo kluczowe final dla klasKonstruktory i dziedziczeniePowtórzenie – hierarchia pracowników9Polimorfizm
Podstawy polimorfizmuPolimorfizm za pomocą interfejsówSprawdzanie typu w czasie działaniaOperatory is i asSłowo kluczowe covariantPodsumowanie — procesor płatnościPoćwicz samodzielnie: Kompilator Dart online