Anda di halaman 1dari 7

Universidad Centroccidental

"Lisandro Alvarado"
Decanato de Ciencias y Tecnologa
Programacin - Lapso 2011-1

PLANTEAMIENTO DEMOSTRATIVO
Una organizacin dispone de un dinero para pago de nmina, y tiene varios trabajadores, cada uno
con un sueldo base, asignaciones y deducciones. Se desea determinar el sueldo neto de cada trabajador,
y por la empresa: el total a pagar, si le alcanza o no el dinero, y el saldo restante luego de la nmina.

EJEMPLIFICACIN TABULADA DEL PLANTEAMIENTO Y SOLUCIN


Ejemplificacin tabulada del planteamiento y solucin Ejercicio Organizacin

Toda la tabla representa la


informacin del objeto Organizacin

Los datos de entrada


por columnas sern
atributos del trabajador

Clculos por registro


sern mtodos del
trabajador

Cada registro o lnea


en la tabla muestra la
informacin de un
objeto trabajador

Datos generales de entrada seran atributos de la


organizacin. Para este ejemplo, podra ser el total
que dispone la empresa para pagar sueldos. As, el
restante luego del pago, tendramos otro mtodo
para organizacin: TotalRestante.

Clculos totales de la
tabla sern mtodos de
la organizacin

METODOLOGA PARA DEFINICIN DE CLASES RELACIONADAS


Puedes observar en la ilustracin anterior cmo la informacin de la organizacin abarca
bsicamente toda la tabla, y dentro de la misma est la informacin de los trabajadores.
Cuando ejemplifiques un planteamiento de manera tabulada seguramente identificars una clase mayor
(contenedora o todo) y otra (s) menor(es) (contenida(s) o parte(s)). Como regla general, la tabla
representa la clase mayor (contenedora o todo), y una lnea una clase menor (contenida o parte).
Fjate en las siguientes reglas generales:

Dato
Dato
Dato
Dato

de entrada en columna: ser un atributo en la clase menor.


calculado en columna: ser un mtodo en la clase menor.
de entrada antes de las filas o lneas en la tabla: ser un atributo en la clase mayor.
calculado fuera de las filas o lneas en la tabla: ser un mtodo en la clase mayor.

Por otra parte, debe considerarse el hecho de que por ahora no podremos usar arreglos para mantener
en memoria a varios objetos simultneamente, por tanto ser preciso procesar uno a uno.
As, tendremos las siguientes nuevas reglas para cuando se procese un objeto menor en la clase
mayor y se vaya determinando poco a poco los requerimientos:
A cada requerimiento de la clase mayor: habr que asignarle uno o varios atributos en la clase de
manera que cada vez que se procese un objeto menor, entonces se actualice el valor correspondiente.
Coordinacin del rea de Computacin

POO - PROGRAMACIN DE RELACIONES ENTRE CLASES


