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

Construyamos un sistema de registros 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 confidenciales, a la vez que proporcione acceso controlado mediante getters, setters y propiedades calculadas.

Organizarás tu código en dos archivos:

  • student.dart: Define una clase Student que gestione los registros académicos con una encapsulación adecuada:
    • Un final String id: el ID del estudiante nunca debe cambiar después de su creación
    • Un String name público: los nombres se pueden actualizar
    • Un List<int> _grades privado: la lista de calificaciones sin procesar 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 están 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 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 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 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() debe imprimir con 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

Practica por tu cuenta: Compilador de Dart online