Menu
Coddy logo textTech

Riepilogo - Sistema di gestione dei registri degli studenti

Fa parte della sezione Programmazione orientata agli oggetti del percorso PHP di Coddy. Lezione 43 di 91.

challenge icon

Sfida

Facile

Costruiamo un sistema di gestione dei dati degli studenti che riunisca tutti i concetti di incapsulamento che hai imparato in questo capitolo. Creerai un sistema ben organizzato che gestisce in modo sicuro i dati degli studenti, usando la promozione dei parametri del costruttore, proprietà private, getter e setter con convalida e occultamento delle informazioni.

Organizzerai il codice in tre file:

  • Student.php: crea una classe Student usando la promozione dei parametri del costruttore per un $name privato (stringa) e un $studentId privato (stringa). Includi anche una proprietà array privata $grades (inizializzata come vuota). La classe Student deve avere:
    • getName(): restituisce il nome dello studente
    • getStudentId(): restituisce l'ID dello studente
    • addGrade(int $grade): aggiunge un voto solo se è compreso tra 0 e 100 (inclusi)
    • getAverage(): restituisce la media di tutti i voti come float (restituisce 0.0 se non ci sono voti)
    • getGradeCount(): restituisce il numero di voti registrati
  • Classroom.php: crea una classe Classroom che gestisce una raccolta di studenti. Usa un array privato per memorizzare gli studenti. Includi il file Student. La classe Classroom deve avere:
    • Un costruttore che accetta un $roomName privato (stringa) usando la promozione dei parametri del costruttore
    • addStudent(Student $student): aggiunge uno studente alla classe
    • getStudentCount(): restituisce il numero di studenti iscritti
    • getClassAverage(): calcola la media delle medie di tutti gli studenti (restituisce 0.0 se non ci sono studenti o voti)
    • getRoomName(): restituisce il nome della classe
  • main.php: includi il file Classroom. Riceverai cinque input: il nome di una classe, il nome di uno studente, l'ID dello studente e due voti. Crea una Classroom con il nome della classe. Crea uno Student con il nome e l'ID, aggiungi entrambi i voti (convertiti in interi), quindi aggiungi lo studente alla classe. Stampa quattro righe:
    • Il nome della classe
    • Il nome dello studente seguito dalla sua media formattata con 1 cifra decimale: "[name]: [average]"
    • Il numero di voti di quello studente
    • La media della classe formattata con 1 cifra decimale

Questo sistema dimostra un incapsulamento corretto: i voti sono protetti dalla modifica diretta, le medie vengono calcolate internamente senza esporre i dati grezzi e tutti i dati passano attraverso metodi controllati. La classe non deve sapere come gli studenti calcolano le proprie medie. Si limita a chiedere il risultato.

Provalo tu

<?php

require_once 'Classroom.php';

// Leggi i dati di input
$roomName = trim(fgets(STDIN));
$studentName = trim(fgets(STDIN));
$studentId = trim(fgets(STDIN));
$grade1 = intval(trim(fgets(STDIN)));
$grade2 = intval(trim(fgets(STDIN)));

// TODO: Crea una Classroom con il nome dell'aula

// TODO: Crea uno Student con il nome e l'ID

// TODO: Aggiungi entrambi i voti allo studente

// TODO: Aggiungi lo studente alla classe

// TODO: Stampa il nome dell'aula

// TODO: Stampa il nome dello studente seguito dalla sua media formattata con 1 cifra decimale: "[name]: [average]"

// TODO: Stampa il numero di voti di quello studente

// TODO: Stampa la media della classe formattata con 1 cifra decimale

?>

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore PHP online