Professional Documents
Culture Documents
namespace AppColeccionDeObjetosMenu
{
class cAlumno : cPersona
{
private string aCarrera;
namespace AppColeccionDeObjetosMenu
{
class cDocente : cPersona
{
private string aDptoAcademico;
amespace AppColeccionDeObjetosMenu
{
class cMedico:cPersona
{
private string aHospital;
public cMedico():base()
{
aHospital = null;
}
}
}
namespace AppColeccionDeObjetosMenu
{
public class cPersona
{
//atributos
private String aCodigo;
private String aNombre;
}
}
}
// ================================================================
public override bool Equals(object Objeto)
{
return (ToString().Equals(Objeto.ToString()));
}
// ================================================================
public virtual void Leer()
{
Console.Write("Identificador: ");
aId = Console.ReadLine();
}
// ================================================================
public virtual void Escribir()
{
Console.WriteLine(aId);
}
// ================================================================
public virtual void Mostrar()
{
Console.WriteLine();
Console.WriteLine("DATOS DE OBJETO");
Console.WriteLine("================");
Console.WriteLine("Identificador: " + aId);
}
}
}
namespace AppColeccionDeObjetosMenu
{
public delegate bool DelegadoSeleccionarObjeto(object O);
public delegate void DelegadoProcesarObjeto(object O);
public class cColeccionObjetos
{
#region *********************** CONSTANTES ************************
private const int MAX = 1000;
#endregion *********************** CONSTANTES ************************
// ==============================================================
public void Agregar(object Objeto)
{
// ----- Verificar que objeto no exista en la lista
if (Indice(Objeto) < 0)
aColeccion[aNroObjetos++] = Objeto;
else
// ----- Objeto ya existe en el Coleccion, por tanto poner mensaje de
error
Console.WriteLine(Objeto.ToString() + " ya existe en la lista, por
tanto, no será agregado...");
}
// ==============================================================
public void Insertar(int Ubi, object Objeto)
{
// -- Verificar que ubicacion sea correcta
if ((Ubi >= 0) && (Ubi < aNroObjetos))
{
// -- Verificar que objeto no exista en la lista
if (Indice(Objeto) < 0)
{
// -- Crear un espacio en la ubicacion ubi, recorriendo los
objetos una posicion a la derecha
for (int K = aNroObjetos; K > Ubi; K--)
aColeccion[K] = aColeccion[K - 1];
// -- Poner el objeto en el espacio creado
aColeccion[Ubi] = Objeto;
// -- Incrementar el nro de objetos
aNroObjetos++;
}
else
// ----- Objeto ya existe en el Coleccion, por tanto poner
mensaje de error
Console.WriteLine(Objeto.ToString() + " ya existe en la lista,
por tanto, no será agregado...");
}
else
// ----- Objeto ya existe en el Coleccion, por tanto poner mensaje de
error
Console.WriteLine("ERROR. Ubicación " + Ubi + " no es correcta...");
}
// ==============================================================
public void Eliminar(int Ubi)
{
// -- Verificar que ubicacion sea correcta
if ((Ubi >= 0) && (Ubi < aNroObjetos))
{
// -- Eliminar el objeto, recorriendo los objetos una posicion a la
izquierda
for (int K = Ubi; K < aNroObjetos; K++)
aColeccion[K] = aColeccion[K + 1];
// -- Decrementar el nro de objetos
aNroObjetos--;
}
else
// ----- Objeto ya existe en el Coleccion, por tanto poner mensaje de
error
Console.WriteLine("ERROR. Ubicación " + Ubi + " no es correcta...");
}
// ==============================================================
public void Consultar(object Objeto)
{
// ----- Determinar Indice o ubicacion del Identificador
int I = Indice(Objeto);
if (I >= 0)
{
if (aColeccion[I] is cObjeto)
(aColeccion[I] as cObjeto).Mostrar();
}
else
// ----- Objeto no existe en el Coleccion, por tanto poner mensaje de
error
Console.WriteLine(Objeto.ToString() + " No existe en la lista...");
}
// ==============================================================
public object Recuperar(int Ubi)
{
// -- Verificar que ubicacion sea correcta
if ((Ubi >= 0) && (Ubi < aNroObjetos))
return aColeccion[Ubi];
else
return null;
}
// ==============================================================
public void AsignarDelegados(DelegadoSeleccionarObjeto pdeSeleccionarObjeto,
DelegadoProcesarObjeto pdeProcesarObjeto)
{
deSeleccionarObjeto = pdeSeleccionarObjeto;
deProcesarObjeto = pdeProcesarObjeto;
}
// ==============================================================
public void AsignarDelegadoSeleccionar(DelegadoSeleccionarObjeto
pdeSeleccionarObjeto)
{
deSeleccionarObjeto = pdeSeleccionarObjeto;
}
// ==============================================================
public void AsignarDelegadoProcesar(DelegadoProcesarObjeto pdeProcesarObjeto)
{
deProcesarObjeto = pdeProcesarObjeto;
}
// ==============================================================
public virtual bool SeleccionarObjeto(Object Objeto)
{
return Objeto != null;
}
// ==============================================================
public virtual void ProcesarObjeto(object Objeto)
{
if (Objeto is cObjeto)
{
(Objeto as cObjeto).Escribir();
}
else
Console.WriteLine(Objeto.ToString());
}
// ==============================================================
public void ProcesarColeccion()
{
for (int K = 0; K < aNroObjetos; K++)
if (deSeleccionarObjeto(aColeccion[K]))
deProcesarObjeto(aColeccion[K]);
}
}
}
namespace AppColeccionDeObjetosMenu
{
class Program
{
static void LeerPersona(cColeccionObjetos C,object O)
{
if(O is cAlumno)
{
cAlumno A = O as cAlumno;
A.Leer();
C.Agregar(A);
string Opcion;
Menu();
do
{
Console.Write("INGRESE OPCION: ");
Opcion = Console.ReadLine();
Console.WriteLine("---------------------------");
switch (Opcion)
{
case "1":
LeerPersona(C,A);
break;
case "2":
LeerPersona(C,D);
break;
case "3":
LeerPersona(C,M);
break;
case "4":
ListarAlumnos(C);
break;
case "5":
ListarDocentes(C);
break;
case "6":
ListarMedicos(C);
break;
case "7":
ListaGeneral(C);
break;
}
} while (Opcion != "0");
}
}
}