Generalmente los requerimientos tienen que ver: con algunos de los siguientes procesos universales:
acumular, contar, mayor, menor, promedio y porcentaje. En el ejemplo dado tenemos que acumular.
Otro tipo de requerimiento: constituye la determinacin de una situacin tipificada o posible. Ej:
luego de calcular la nota final, determinar si el estudiante es excelente, bueno, regular o malo
(tipificacin de un total). El caso del ejemplo muestra una situacin posible (si o no): alcanza el dinero?.
Sobre la base del clculo de procesos universales: seguramente tendrs planteamientos con otros
tipos de requerimientos que debers analizar e identificar a los efectos de lograr el diseo de la clase.
PARA IDENTIFICAR ATRIBUTOS DE CLCULO EN UN OBJETO MAYOR: a) determina cuntos requerimientos tiene
el planteamiento para la clase mayor, b) asocia cada requerimiento a un mtodo y algn tipo de
proceso universal, alguna tipificacin u otro, c) define los atributos que te permitirn guardar el resultado
luego de cada proceso parcial de un objeto menor.
En el ejemplo de la organizacin:
A) Requerimientos de la clase mayor: son 3 = i) total a pagar por la empresa, ii) si alcanza el dinero y iii)
saldo restante luego del pago de nmina.
B) Los mtodos: DetTotPagarOrg, DetAlcanzaBs y DetSaldoResto.
C) Necesitamos un acumulador (tot_pagar_org), comparamos a ver si alcanza (bs_dispone con
tot_pagar_org) y restamos para saber el restante (bs_dispone tot_pagar_org).
D) Segn lo visto, con slo un atributo adicional (tot_pagar_org) podremos responder a todos los
requerimientos del planteamiento.
ESTO QUE HICIMOS ES LA ABSTRACCIN EN OBJETOS MAYORES: la abstraccin como hemos visto, nos permite
identificar rpidamente los mtodos de clculo, y ahora los atributos necesarios para ellos.
LA RELACIN: entre
organizacin yCmo pasar de la informacin tabulada al diseo de clases y miembros
trabajador puede verse
MOrganizacin
cuando la organizacin
- bs_dispone : float
procesa un registro
- tot_pagar_org : float
(ProcesarTrab), como ya
+ ProcesarTrab (t : Trabajador)
el objeto trabajador
+ DetTotPagarOrg () : float
existe para poder dar
+ DetAlcanzaBs () : boolean
su salida particular,
+ DetSaldoResto () :float
entonces es una relacin
de uso
MTrabajador
CLASE MAYOR (Tabla)
- nombre : string
CLASE MENOR (Registros)
Los atributos: datos de entrada
- sueldo_base : float
Los atributos: datos de entrada de
general de la tabla + atributos para
- asignaciones : float
columnas de la tabla.
clculos de mtodos.
- deduciones : float
Los mtodos: constructor + un
Los mtodos: constructor +
+ DetSueldoNeto () :float
mtodo por cada columna de clculo
procesar + un mtodo por cada
+ los gets y sets por c/atributo
requerimiento

Coordinacin del rea de Computacin

Metodologa para el anlisis y programacin con POO

Normalmente el tipo de relacin no afecta los atributos que amerita la clase mayor. Como el
nombre lo indica, una relacin de Uso simplemente usa un objeto pre-existente, una relacin de
agregacin agrega el objeto (lo crea) antes de poder enviarle mensajes al mismo.

Aplicacin de Relacin de uso en el Ejercicio Organizacin


MOrganizacin
- bs_dispone : float
- tot_pagar_org : float
+ ProcesarTrab (t : Trabajador)
+ DetTotPagarOrg () : float
+ DetAlcanzaBs () : boolean
+ DetSaldoResto () :float

MTrabajador
- nombre : string
- sueldo_base : float
- asignaciones : float
- deduciones : float
+ DetSueldoNeto () :float

Tal y como haba sido planteado, la relacin existente consiste en una relacin de uso. La clase
Organizacin recibe un objeto de tipo Trabajador para procesarlo. Se han omitido algunos mtodos,
ms adelante se entrega el programa completo.

Coordinacin del rea de Computacin

POO - PROGRAMACIN DE RELACIONES ENTRE CLASES

Programacin de la Organizacin con relacin de USO (carpeta Proy-Empresa-USO)


#ifndef MORGANIZACION_H
#define MORGANIZACION_H
#include "MTrabajador.h"

Organizacion.h

class MOrganizacion {
private:
float bs_dispone;
float tot_pagar_org;
public:
MOrganizacion ();
MOrganizacion (float);
void SetBsDispone (float);
float GetBsDispone ();
void ProcesarTrab (MTrabajador);
float DetTotPagarOrg ();
bool DetAlcanzaBs ();
float DetSaldoResto ();
};
#endif

#include "MOrganizacion.h"
MOrganizacion :: MOrganizacion (){
bs_dispone = 0;
Organizacion.cpp
tot_pagar_org = 0;
}
MOrganizacion :: MOrganizacion (float bs){
bs_dispone = bs;
tot_pagar_org = 0;
}
void MOrganizacion :: ProcesarTrab (MTrabajador t){
tot_pagar_org += t.DetSueldoNeto ();
}
float MOrganizacion :: DetTotPagarOrg (){
return tot_pagar_org;
}
bool MOrganizacion :: DetAlcanzaBs (){
return bs_dispone - tot_pagar_org > 0;
}
float MOrganizacion :: DetSaldoResto (){
return bs_dispone - tot_pagar_org;
}

El controlador: a) Declara las variables locales que


