You are on page 1of 9

****************************** CLASE CALUMNO ****************************

namespace AppColeccionDeObjetosMenu
{
class cAlumno : cPersona
{
private string aCarrera;

public cAlumno(string pCarrera, string pNombre, string pCodigo)


: base(pNombre, pCodigo)
{
aCarrera = pCarrera;
}
public cAlumno()
: base()
{
aCarrera = null;
}
public void Mostrar()
{
base.Mostrar();
Console.Write(aCarrera);
Console.WriteLine();
}
public void Leer()
{
base.Leer();
Console.Write("ingrese carrera profesional: ");
aCarrera = Console.ReadLine();
}
}
}

**************************** CLASE CDOCENTE ***********************************

namespace AppColeccionDeObjetosMenu
{
class cDocente : cPersona
{
private string aDptoAcademico;

public cDocente(string pDptoAcademico, string pNombre, string pCodigo)


: base(pNombre, pCodigo)
{
aDptoAcademico = pDptoAcademico;
}
public cDocente()
: base()
{
aDptoAcademico = null;
}

public void Mostrar()


{
base.Mostrar();
Console.Write(aDptoAcademico);
Console.WriteLine();
}
public void Leer()
{
base.Leer();
Console.Write("ingrese dpto academico: ");
aDptoAcademico = Console.ReadLine();
}
}
}

************************** CLASE CMEDICO *********************************

amespace AppColeccionDeObjetosMenu
{
class cMedico:cPersona
{
private string aHospital;

public cMedico(string pHospital,string pNombre,string pCodigo) :


base(pNombre, pCodigo)
{
aHospital = pHospital;
}

public cMedico():base()
{
aHospital = null;
}

public void Mostrar()


{
base.Mostrar();
Console.Write(aHospital);
Console.WriteLine();
}

public void Leer()


{
base.Leer();
Console.Write("Ingrese Hospital del Medico: ");
aHospital = Console.ReadLine();
}

}
}

******************************** CLASE CPERSONA ******************************

namespace AppColeccionDeObjetosMenu
{
public class cPersona
{
//atributos
private String aCodigo;
private String aNombre;

public cPersona(String pCodigo, String pNombre)


{
aCodigo = pCodigo;
aNombre = pNombre;
}
public cPersona()
{
aCodigo = null;
aNombre = null;
}
public virtual void Leer()
{
Console.Write("ingrese nonbre: ");
aNombre = Console.ReadLine();
Console.Write("ingrese codigo: ");
aCodigo = Console.ReadLine();
}
public virtual void Mostrar()
{
Console.WriteLine(aNombre + " " + aCodigo + " ");

}
}
}

***************************** CLASE COBJETO ********************************


namespace AppColeccionDeObjetosMenu
{
public class cObjeto
{
#region *********************** ATRIBUTOS ************************
private string aId;
#endregion *********************** ATRIBUTOS ************************

#region *********************** METODOS ************************

#region ==================== CONSTRUCTORES =======================


public cObjeto()
{
aId = "";
}
public cObjeto(string pId)
{
aId = pId;
}
#endregion ==================== CONSTRUCTORES =======================

#region ==================== PROPIEDADES =======================


public string Id
{
get { return aId; }
set { aId = value; }
}
#endregion ==================== PROPIEDADES =======================

#region ==================== OTROS =======================


// ================================================================
public override string ToString()
{
return aId;
}

// ================================================================
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);
}
}
}

*************************** CLASE CCOLECCIONOBJETO **************************

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

#region *********************** ATRIBUTOS ************************


private int aNroObjetos;
private object[] aColeccion;
// ----- Delegado para procesar los objetos de la lista
public DelegadoSeleccionarObjeto deSeleccionarObjeto = null;
public DelegadoProcesarObjeto deProcesarObjeto = null;
#endregion *********************** ATRIBUTOS ************************

#region *********************** METODOS ************************

#region ==================== CONSTRUCTORES =======================


public cColeccionObjetos()
{
aColeccion = new object[MAX];
// -- Inicializar delegados con métodos por defecto
deSeleccionarObjeto = SeleccionarObjeto;
deProcesarObjeto = ProcesarObjeto;
}
#endregion ==================== CONSTRUCTORES =======================

#region ==================== PROPIEDADES =======================


public int NroObjetos
{
get { return aNroObjetos; }
}

public object Objeto(int pN)


{
return (pN >= 0) && (pN < aNroObjetos) ? aColeccion[pN] : null;
}
#endregion ==================== PROPIEDADES =======================

#region ==================== OTROS =======================


// ==============================================================
public int Indice(object Objeto)
{
int I = -1;
int K = 0;
while ((K < aNroObjetos) && (I == -1))
{
if (Objeto.Equals(aColeccion[K]))
I = K;
else
K++;
}
return I;
}
public int Longitud()
{
return aNroObjetos;
}

// ==============================================================
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]);
}
}
}

***************************** PROGRAM **********************************

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);

else if(O is cDocente)


{
cDocente D = O as cDocente;
D.Leer();
C.Agregar(D);
}
else if(O is cMedico)
{
cMedico M = O as cMedico;
M.Leer();
C.Agregar(M);
}
}
static void ListarAlumnos(cColeccionObjetos C)
{
for(int k=0;k<C.NroObjetos;k++)
{
Object Obj = C.Recuperar(k);
if (Obj is cAlumno)
{
cAlumno A = Obj as cAlumno;
A.Mostrar();
}
}
}

public static void ListarDocentes(cColeccionObjetos C)


{
for (int k = 0; k < C.NroObjetos; k++)
{
Object Obj = C.Recuperar(k);
if (Obj is cDocente)
{
cDocente D = Obj as cDocente;
D.Mostrar();
}
}
}

public static void ListarMedicos(cColeccionObjetos C)


{
for (int k = 0; k < C.NroObjetos; k++)
{
Object Obj = C.Recuperar(k);
if (Obj is cMedico)
{
cMedico M = Obj as cMedico;
M.Mostrar();
}
}
}

public static void ListaGeneral(cColeccionObjetos C)


{
for (int k = 0; k < C.NroObjetos; k++)
{
Object Obj = C.Recuperar(k);
if (Obj is cPersona)
{
cPersona P = Obj as cPersona;
P.Mostrar();
}
}
}
public static void Menu()
{
Console.WriteLine(" ************** MENU *************** ");
Console.WriteLine();
Console.WriteLine("1. AGREGAR ALUMNO ");
Console.WriteLine("2. AGREGAR DOCENTE ");
Console.WriteLine("3. AGREGAR MEDICO ");
Console.WriteLine("4. LISTAR ALUMNO ");
Console.WriteLine("5. LISTAR DOCENTES ");
Console.WriteLine("6. LISTAR MEDICOS ");
Console.WriteLine("7. LISTAR TODO ");
Console.WriteLine("0. SALIR ");
}

static void Main(string[] args)


{
cColeccionObjetos C = new cColeccionObjetos();
cAlumno A = new cAlumno();
cDocente D = new cDocente();
cMedico M = new cMedico();

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");
}
}
}

You might also like