Java Intro

38
Nota: Este programa esta hecho para la versión 6 de NetBeans. Nota: antes de seguir adelante es conveniente que hagamos un repaso sobre la convención en Java respecto a la utilización de las letras mayúsculas y minúsculas en los nombres en el Apéndice - Convenciones Java y UML - Mayúsculas y minúsculas (I) El IDE NetBeans es un entorno de desarrollo Open Source escrito en Java. Como este será el entorno de desarrollo utilizado durante el curso, es conveniente realizar un programa donde veamos todos los temas que vemos en la parte inferior, que será la impresión de nuestro nombre crear un nuevo proyecto crear un nuevo paquete crear una nueva Clase compilar una Clase ejecutar una Clase MBA.RAFAEL ADONAHI AGUILERA ALFARO PROGRAMACION III UPSUM

Transcript of Java Intro

Page 1: Java Intro

Nota: Este programa esta hecho para la versión 6 de NetBeans.

Nota: antes de seguir adelante es conveniente que hagamos un repaso sobre la convención en Java respecto a la utilización de las letras mayúsculas y

minúsculas en los nombres en el Apéndice - Convenciones Java y UML - Mayúsculas y minúsculas (I)

El IDE NetBeans es un entorno de desarrollo Open Source escrito en Java. Como este será el entorno de desarrollo utilizado durante el curso, es

conveniente realizar un programa donde veamos todos los temas que vemos en la parte inferior, que será la impresión de nuestro nombre

crear un nuevo proyecto crear un nuevo paquete crear una nueva Clase

compilar una Clase ejecutar una Clase

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UPSUM

Page 2: Java Intro

Convenciones Java y UMLMayúsculas y minúsculas (I)

En Java existen una serie de convenciones con lo que respecta a la escritura de los Paquetes, Clases, Métodos y Variables.

Paquete todas las letras en minúsculas

esteesunpaquete Clases

la primera letra de la primera palabra compuesta en mayúsculas la primera letra de la segunda y restantes palabras compuesta en mayúsculas

EstaEsUnaClase Métodos

la primera letra de la primera palabra compuesta en minúsculas la primera letra de la segunda y restantes palabras compuesta en mayúsculas

esteEsUnMetodo() Variables

igual que los métodos estaEsUnaVariable

 

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 3: Java Intro

Crear un nuevo proyecto

NetBeans al igual que la mayoría de los entornos de desarrollo, aloja sus aplicaciones en proyectosestos proyectos sólo tienen sentido cuando estamos desarrollando

cuando una aplicación pasa a producción, el concepto de proyecto del entorno de desarrollo se pierde En nuestro caso, crearemos un proyecto llamado rafaelaguilera siguiendo los siguientes pasoselegimos Archivo | Nuevo Proyecto...

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 4: Java Intro

en el cuadro de dialogo New Project elegimos Java y Java Application y seguidamente hacemos clic sobre el botón

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 5: Java Intro

en el cuadro de diálogo Nuevo aplicación javao tenemos que rellenar los siguientes camposNuevo proyecto: prorafaelaguilera

durante el curso seguiremos una convención a nivel didáctico que va a consistir en poner el prefijo pro a todos los nombres de los proyectos que crearemos

Ubicación del proyecto: C:\isg\j2se\prorafaelaguilera

vamos a hacer clic sobre el botón EXAMINAR para indicar que queremos que nuestro proyecto se aloje en tal directorio, o para cambiar la ruta.

Crear clase principal: no lo marcamos

Configurar como proyecto principal: Lo marcamos

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 6: Java Intro

Crear un nuevo paquete

Cuando estamos realizando aplicaciones , tenemos que incluir las Clases de nuestra aplicación en paquetes (packages) para poder obtener una serie de ventajas que ya veremos más adelanteestos paquetes tienen sentido tanto en el proceso de desarrollo como en el de producción los paquetes no están ligados a un entrono de desarrollo, sino que es una parte integral y esencial del lenguaje Java En nuestro caso, crearemos un paquete llamado paqrafaelaguilera siguiendo los siguientes pasosnos situamos en la ventana Proyectos y con el botón derecho del ratón seleccionamos la carpeta Paquete Java correspondiente al proyecto prorafaelaguilera que acabamos de crear. elegimos Nuevo | Paquete Java...

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 7: Java Intro

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 8: Java Intro