servirn para la entrada de datos, b) Lee antes del ciclo
los datos que se requieran para la Organizacin (clase
grande o Todo), c) Actualiza el objeto de la clase
MOrganizacin, d) Lee varios datos de los trabajadores
e) Actualiza los datos de cada trabajador al objeto de la
clase MTrabajador con informacin suministrada por el
usuario, f) Muestra la salida por cada trabajador, g)
Manda a procesar a cada trabajador, h) Pregunta si hay
ms datos, i) Y si no hay ms datos se sale del ciclo, es
entonces cuando muestra los requerimientos de la
Organizacin (clase grande o todo)

Controlador :: Controlador(){}

void Controlador :: ProcesarOrg(){


float bs, sueldo, asig, deduc; a)
char resp; string nombre;
bs = vo.LeerBsDispone();
b)
mo.SetBsDispone (bs);
c)
do{nombre = vt.LeerNombre();
sueldo = vt.LeerSueldoBase(); d)
asig = vt.LeerAsignaciones();
deduc = vt.LeerDeducciones();
mt.SetNombre(nombre);
mt.SetSueldo_Base (sueldo);
e)
mt.SetAsignaciones (asig);
mt.SetDeducciones (deduc);
vt.ImprimirTrab(mt.GetNombre(),mt.DetSueldoNeto());
mo.ProcesarTrab (mt);
cout << "Hay otro trabajador? S-N: ";
cin >> resp;
} while (resp == 'S' or resp == 's');
vo.ImprimirEstadisticas (mo.DetTotPagarOrg(),
mo.DetAlcanzaBs(),mo.DetSaldoResto());
}

COMPARACIN
Aspecto

ENTRE RELACIN DE

Relacin

Objeto menor
Interfaz de la
clase mayor
Implementacin
de clase de la
clase mayor
Duracin de la
instancia de la
clase parte
Mensajes entre
las clases

Uso

USO

f)
g)
h)
i)

Y RELACIN DE

AGREGACIN
Agregacin

Es el mismo bien sea para una relacin de uso o una de agregacin


El mtodo Procesar recibe un objeto de la
Recibe los datos para crear un objeto de la
clase parte
clase parte en el mtodo Procesar
Luego de creado dentro del mtodo
El objeto recibido en el mtodo Procesar est
Procesar, usando el constructor con
listo para ser usado y debe haberse
parmetros es cuando puede accederse el
actualizado sus datos.
objeto.
Creada o definida en el Programa Principal o
Se crea en el mtodo Procesar de la clase
en la clase Controlador y existe mientras dure
mayor y se libera al terminar ste.
la ejecucin del programa.
Los mensajes entre los objetos son los mismos, la diferencia es que en uso ya vena creado y
actualizado el objeto parte, mientras que en agregacin lo cre o instanci la clase mayor.

Coordinacin del rea de Computacin

Metodologa para el anlisis y programacin con POO


Programa
Principal o
mtodo
Controlador

Crea una instancia del objeto parte y lo


actualiza con inf. Para luego enviarlo por
parmetro al mtodo Procesar de la clase
mayor.

Enva por parmetro al mtodo Procesar de


la clase mayor slo los datos que requiere el
objeto de la clase menor que ser agregado.

Comparacin entre la programacin con relacin de uso y relacin de agregacin


El objeto menor es el mismo
para ambos tipos de relaciones

Los mensajes entre los objetos son los mismos:


Tot_pagar_org += t.DetSueldoNeto();

