Menu
Coddy logo textTech

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 construir un sistema de expedientes estudiantiles que reúna todos los conceptos de encapsulación que has aprendido en este capítulo. Crearás una clase Student que proteja adecuadamente los datos académicos sensibles mientras proporciona acceso controlado a través de getters, setters y propiedades calculadas.

Organizarás tu código en dos archivos:

  • student.dart: Define una clase Student que gestione los expedientes académicos con una encapsulación adecuada:
    • Un final String id - el ID del estudiante nunca debe cambiar después de la creación
    • Un String name público - los nombres se pueden actualizar
    • Un List<int> _grades privado - la lista de calificaciones original debe estar protegida
    • Un constructor que reciba el id, el nombre y una lista inicial de calificaciones
    • Un getter gradeCount que devuelva cuántas calificaciones hay registradas
    • Un getter calculado average que calcule y devuelva el promedio de todas las calificaciones como un double (devuelve 0.0 si no existen calificaciones)
    • Un getter calculado letterGrade que devuelva una letra basada en el promedio: 'A' para 90+, '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 existen calificaciones
    • Un método displayRecord() que muestre el resumen académico del estudiante
  • main.dart: Importa tu clase de estudiante y demuestra la encapsulación en acción:
    • Crea un estudiante con id 'STU001', nombre 'Emma', y calificaciones iniciales [85, 92, 78]
    • Llama a displayRecord()
    • Añade una calificación de 95
    • Intenta añadir una calificación inválida de 150
    • Añade una calificación de 88
    • Llama a displayRecord()
    • Imprime Highest grade: [highest]

El método displayRecord() debe imprimir en este formato:

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

Salida esperada:

===== 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: Crear un estudiante con id 'STU001', nombre 'Emma' y calificaciones iniciales [85, 92, 78]
  
  // TODO: Llamar a displayRecord()
  
  // TODO: Añadir una calificación de 95
  
  // TODO: Intentar añadir una calificación inválida de 150
  
  // TODO: Añadir una calificación de 88
  
  // TODO: Llamar a displayRecord()
  
  // TODO: Imprimir "Highest grade: [highest]"
}

Todas las lecciones de Programación Orientada a Objetos