y en el cuadro de diálogo Nuevo Paquete de Java introducimos el nombre del paquete paqrafaelaguilera y hacemos clic sobre el botón

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 9: Java Intro

Crear una nueva Clase

En Java los programas o aplicaciones se escriben en ficheros que tienen la extensión .java

una aplicación puede tener uno o más ficheros con extensión .java

cada uno de estos ficheros .java contiene una Clase

cada vez que se crea una nueva Clase, se crea su correspondiente fichero con el nombre de la Clase y con extensión .java

En nuestro caso, vamos a crear una Clase que la vamos a llamar Rafaelaguilera siguiendo los siguientes pasos nos situamos en la ventana Proyecto y con el botón derecho del ratón seleccionamos el paquete paqrafaelaguilera elegimos nuevo | Otros...

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 10: Java Intro

en el cuadro de diálogo Archivo Nuevo elegimos la categoría Java y el tipo de fichero Clase main Java y hacemos clic sobre el botón

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 11: Java Intro

el campo de Texto Nombre de la clase indicamos que la Clase se va a llamar Rafaelaguilera y hacemos clic sobre el botón

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 12: Java Intro

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 13: Java Intro

package paqrafaelaguilera; oen esta primera línea de código, estamos indicando que la clase Rafaelaguilera pertenece al paquete paqrafaelaguilera

public class Rafaelaguilera { } oaquí estamos declarando el nombre de la Clase oes muy importante mencionar que todo código Java que se escriba tiene que estar obligatoriamente incluido dentro de una Clase

es decir el código java siempre estará dentro del bloque (indicado entre llaves {}) de esa Clase

public static void main(String[] args) { } oaquí estamos declarando el método main(...) ode momento saber que la MVJ (Máquina virtual Java) cuando tiene que ejecutar la aplicación Rafaelaguilera, lo primero que hace es buscar este método como punto de entrada a la aplicación

Y para que nos muestre el mensaje ISC.MBA.RAFAEL ADONAHI AGUILERA ALFARO..., tenemos que añadir el siguiente código al método main(...)

Nota: Podemos ahorrarnos toda la escritura de la línea  System.out.println(""); escribiendo sout y seguidamente presionando la tecla tabulador