Relacin USO
:::::
float tot_pagar_org; MOrganizacion.h
public:
MOrganizacion (float);
void ProcesarTrab (MTrabajador);
float DetTotPagarOrg ();
:::::
En Uso el Procesar
Relacin AGREGACIN
recibe el objeto, en
:::::
float tot_pagar_org; Agregacin los
public:
datos.
MOrganizacion (float);
void ProcesarTrab (float,
float, float);
float DetTotPagarOrg ();
:::::
Relacin de uso
void Controlador :: ProcesarOrg(){
float bs, sueldo, asig, deduc;
char resp; string nombre;
bs = vo.LeerBsDispone();
mo.SetBsDispone (bs);
do{nombre = vt.LeerNombre();
sueldo = vt.LeerSueldoBase();
asig = vt.LeerAsignaciones();
deduc = vt.LeerDeducciones();
mt.SetNombre(nombre);
mt.SetSueldo_Base (sueldo);
mt.SetAsignaciones (asig);
mt.SetDeducciones (deduc);

:::::

void MOrganizacion :: ProcesarTrab (float s,


float a, float d){
MTrabajador t (s, a, d);
tot_pagar_org += t.DetSueldoNeto ();
}
:::::

En Agregacin, l a memoria de la instancia de


la clase parte, se libera al terminar el mtodo

Relacin de agregacin

Necesita una
instancia con
informacin
actualizada

mo.ProcesarTrab (mt);
cout << "Hay otro trabajador? S-N: ";
cin >> resp;
} while (resp == 'S' or resp == 's');
vo.ImprimirEstadisticas(mo.DetTotPagarOrg(),
}

Recibe datos para crear el


objeto de la clase parte

Controlador.cpp

vt.ImprimirTrab(mt.GetNombre(),
mt.DetSueldoNeto());

mo.DetAlcanzaBs(),mo.DetSaldoResto());

MOrganizacion.cpp

Relacin de uso
:::::
void MOrganizacion :: ProcesarTrab (MTrabajador t){
tot_pagar_org += t.DetSueldoNeto ();
}
:::::Recibe el objeto de la clase parte listo para ser usado
Relacin de agregacin

Necesita los
datos para el
objeto que ser
agregado

void Controlador :: ProcesarOrg(){


float bs, sueldo, asig, deduc;
char resp; string nombre;
bs = vo.LeerBsDispone();
mo.SetBsDispone (bs);
do{nombre = vt.LeerNombre();
sueldo = vt.LeerSueldoBase();
asig = vt.LeerAsignaciones();
deduc = vt.LeerDeducciones();
mo.ProcesarTrab (sueldo, asig, deduc);
cout << "Hay otro trabajador? S-N: ";
cin >> resp;
} while (resp == 'S' or resp == 's');
vo.ImprimirEstadisticas (mo.DetTotPagarOrg(),

mo.DetAlcanzaBs(),mo.DetSaldoResto());

En Uso, la memoria de la instancia de la clase


parte se libera al terminar el programa, o sea que
existe mientras dure la ejecucin del programa.

Coordinacin del rea de Computacin

POO - PROGRAMACIN DE RELACIONES ENTRE CLASES


Ejercicios
1. Dibuje el diagrama de clases para la solucin con la relacin de agregacin (slo clases del modelo).

2. Dibuje el diagrama simplificado de clases de todas las clases participantes y sus relaciones.

3. Suponga que se requiere determinar la cantidad de trabajadores que se procesaron. Indique cmo
afecta este nuevo requerimiento a lo siguiente:
Clase MOrganizacin: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Clase MTrabajador: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Clase VOrganizacin: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Clase VTrabajador: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Clase Controlador: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

Coordinacin del rea de Computacin

Metodologa para el anlisis y programacin con POO


4. Cmo quedar la programacin del mtodo MOrganizacion :: ProcesarTrab() luego de implementar este
nuevo requerimiento.
________________________________________________ ________________________________________________
________________________________________________ ________________________________________________
________________________________________________ ________________________________________________
________________________________________________ ________________________________________________
________________________________________________ ________________________________________________
________________________________________________ ________________________________________________
________________________________________________ ________________________________________________
________________________________________________ ________________________________________________
5. Cmo quedar la programacin del mtodo Controlador :: ProcesarOrg luego de implementar este nuevo
requerimiento. Demuestre la comparacin para el caso con USO y con AGREGACIN.
Controlador :: ProcesarOrg (relacin de USO)

Controlador :: ProcesarOrg (relacin de AGREGACIN)

________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________

________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________

6. Idee un nuevo requerimiento que amerite la creacin de un nuevo atributo a la clase MOrganizacin.
Razone sus planteamientos.
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
7. Qu cambios debera Ud. aplicar al solucionar este nuevo requerimiento?. Razone sus planteamientos.
a. En el diseo del modelo:_____________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
b. En el diseo de la vista:_____________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
c. En el controlador: __________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
d. Qu otros cambios?_______________________________________________________________________________
___________________________________________________________________________________________________

Coordinacin del rea de Computacin

Anda mungkin juga menyukai