// TresCapas.cpp (C) 2008 adolfo@di-mare.com
/** \file TresCapas.cpp
\brief Arquitectura de Tres Capas.
\author Adolfo Di Mare <adolfo@di-mare.com>
\date 2008
*/
#include <list>
#include <iostream>
#include <fstream>
/// Definido por la biblioteca C++ estándar.
namespace std {} // Está acá para que Doxygen lo documente
usign namespace std;
#include "Alumno.h" // Viejilllos de las notas
/// Clase que encarga de controlar todo el programa.
/// - Se encarga de invocar los métodos de las demás clases.
/// - Muchos la incluyen dentro de la capa de \c Algoritmo.
class Controlador {
/// Método que se encarga de correr la aplicación.
void run();
};
/// Esta clase contiene la lógica y los algoritmos del programa.
class Algoritmo {
};
/// Clase que sirve para interactuar con el usuario del programa.
/// - Se encarga de leer los datos del alumno
class Interfaz {
public:
/// Lee los datos de un único \c Alumno.
/// - En la variable \c A retornan los datos obtenidos
/// del flujo de entrada \c CIN.
void LeeAlumno_UNO( istream CIN, Alumno& A );
/// Lee los datos de muchos \c Alumno's.
/// - En la lista \c Las reornarn los datos de todos los alumnos
/// obetnidos del flujo de entrada \c CIN.
void LeeAlumno_MUCHOS( ifstream fCIN, list<Alumno>& Las );
/// Interactúa con el usuario y le permite ingresar los datos.
/// - Retorna el código de la acción a ejecutar.
int Menu();
private: // Rep
};
/// Repositorio de datos de la aplicación.
/// - Esta clase está dise±ada para que el respositorio
/// pueda sar una simple liesta en memoria, un
/// diccionario o una base de datos SQL.
class Datos {
/// Obtiene el alumno cuyo carnet es \c C.
Alumno getCarnet( const string& C );
/// Agrega el \c Alumno \c A al repositorio de datos.
void agregaAlumno( const Alumno& A );
/// Obtiene una lista con todos los \c Alumno's.
/// - El valor anterior de \c Las se pierde.
/// - Sólo retorna los \c Alumno's para los que
/// pred()(a) es \c true.
void getAlumno_MUCHOS( PRED pred, list<Alumno>& Las );
/// Obtiene una lista con todos los \c Alumno's.
/// - Lista viene ordenada por número de carnet.
void getAlumno_Carnet( list<Alumno>& Las );
/// Obtiene una lista con todos los \c Alumno's.
/// - Lista viene ordenada por nombre.
void getAlumno_Nombre( list<Alumno>& Las );
private: // Rep
};
class PRED {
/// Retorna \c true si \c A es del grupo 17.
bool operator() ( const Alumno& A )
{ return A.getGrupo() == 17; }
};
// EOF: TresCapas.cpp |