Este es el código generado por el Asistente de NetBeans package paqrafaelaguilera; public class Rafaelaguilera {

  public static void main(String[] args) {    // TODO code application logic here

 }}

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 14: Java Intro

  public static void main(String[] args) {    System.out.println(“ISC.MBA.RAFAEL ADONAHI AGUILERA

ALFARO");  }

System.out.prinln(“ISC.MBA.RAFAEL ADONAHI AGUILERA ALFARO");

ode momento sólo saber que “ISC.MBA.RAFAEL ADONAHI AGUILERA ALFARO" es un String que se muestra como mensaje de salida

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 15: Java Intro

Compilar una Clase

En Java, las Clases compiladas se encuentran en ficheros que tienen la extensión .classal contenido de estas clases se le denomina código byte si no tuviéramos un IDE como NetBeans tendríamos que ejecutar el comando javac En nuestro caso, compilaremos la Clase Rafaelaguilera situándonos en la ventana Proyectos. Seguidamente seleccionamos con el botón derecho del ratón la Clase Rafaelaguilera.java y elegimos CompilareArchivo   F9. Esta acción hace que Netbeans ejecute de forma transparente para nosotros el comando javac

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 16: Java Intro

Ejecutar una Clase

A diferencia de los lenguajes compilados que ejecutamos ficheros con la extensión .exe, en java se ejecutan los ficheros con extensión .classsi no tuviéramos un IDE como NetBeans tendríamos que ejecutar el comando java, cuya utilización ya veremos más adelante

Para ejecutar la Clase Rafaelaguilera nos vamos a situar en la ventana Proyectos. Seguidamente seleccionamos con el botón derecho del ratón la Clase Rafaelaguilera.java y elegimos Ejecutar Archivo   Mayúsculas+F6

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 17: Java Intro

finalmente ya vemos el mensaje “ISC.MBA. Rafael Adonahi Aguilera" en la ventana Output

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 18: Java Intro

JAVA Y UML

Consideraciones sobre UML

UML (Unified Modeling Language) es un lenguaje estándar para escribir planos de software. UML permite modelar desde sistemas de información

empresariales hasta aplicaciones distribuidas basadas en web.

Alguien que pretenda desarrollar software con exito debe crear software de calidad que satisfaga las

necesidades cambiantes de sus cLientes. El desarrollo debe ser predecible, con un uso eficiente de recursos. El software debe tener una sólida base

arquitectónica que sea flexible al cambio. Esto generará un negocio sostenible. El modelado es la

parte medular de todas las actividades que conducen a la creación de software de calidad.

MBA.RAFAEL ADONAHI AGUILERA ALFARO

PROGRAMACION III

UNIVERSIDAD PRIVADA DEL SUR DE MÉXICO

Page 19: Java Intro

Para qué se construyen modelos?Algunas de las respuestas posibles son

Para comprender mejor el sistema que está bajo desarrollo Para descubrir posibilidades de simplificación y reutilización

Para minimizar los posibles riesgos UML es un lenguaje para visualizar, especificar, construir y documentar.

Siendo lo suficientemente expresivo, permite modelar sistemas que no son software

. Se ha usado en dominios tales como:Sistemas de información corporativos

Entidades financieras Telecomunicaciones

Transporte Defensa

Desarrollos aeroespaciales Ciencias

Servicios distribuidos basados en web

Page 20: Java Intro

Java es, entre otras cosas:

Orientado a objetos Portable

Open source Sin costo Eficiente Seguro

Amplia integración a la web Robusto

Page 21: Java Intro

Identificar y plantear el problema

Para producir software que cumpla su propósito hay que obtener los requisitos del sistema, esto se consigue conociendo de una forma disciplinada a los usuarios y haciéndolos participar de manera activa para que no

queden “cabos sueltos”. Para conseguir un software de calidad, que sea duradero y fácil de mantener hay que idear una sólida base arquitectónica que sea flexible al cambio. Para desarrollar software rápida y eficientemente;

minimizando el trabajo de recodificación y evitando crear miles de líneas de código inútil hay que disponer, además de la gente y las herramientas necesarias, de un enfoque apropiado.

Para conseguir que a la hora de desarrollar software de manera industrial se obtenga un producto de calidad, es completamente necesario seguir cierta pautas y no abordar los problemas sin pensarlo, con el fin de obtener un modelo que represente lo suficientemente bien el problema que hacemos de abordar. El modelado es la espina dorsal del desarrollo de software de calidad. Se construyeron modelos para poder comunicarnos con otros, para explicar el comportamiento del sistema a desarrollar, para comprender nosotros mismos, mejor ese sistema, para controlar el riesgo y en definitiva para poder atacar problemas que sin el modelado su resolución seria imposible, tanto desde el punto de vista de los desarrolladores(no se pueden cumplir los plazos estimado, no se consigue

ajustar los presupuestos) como desde el punto de vista del cliente, desde que no se cumplen las especificaciones hasta fallos que dejan inutilizando el sistema.

Cuando nos referimos al desarrollo de software en el ámbito industrial, no se pretende que la capacidad de modelar se reduzca a empresas que disponen de gran numero de empleados o empresas que han de abordar

proyectos eminentemente grandiosos, si no que nos referimos, si no que nos referimos a la capacidad de obtener un producto comercial(sea cual sea su costo o tamaño) que cumpla lo que en la industria se suele denominar como calidad total y que además pueda reportar beneficios a corto o mediano plazo, evitando, por ejemplo,

implantaciones casi eternas debido a las falta de previsión o al haber abordado los problemas muy a la ligera.Por todas estas razones es inevitable el uso de modelos. Un modelo es una simplificación de la realidad. El

modelo nos proporciona los planos de un sistema, desde los más generales, que proporcionan una visión general del sistema, hasta los mas detallados. En un modelo se han de incluir los elementos que tengan más relevancia y

omitir los que no son interesantes para el nivel de abstracción que se ha elegido.

Page 22: Java Intro

. A través del modelado conseguimos cuatro objetivos

Los modelos ayudan a visualizar como es o queremos que sea un sistemaLos modelos nos permiten especificar la estructura o el comportamiento de un sistema

Los modelos nos proporcionan plantilla que nos guían en las construcciones de un sistema.Los modelos documentan decisiones que hemos adoptado

En la realidad, no siempre se hace un modelado formal, la probabilidad de que exista un modelado formal para abordar un sistema es inversamente proporcional a la complejidad del mismo, esto es,

cuanto mas fácil es un problema, menos tiempo se pasa modelando y esto es por que cuando hay que aportar unas solución a un problema complejo el uso del modelado nos ayuda a comprenderlo, mientras que cuando tenemos un problema fácil el uso del modelado que hacemos se reduce a

representar mentalmente el problema o como mucho a escribir unos cuantos garabatos sobre un papel.

Page 23: Java Intro

Hay cuatro principios básicos, estos son fruto de la experiencia de las ramas de la ingeniería:

a) la elección de que modelos se creen influye directamente sobre como se acomete el problema. Hay que seleccionar el modelo adecuado para cada momento y dependiendo de que modelo se elija se obtendrán diferentes beneficios y diferentes costos.En la industria de software

se ha comprobado que un modelado orientado a objetos proporciona una arquitectura mas flexible y readaptable que otros por ejemplo orientados ala funcionalidad o a los datos.

b)Todo modelo puede ser expresado a diferentes niveles de precision.Esto es, necesario poder selecciona el nivel de detalle que se desea ya que en diferentes partes de un proyecto y en

diferentes etapas se tendrán determinadas necesidades.

c) Los mejores modelos están ligados a la realidad. Lo principal es tener modelos que nos permitan representar la realidad mas claramente posible, pero no sólo esto, tenemos que saber, exactamente cuando se apartan de la realidad para no caer en la ocultación de ningún detalle

