Análisis y Diseño Orientado a Objetos

Análisis y Diseño Orientado a Objetos
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Sesión No. 8
Nombre: Diseño orientado a objetos. Parte II.
Contextualización
¿Cuáles son las formas de trabajo que se puede realizar en la
programación orientada a objetos?
Dentro del trabajo que se realiza en la programación orientada a objetos se tiene
la posibilidad de trabajar en conjunto, ya sea por medio de asociación de objetos
y clases o también por medio de códigos conjuntos que se complementan, los
cuales son parte de lenguajes diferentes.
Esta asociación puede darse por resultado de la herencia de otros elementos o
también por el trabajo o funciones que se desean cumplir.
La asociación de objetos es muy frecuente dentro de los sistemas orientados a
objetos, ya que estos aunque son independientes pueden trabajar como uno
mismo y ofrecer un resultado mayor.
1
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Introducción al Tema
¿Cuáles son las posibilidades de trabajo que presentan los objetos?
Las posibilidades de trabajo que presentan los objetos dentro de un sistema
orientado a objetos son varias, dentro de estas esta la ejecución de instrucciones
en conjunto por parte de los componentes internos de cada pieza de código.
Estas posibilidades de trabajo se dan para tener una mayor interacción con los
usuarios y que el sistema pueda trabajar de forma más estable sin tener que
presentar correcciones de código o arreglar las fallas por medio de constantes
actualizaciones.
El trabajo en conjunto o por asociación de elementos permite un óptimo uso de
los recursos de una plataforma en la que se ejecutan las aplicaciones, por lo que
siempre debemos considerar que elementos pueden ser más fuertes que otros y
que trabajen a la par de los demás para presentar más estabilidad y mejores
resultados a los usuarios finales.
2
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Explicación
¿Qué es la asociación?
Asociación de objetos
Es la forma en como los elementos pueden conectar entre ellos y establecer una
relación de trabajo para ofrecer un resultado en común, esta relación o
asociación se puede dar entre elementos, como en clases.
Una asociación se representa por medio de líneas entre clases, las asociaciones
pueden ser de tipo inherente bidireccional, por lo que cualquiera de las clases
desde las instancias puede tener un recorrido lógico hacia otra.
Para determinar una asociación se pueden seguir la siguiente estructura:

Es conveniente centrarse en asociaciones para conservar el conocimiento
de relación durante un tiempo.

Es más importante identificar clases conceptuales que identificar
asociaciones. (IUCM, 2013).

Demasiadas asociaciones tienden a confundir un modelo del dominio en
lugar de aclararlo. (Ibíd).

El descubrimiento del uso de estos elementos puede llevar tiempo y
establecer un beneficio marginal.

Se deben evitar las demostraciones redundantes.
3
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
El uso de las asociaciones presenta varios elementos más, dentro de los cuales
se establecen relaciones importantes de uso, algunos de los tipos de
asociaciones que podemos contemplar para el desarrollo de sistemas son:

Navegación de
las asociaciones:
permite su uso aunque su
bidireccionalidad establece en ocasiones hacerlas unidireccionales para
tomar sólo una línea de trabajo especificándolo de mejor manera.

