POO ED
Introducción a la
Programación Orientada a
Objetos (POO)
POO - Colecciones
Una característica importante de los lenguajes que
utilizan la POO es la de permitir las colecciones
genéricas:
Arreglos genéricos
Listas genéricas
Arboles genéricos
Cómo
sería una
lista
genérica?
POO - Colecciones
Clase Lista;
Lis = ^nodo;
nodo = record
elemento : object;
sig : lis;
end;
primero,actual : lis;
cantidad : integer;
Constructor crear();
begin
primero := nil;
cantidad := 0;
end;
Elemento de qué
tipo es?
POO - Colecciones
procedure inicializar();
begin
actual := primero;
end;
procedure avanzar();
begin
actual := actual^.sig;
end;
procedure devolverElemento (var unObjeto :
object)
begin
unObjeto := actual^.elemento;
end;
POO - Colecciones
procedure agregarElemento (unObjeto: object)
var aux:lis
begin
new(aux);
aux^.elemento := unObjeto;
aux^.sig := primero
primero := aux;
cantidad := cantidad + 1;
end;
POO - Colecciones
function fin : boolean;
begin
fin := (actual = nil);
end;
function verCantidad : integer;
begin
verCantidad := cantidad;
end;
End; {fin de la clase Lista}
Diagramas de Clases
Es un diagrama que muestra las relaciones entre las clases
queinvolucran
un
sistema,
las
cuales
pueden
ser
asociativas, de herencia, de uso y de contenimiento.
Un diagrama de clases está compuesto por los siguientes
elementos:
Clases: atributos, métodos y visibilidad.
Relaciones: asociativas, de herencia, de uso, de
contenimiento.
PERSONA
Nombre
Apellido
Dni
Teléfono
localidad
dirección
crear ()
//operaciones necesarias para
ver y modificar losatributos
de la persona.
Superior: Contiene el nombre de la Clase
Intermedio: Contiene los atributos que caracterizan a la Clase (pueden
ser privados, públicos).
Inferior: Contiene los métodos que le permiten al objeto nteractúar con
su entorno (dependiendo de la visibilidad: privados o publicos).
Programación Orientada a Objetos - Ejemplo
Se desea modelar una sede de la UNRN. En la
misma existendocentes que dictan materias (cada
docente dicta una materia). Además a la sede
concurren alumnos, para los cuales se mantiene el
conjunto de materias de las cuales ya han
aprobado su cursada y aquellas que están
cursando.
Se pide modelar la Sede y agregar lo necesario
para:
Inscribir un alumno a la Sede.
Informar el docente con mayor antigüedad
PERSONA
Nombre, apellido, dni
Teléfono, localidaddirección
crear ()
//operaciones necesarias
para ver y modificar los
atributos de la persona.
ALUMNO
FECHA
Dia, Mes, año
crear ()
//operaciones
necesarias para ver y
modificar los
atributos de la fecha.
DOCENTE
nroAlumno
materiasEnCurso
materiasConCurAp
materia
fechaIngreso
crear ()
//operaciones
necesarias para ver y
modificar los atributos
del alumno.
crear ()
//operaciones
necesarias paraver y
modificar los
atributos del docente.
LISTA
MATERIA
primero, actual
SEDE
Crear
Inicializar
Avanzar
devolverElemento
fin
Nombre, dirección
Alumnos
docentes
crear ()
//operaciones
necesarias para ver y
modificar los atributos
de la facultad.
nombre
código
año
crear ()
//operaciones
necesarias para ver y
modificar los
atributos de la
materia.
Programación Orientada a Objetos - EjemploClase Fecha:
dia, mes, año : integer;
Constructor crear (unDia, unMes, unAño : integer)
begin
dia := unDia;
mes := unMes;
año := unAño;
end;
{todas las operaciones para ver y modificar los atributos de la clase
fecha}
function diferenciaDias (f : Fecha) : integer
var numActual, numf : integer
begin
numActual := (año - 1900) * 365 + mes*30 + dia;
numf := (f.verAño() - 1900) * 365 + f.verMes() *30 +f.verDia();
diferenciaDias:= abs (numActual - numf);
end;
End;
....el resto de la implementación ...la compartimos en el foro
Programación Orientada a Objetos - Ejemplo
Clase Materia;
nombre : string;
codigo : integer;
año : integer;
Constructor crear (unNombre:string, unCodigo:integer,
unAño:integer)
begin
nombre := unNombre;
codigo := unCodigo;
año := unAño;
end;
{todas las operaciones para...
Regístrate para leer el documento completo.