importante.

d) Un único modelo no es suficiente. Cualquier sistema que no se trivial se afronta mejor desde pequeños modelos casi independientes, que los podamos construir y estudiar

independientemente y que nos representen las parte mas diferenciados del sistemas y sus interrelaciones.

Page 24: Java Intro

Para poner un poco de orden sobre todo lo que respecta a la modelizacion de sistemas de software, aparece UML (unified

modeling lenguaje, Lenguaje unificado de modelado) que pretende unificar las 3 metodologías difundidas (OMT, Bootch y OOSE) e

intentar que la industria de software termine su maduración como ingeniería. Y lo consigue en tal manera que lo que UML

proporciona son las herramientas necesarias para poder obtener los planos de software equivalente a los que se utilizan en la

construcción, la mecánica o la industria aeroespacial. UML abarca todas la fases del ciclo de vida de un proyecto, soporta diferente

maneras de visualización dependiendo de quien tenga que interpretar los planos en que fase del proyecto se encuentre.

Aquí vuelvo a poner la definición de modelo, para que quede mas claro el concepto.

¿Que es un modelo?Es una simplificación de la realidad. El modelo nos proporciona los planos de un sistema, desde los mas generales, que proporcionan

una visión general del sistema, hasta lo mas detallado. En un modelo de tienen que incluir los elemento que tengan mas

reelevancia y omitir los que no son interesante para el nivel de abstracción que se ha elegido.

Page 25: Java Intro

Modelar sus clasesVas a ver un ejemplo de un modelado de clases en UML, repetiremos algunos

conceptos como clases, una clases es una descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y

semántica. Hay que hacer una especial diferenciación para no confundir el concepto de clases con el objeto.Un objeto es una instancia individual de una clase, así podríamos tener una clase que fuera de monitores y un objeto de la

clase de monitores que fuera un monitor marca “A” de 17 pulgadas, con la pantalla plana.En UML se usa un rectángulo para representar las classes, con

distintos compartimientos para indicar sus atributos y sus operaciones.

Una clase se identifica por un nombre que la distingue del resto, el nombre es una cadena de texto. Ese nombre sólo se denomina nombre simple, un

nombre de camino consta del nombre de la clase precedido del nombre del paquete en el que se encuentra incluida. En las figuras posteriores podemos

ver la estructura de una clases y distintos nombre de camino y nombres simples

Page 26: Java Intro

MONITOR

MARCAMODELO

ENCENDER ()

Nombre

Atributos

Operaciones

Un atributo es una propiedad de una clase identificada con un nombre, describe un rango de valores que pueden tomas las instancias de la propiedad.

Los atributos representan propiedades comunes a todos los objetos de una determinada clase, por ejemplo todos los monitores tienen la propiedad dimensión, que se suele medir en pulgadas. Un cliente tiene las propiedades nombre, apellidos, dirección, teléfono. Los atributos son propiedades interesantes de las clases. Una instancia de una determinada clase tendrá valores concretos para sus atributos, mientras que las clases tienen rangos

de valores que pueden admitir sus atributos.

