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
© Copyright 2024