Menu
Coddy logo textTech

Riepilogo - Registri degli studenti

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 35 di 110.

challenge icon

Sfida

Facile

Costruiamo un sistema di registri degli studenti che riunisca tutti i concetti di incapsulamento che hai imparato in questo capitolo. Creerai una classe Student che protegge correttamente i dati accademici sensibili, fornendo al contempo un accesso controllato tramite getter, setter e proprietà calcolate.

Organizzerai il codice in due file:

  • student.dart: Definisci una classe Student che gestisce i registri accademici con un incapsulamento appropriato:
    • Un final String id - l'ID dello studente non dovrebbe mai cambiare dopo la creazione
    • Un String name pubblico - i nomi possono essere aggiornati
    • Un List<int> _grades privato - l'elenco dei voti grezzi dovrebbe essere protetto
    • Un costruttore che accetta l'ID, il nome e un elenco iniziale di voti
    • Un getter gradeCount che restituisce il numero di voti registrati
    • Un getter calcolato average che calcola e restituisce la media di tutti i voti come double (restituisci 0.0 se non ci sono voti)
    • Un getter calcolato letterGrade che restituisce una lettera in base alla media: 'A' per 90+, 'B' per 80-89, 'C' per 70-79, 'D' per 60-69 e 'F' per meno di 60
    • Un metodo addGrade(int grade) che accetta solo voti compresi tra 0 e 100 (inclusi). Se il voto è valido, aggiungilo e stampa Grade [grade] added for [name]. Se non è valido, stampa Invalid grade: [grade]
    • Un metodo getHighestGrade() che restituisce il voto più alto, oppure 0 se non ci sono voti
    • Un metodo displayRecord() che mostra il riepilogo accademico dello studente
  • main.dart: Importa la classe dello studente e mostra l'incapsulamento in azione:
    • Crea uno studente con ID 'STU001', nome 'Emma' e voti iniziali [85, 92, 78]
    • Chiama displayRecord()
    • Aggiungi un voto pari a 95
    • Prova ad aggiungere un voto non valido pari a 150
    • Aggiungi un voto pari a 88
    • Chiama displayRecord()
    • Stampa Highest grade: [highest]

Il metodo displayRecord() dovrebbe stampare in questo formato:

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

Output previsto:

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

Provalo tu

import 'student.dart';

void main() {
  // TODO: Crea uno studente con id 'STU001', nome 'Emma' e voti iniziali [85, 92, 78]
  
  // TODO: Chiama displayRecord()
  
  // TODO: Aggiungi un voto di 95
  
  // TODO: Prova ad aggiungere un voto non valido di 150
  
  // TODO: Aggiungi un voto di 88
  
  // TODO: Chiama displayRecord()
  
  // TODO: Stampa "Highest grade: [highest]"
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online