El nombre de los atributos es un texto que normalmente se escribe en minúsculas si solo es una palabra o la primera palabra del nombre del atributo en minúsculas y el

resto de las palabras con la primera letra en mayúsculas, por ejemplo, nombrePropietario.

Una operación es una implementación de un servicio que puede ser requerido a cualquier objeto de la clase para que muestre su comportamiento. Una operación

representa algo que el objeto puede hacer, por ejemplo, un comportamiento esperado por cualquier usuario de un monitor es que este pueda encender y apagar.El nombre de las

operaciones sigue las mismas reglas de notación que los atributos pero suelen ser verbos que indican una acción o comportamiento de clase.

Page 27: Java Intro

Modelar relaciones entre clases

Las relaciones son la manera de representa las interacciones entre clases, ejemplo, un teclado el cual sin estar conectado a un CPU es totalmente inútil,

además si la CPU cambiase su conector de teclado este ya no se podría conectar a no ser que cambiase el también.

Para representar con UML como se conectan las cosas entres si, ya sea logia o ficiscamente, utilizamos las relaciones. Existen 3 tipos de relaciones importantes:

Dependencias, generalizaciones y asociaciones.

Dependencia:Es la relación de uso entre dos elementos de manera que un cambio en la especificación del elemento independiente puede afectar a otro elemento

implicado en la relación..Ejemplo:

Supongamos que tenemos una clase que representa un aparato reproductor de video, dependemos directamente de la clase de canal ya que grabaremos un canal u otro dependiendo de cual tenga seleccionando aparato de video. A su

vez clase televisión también depende de la clase canal para poder visualizar un determinado canal por la televisión.

Page 28: Java Intro

Video

CabezalesTipo Reproducción

poner ()pasar()

rebobinar()parar()grabar(c:canal)

Televisión

Pulgadasnum Canales

encender ()apagar()

cambiar(c:Canal)

canal

Frecuencia

buscar()fijar()

En esta figura podemos observar un ejemplo de relación de dependencia. Si en algún momento la clase canal cambiara (se modificara o añadiera la nueva funcionalidad) las clases video y televisión (que dependen de ella) podrían verse afectadas por el cambio y dejar de funcionar. Como podemos observar en esta figura tanto el método grabar () de la clase video, como al método cambiar() de la clase televisión se le ha añadido mas semántica representando el parámetro c del tipo canal. Este es un mecanismo común en UML de diseño avanzado de clases. Cuando queremos aportar mas información sobre una clase y sus métodos existe una nomenclatura bien definida para determinar mas los atributos y métodos de la clase indicando si son ocultos o públicos, tipo de datos, parámetros y que datos retornan.

Page 29: Java Intro

Generalización:Una relación entre un elemento general (llamado súper clase o padre) y un

caso mas especifico de ese elemento (llamado subclase o hijo).La generalización implica que los objetos hijo se pueden utilizar en cualquier lugar donde aparece el padre, pero no a la inversa. La clase hijo siempre

hereda todos los atributos y métodos de sus clases padres y a menudo (no siempre) el hijo extiende los atributos y operaciones del padre.

Una operación de un hijo puede tener la misma signatura que en el padre pero la operación puede ser definida por el hijo, esto se le conoce como

polimorfismo.La generalización se representa mediante una flecha dirigida con la punta hueca. Una clase puede tener ninguno, uno o varios padres. Una clase sin padre y uno o mas hijos se denomina clase raíz o clase base. Una

clase sin hijos se denomina clase hoja. Una clase con un único padre se dice que utiliza herencia simple y una clase con varios padres se dice que utiliza

múltiple. UML utiliza relaciones de generalización para el modelado de clases e interfaces, pero también se utilizan para establecer generalizaciones entre

otros elementos.

Page 30: Java Intro

Figura

Origen

Mover() Cambiar tamaño() dibujar()

Rectangulo Circulo Polígono

Esquina:Punto Radio:Float

Puntos:lista

dibujar()

Cuadrado

Page 31: Java Intro

Mediante las relaciones de generalización podemos ver que un cuadrado es un tipo de rectángulo que a su vez es un tipo de figura. Con esta relación podemos representar la herencia, de este modo, la clase cuadrado,

simplemente por herencia sabemos que tiene dos atributos, esquina (heredado de su padre rectángulo)y origen(heredado del padre rectángulo, la clase figura, que se puede decir que es su abuelo). Lo mismo ocurre con las operaciones, la clase cuadrado dispone de las operaciones mover (), cambiar tamaño () y dibujar () heredadas