Multiplicidad de las asociaciones: ésta determina cuantos objetos de
cada tipo intervienen en la asociación.
o Cuando la multiplicidad mínima es 0, la relación de los elementos
es opcional.
o Una multiplicidad mínima mayor o igual a 1 establece la relación
obligatoria. (Ibíd).
Agregación de objetos
¿Qué podemos determinar con la agregación de objetos?
La agregación de elementos dentro de los lenguajes de
programación orientados a objetos son importantes, con
estas funciones podemos determinar una relación de
multiplicidad, la cual puede ser comprendida como “uno
a uno” o “uno a muchos”.
Ésta puede realizarse con el uso de clases o elementos
funcionales con características similares a los medios en que se quieren aplicar.
Ésta puede ser representada por medio de diagramas explicando las conexiones
que tienen los elementos e inclusive la dirección que pueden tomar dentro de un
determinado grupo de elementos.
Esta relación se deriva de la asociación de estructuras, las cuales contienen
atributos en cada uno de los casos en que se usa, además debe contar con un
método que agregue elementos a la colección que se tiene hasta el momento, es
decir un Array, Vector, Collections, etc.
4
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Dentro
del
encuentran
diagrama
elementos
de
agregación
se
que
determinan
las
funciones a seguir, éstos representan relaciones
fuertes entre objetos de igual manera que la
agregación que presentan éstos, la cuestión es
que
un
objeto
puede
poseer
a
otro,
la
composición considerada dentro de este aspecto
se da cuando ambos objetos son parte de un mismo elemento o grupo de
elementos y funcionan por medio de un agregador.
Composición de objetos
¿Por qué es importante ésta?
Dentro de los lenguajes de programación que se orientan a objetos, la
composición es una parte importante que ayuda a definir las funciones, ya que
establece la relación que tienen varias de las funciones o estructuras dentro de
una aplicación.
Por definición podemos establecer la composición como:
Procedimiento o herramienta con la cual se logra la creación de objetos a partir
de clases existentes, estas nuevas clases se componen de objetos de clases ya
existentes. También se contemplan elementos adicionales como la herencia o el
polimorfismo por mencionar algunas, dentro de las cuales las estructuras
establecen las funciones y los procedimientos que se cumplirán en el uso de la
aplicación, no todos éstos son iguales, por lo que se deben establecer
parámetros de control, dependiendo de la magnitud del proyecto de que se habla.
Un ejemplo de la composición de clase es el siguiente:
//Composicion de clases.
#include <iostream>
using std::cout;
5
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
using std::endl;
using std::cin;
#include <cstring>
class Punto {
private: int x; int y; public:
Punto(int = 0, int = 0);
void establecerX(int);
void establecerY(int);
int obtenerX();
int obtenerY(); };
class Ciudad { private: char nombre[50];
Punto coordenada;//Tiene un objeto miembro Punto public: Ciudad(char * = "",
const Punto & = Punto(1,1));
//tiene parametros por defecto. void establecerNombre(char *);
void establecerCoord(int,int);
void imprimir(); }; //Funciones miembro de clase Punto Punto::
Punto(int enX, int enY) { establecerX(enX);
establecerY(enY);
} void Punto::establecerX(int enX) { x= enX;
} void Punto::establecerY(int enY) { y= enY;
} int Punto::obtenerX() { return x;
} int Punto::obtenerY() { return y;
} //Funciones miembro de clase Ciudad Ciudad::Ciudad(char *Nombre, const
Punto & CORDE): coordenada(CORDE)//inicializador de miembro.
{ establecerNombre(Nombre);
} void Ciudad::establecerNombre(char *nomciudad) {
int cantLetras =
strlen(nomciudad);
if (cantLetras > 49)
cantLetras = 49;
strncpy(nombre,nomciudad,cantLetras);
nombre[cantLetras + 1] = '\0';
} void Ciudad::establecerCoord(int enX, int enY) { coordenada.establecerX(enX);
6
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
coordenada.establecerY(enY);
} void Ciudad::imprimir() { cout << "Ciudad: "<< nombre << endl;
cout << "Coordenadas: (" << coordenada.obtenerX() << "," <<
coordenada.obtenerY() << ")";
cout << endl;
} int main() { Punto A(45,35);
Punto B(1245,456);
Ciudad bsas("BuenosAires",A);
cout << "Primera bsas:" << endl;
bsas.imprimir();
Ciudad stafe("SantaFe",B);
cout << "Segunda stafe:" << endl;
stafe.imprimir(); Ciudad compo;
//con los parametros por defecto.
cout
<<
"Tercera
compo
con
parametros
por
defecto:"
compo.imprimir();
compo.establecerCoord(457,789);
compo.establecerNombre("Compostela");
cout << "Cuarta compo, despues de establecerle los parámetros:"
<< endl; compo.imprimir(); return 0; }
Código obtenido de http://codigomaldito.blogspot.mx/2005/12/composicin-objetos-miembro.html
<<
endl;
7
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Conclusión
La definición de objetos dentro de los lenguajes de programación orientados, son
muy importantes, ya que éstos son la base con la que se trabajará y tendrá
interacción con los usuarios.
Se pueden definir varias funciones dentro de las clases y objetos con lo que se
cumplirá el objetivo principal de su desarrollo. Se tiene la oportunidad de
personalizar varios elementos, esto dependerá de las capacidades y atributos
que ofrezcan los lenguajes de programación con que se desarrollará la pieza de
software. No se tiene un establecido en cuanto a un lenguaje, ya que se cumplen
diferentes funciones y trabajan en distintas plataformas.
Es importante definir bien las características y atributos de los objetos, de esta
manera podremos establecer una mejor relación de trabajo entre los
componentes del sistema en que se desarrollan las cosas y la plataforma de
ejecución en la que se tendrá el soporte.
8
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Para aprender más
Para aprender más acerca de los temas de programación orientada a objetos,
herencia, agregación, almacenamiento, dependencia y asociación, te invito a
consultar los siguientes recursos.

