Menu
CoddyTech

Resumen - Registros de estudiantes

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy. Lección 35 de 110.

challenge icon

Desafío

Fácil

Vamos a crear un sistema de expedientes académicos que reúna todos los conceptos de encapsulación que has aprendido en este capítulo. Crearás una clase Student que proteja correctamente los datos académicos confidenciales y, al mismo tiempo, proporcione acceso controlado mediante getters, setters y propiedades calculadas.

Organizarás el código en dos archivos:

  • student.dart: Define una clase Student que gestione los expedientes académicos con la encapsulación adecuada:
    • Un final String id: el ID del estudiante no debería cambiar nunca después de su creación
    • Un String name público: los nombres se pueden actualizar
    • Una List<int> _grades privada: la lista sin procesar de calificaciones debería estar protegida
    • Un constructor que reciba el id, el nombre y una lista inicial de calificaciones
    • Un getter gradeCount que devuelva cuántas calificaciones se han registrado
    • Un getter calculado average que calcule y devuelva el promedio de todas las calificaciones como double (devuelve 0.0 si no hay calificaciones)
    • Un getter calculado letterGrade que devuelva una letra según el promedio: 'A' para 90 o más, 'B' para 80-89, 'C' para 70-79, 'D' para 60-69 y 'F' para menos de 60
    • Un método addGrade(int grade) que solo acepte calificaciones entre 0 y 100 (inclusive). Si es válida, añade la calificación e imprime Grade [grade] added for [name]. Si no es válida, imprime Invalid grade: [grade]
    • Un método getHighestGrade() que devuelva la calificación más alta, o 0 si no hay calificaciones
    • Un método displayRecord() que muestre el resumen académico del estudiante
  • main.dart: Importa la clase de estudiante y demuestra la encapsulación en acción:
    • Crea un estudiante con el id 'STU001', el nombre 'Emma' y las calificaciones iniciales [85, 92, 78]
    • Llama a displayRecord()
    • Añade una calificación de 95
    • Intenta añadir una calificación no válida de 150
    • Añade una calificación de 88
    • Llama a displayRecord()
    • Imprime Highest grade: [highest]

El método displayRecord() debería imprimir con este formato:

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

Resultado esperado:

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

Pruébalo tú mismo

import 'student.dart';

void main() {
  // TODO: Crea un estudiante con id 'STU001', nombre 'Emma' y calificaciones iniciales [85, 92, 78]
  
  // TODO: Llama a displayRecord()
  
  // TODO: Añade una calificación de 95
  
  // TODO: Intenta añadir una calificación no válida de 150
  
  // TODO: Añade una calificación de 88
  
  // TODO: Llama a displayRecord()
  
  // TODO: Imprime "Highest grade: [highest]"
}

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Dart online