todas desde figura.Normalmente la herencia simple es suficiente para modelar los problemas a los que enfrentamos pero en ciertas

ocasiones conviene modelar mediante herencia múltiple aunque vistos en esta situación se ha de ser extremadamente cuidadoso en no realizar herencia múltiple desde padres que solapen la estructura o

comportamiento:

Ejemplo de herencia múltiple

Page 32: Java Intro

Vehiculo

Vehiculo Terrestre

Vehiculo Acuatico

Vehiculo Aereo

Coche Moto Tanque Barco SubmarinoVehiculo Anfibio

Avión Globo

Page 33: Java Intro

Asociación:Es una relación estructural que específica que los objetos de un elemento esta conectados con los objetos de

otro. Dad una asociación entre dos clases, se puede navegar desde un objeto de una de ellas hasta uno de los objetos de la otra, y vicervera Es posible que la asociación se de de manera recursiva en un objeto, esto significa

que dado un objeto de la clase se puede conectar con otros objetos de la misma clase. También es posible, auque menos frecuente, que se conecten mas de dos clases, esta se suellen llamar asociaciones n-arias. Las

relaciones de asociaciones se utilizan cuando se quieren representar relaciones estructurales.A parte de la forma básica de representar las asociaciones, mediante una linea continua entre las clases

involucradas en la relacion, existe cuatro adornos que se aplican a las asociaciones para facilitar su comprensión:Nombre:

Se utiliza para describir la naturaleza de la relación. Para que no existe ambigüedad en su significado se le puede dar una dirección al nombre por medio de una flecha que apunte en la dirección que se pretende que el nombre

sea leído.Rol:

Cuando una clase participa en una asociación esta tiene un rol especifico que juega en dicha asociación. El rol es la cara que dicha clase presenta a la clase que se encuentra en el otro extremo. Las clases pueden jugar el

mismo o diferentes toles en otras asociaciones.

Page 34: Java Intro

Multiplicidad:En muchas situaciones del modelado es conveniente señalar cuantos objetos se pueden conectar a través de una instancia de la asociación. Este cuantos se denomina multiplicidad del rol en la asociación y se expresa con un rango de valores o un valor explicito. Cuando se indica multiplicidad en un extremo de una asociación se esta indicando que, para cada objeto de la clase en el extremo opuesto debe haber tantos objetos en este extremo.Se puede indicar la multiplicidad de exactamente uno, cero o uno (0…1), muchos (0,,,*), uno o mas(1,,,,*) e incluso un numero exacto (por ejemplo,5)Agregación:Una asociación normal entres dos clases representa una relación estructural entre iguales, es decir, ambas clases están conceptualmente al mismo nivel. A veces interesa representar relaciones del tipo “todo/parte” en las cuales una cosa representa la cosa grande (el todo) que consta de elementos mas pequeños (las partes).este tipo de relación se denomina agregación la cual representa una relación del tipo “tiene-un”.Una agregación es solo un tipo especial de asociación, esta se especifica añadiendo simplemente un rombo vació en la parte del todo.Composición:Es una variación de la agregación simple que añade una semántica importante. La composición es una forma de agregación, con una fuerte relación de pertenencia y vidad coincidentes de la parte del todo. Las partes con una multiplicidad no fijada puede crearse después de la parte que representa el todo (la parte compuesta) una vez creadas pertenecen a ella de manera que viven y mueren con ella. Las partes pueden ser eliminadas antes que el todo sea destruido pero una vez que este se elimine todas sus partes serán destruidas.El todo, se ha de encargar de toda la gestión de sus partes, creación, mantenimiento, disposición veamos el ejemplo de composición donde un marco pertenece a una ventana, pero ese marco no es compartido por ninguna otra ventana, esto contrasta con la agregación simple en la que una parte puede ser compartida por varios objetos agregados, ejemplo una pared puede ser compartida por varias habitaciones.

Page 35: Java Intro

Persona 1.. * Trabaja Para * Empresa

Multiplicidadnombre

Empleado patrón

Nombre del rol

Ejemplo de asociación y sus partes

Page 36: Java Intro

Ejemplo de agregación

Empresa1 *

Departamento

todo parte

Ejemplo de Composición

Ventana Marco

todo Composiciónparte

1 *

Page 37: Java Intro
Page 38: Java Intro