Arenas L. (s/f). Programación Orientada a Objetos en Java. Documento
consultado en:
http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/opt/java.pdf

Cachero C. Ponce de León P. (2010). Herencia. Documento consultado
en: http://rua.ua.es/dspace/bitstream/10045/15995/1/POO-3-Herencia-1011.pdf

Camila. (2013). Dependencia y asociación. Documento consultado en:
http://programacioncolmayor3.blogspot.mx/2013/02/dependencia-yasociacion.html

Di Serio. (s/f). Programación orientada a objetos. Documento consultado
en:
http://ldc.usb.ve/~adiserio/Telematica/HerramientasProgr/ProgramacionO
OSlides.pdf

Microsoft. (s/f). Herencia, agregación y almacenamiento. Documento
consultado en
http://msdn.microsoft.com/es-es/library/k3k086s0(v=vs.110).aspx

S/a. (s/f). Herencia y composición en POO. Documento consultado en:
http://webdelprofesor.ula.ve/ingenieria/gilberto/pr2/practica7-OxOherencia-composicion.pdf

S/a.
(s/f).
Herencia
y
composición.
Documento
consultado
http://arco.esi.uclm.es/~david.villa/pensar_en_C++/vol1/C14.html
en:
9
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS

Universidad Nebrija. (s/f). Fundamentos de la informática. Documento
consultado en:
http://www.nebrija.es/~oruano/java/04%20Programacion%20orientada%2
0a%20objetos%20con%20Java.pdf

Universidad Nebrija. (s/f). Programación Orientada a Objetos. Documento
consultado en:
http://www.capacinet.gob.mx/Cursos/Tecnologia%20amiga/desarrolladord
esoftware/POO_SE.pdf
10
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Actividad de Aprendizaje
Instrucciones
Con la finalidad de reforzar los conocimientos adquiridos a lo largo de esta
sesión, ahora tendrás que realizar un diagrama de agregación o de composición
de objetos, cualquiera que sea de tu preferencia.
Puedes realizarlo en cualquier programa, al final tendrás que guardarlo como
imagen en formato JPG, con la finalidad de subirlo a la plataforma de la
asignatura.
En esta actividad se tomará en cuenta para tu calificación lo siguiente:

Datos generales.

Referencias bibliográficas y/o cibergráficas.

Ortografía y redacción.

Título.

Diagrama.
11
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Cibergrafía
Arenas L. (s/f). Programación Orientada a Objetos en Java. Documento
consultado en:
http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/opt/java.pdf
Camila. (2013). Dependencia y asociación. Documento consultado en:
http://programacioncolmayor3.blogspot.mx/2013/02/dependencia-yasociacion.html
Crovetto I. (2010). Agregación vs Composición. Documento consultado en:
http://icrovett.wordpress.com/2010/02/08/uml-diseno-de-agregacion-vscomposicion/
DataPrix. (s/f). Agregación: jerarquía de objetos. Documento consultado en:
http://www.dataprix.com/26-agregacion-jerarquia-objetos
Di Serio. (s/f). Programación orientada a objetos. Documento consultado en:
http://ldc.usb.ve/~adiserio/Telematica/HerramientasProgr/ProgramacionOOSlide
s.pdf
Díaz A. (2008). UML relaciones, composición, agregación, asociación,
dependencia,
generalización,
realización.
Documento
consultado
en:
http://arodm.blogspot.mx/2008/09/uml-relaciones-compocicion-agregacion.html
IUCMC (2013). Programación orientada a objetos II. Documento consultado en:
http://programacioncolmayor3.blogspot.mx/
Pérez D. (2012). Diagrama de Clases UML: Agregación y Composición.
Documento consultado en: http://www.didierperez.com/2012/02/diagrama-declases-uml-agregacion-y-composicion/
12
ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
Santi. (2005). Composición, objetos miembro en C++. Documento consultado en:
http://codigomaldito.blogspot.mx/2005/12/composicin-objetos-miembro.html
13