Relaciones Clases

Share Embed Donate


Short Description

Download Relaciones Clases...

Description

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Temario

1.

RELACIONES ENTRE CLASES ........................................................................................................ 2

2.

Actividades de Relaciones con Clases ....................................................................................... 10

3.

MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE............................................... 11

Tema: RELACIONES ENTRE CLASES

Contenido

1

Técnicas de Programación

Ing. Haybert Escobedo Neyra

1. RELACIONES ENTRE CLASES

Un conjunto de objetos aislados tiene escasa capacidad de resolver un problema. En una aplicación útil los objetos colaboran e intercambian información, mantienen distintos tipos de relaciones entre ellos.

La dependencia es la relación menos importante, simplemente refleja que entre dos clases de objetos existe una posible colaboración temporal con algún propósito. Una dependencia puede indicar la utilización de un objeto de una clase como argumento de una operación o en su implementación. En cambio, la asociación es la relación más importante y más común. Refleja una relación entre dos clases independientes que se mantiene durante la vida de los objetos de dichas clases o al menos durante un tiempo prolongado. En UML suele indicarse el nombre de la relación, el sentido de dicha relación y las cardinalidades en los dos extremos.

Tema: RELACIONES ENTRE CLASES

A nivel de diseño podemos distinguir entre 5 tipos de relaciones básicas entre clases de objetos: dependencia, asociación, agregación, composición y herencia.

2

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Veamos el siguiente diagrama de clases:

Se observa la clase Pedido que tiene como atributos a numero (de tipo entero), fecha (de tipo cadena) y cliente (de tipo cadena). Tiene como operaciones o métodos a Pedido(), adicionarDetalle(), obtenerDetalle() y calcularTotalPedido(). La segunda clase llamada DetallePedido tiene como atributos a cantidad (de tipo entero) y precio (de tipo flotante), como único método tiene a DetallePedido(). Existe una relación entre la clase de Pedido y DetallePedido que consiste que cada Pedido debe estar compuesto de uno a muchos Detalle de Pedidos. Ilustración 1: Diagrama de clases Nº 1

Veamos otro diagrama de clases:

La segunda clase llamada Producto tiene como atributos a nombre (de tipo cadena), stock (de tipo entero) y precio (de tipo flotante) y como único método Producto(). Existe una relación entre la clase Almacen y la clase Producto que consiste que cada Almacen puede Ilustración 2: Diagrama de clases Nº 2

tener uno o muchos productos.

Tema: RELACIONES ENTRE CLASES

Se observa la clase Almacen que tiene como único atributo nombre (de tipo cadena) y sus métodos son: Almacen(), adiconarProducto(), obtenerProducto(), adicionarEmpleado() y obtenerEmpleado().

3

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Una asociación se implementa en Java introduciendo referencias a objetos de la clase destino de la relación como atributos de la clase origen. Si la relación tiene una cardinalidad superior a uno entonces será necesario utilizar un arreglo o una estructura de datos. Normalmente la conexión entre los objetos se realiza recibiendo la referencia de uno de ellos en el constructor u otro operación similar del otro. Veamos el siguiente código escrito en Java:

1

2

4

Se tiene la clase Cliente con los atributos nombre, apellidos, direccion, localidad y fNacimiento (ver en la llave correpondiente a 1). Tenemos como métodos a Cliente(), nombreCompleto() y direccionCompleta() (ver en 2). Se tiene la clase Cuenta que tiene como atributos a numero, titular (de tipo Cliente – ver flecha anaranjada), saldo e interesAnual (ver en la llave correspondiente a 3) . Como métodos tiene a Cuenta y a leerTitular() (ver en 4). La mayor novedad en este ejemplo es que la Clase Cuenta tiene un atributo llamado titular que es de tipo Cliente, es decir, que este atributo titular es un objeto de la Clase Cliente y por lo tanto contiene a su vez a los atributos de Cliente y con la posibilidad de usar sus métodos.

Tema: RELACIONES ENTRE CLASES

3

4

Técnicas de Programación

Ing. Haybert Escobedo Neyra

PROGRAMAS RESUELTOS

Tema: RELACIONES ENTRE CLASES

1) Crear la clase Facultad con los atributos codigoFac y nombreFac y luego la clase EscuelaProfesional con los atributos codigoEsc, nombreEsc, facultad. Luego procede a ingresar los datos de dos escuelas profesionales.

5

Ing. Haybert Escobedo Neyra

Tema: RELACIONES ENTRE CLASES

Técnicas de Programación

6

Técnicas de Programación

Ing. Haybert Escobedo Neyra

2) Tomando el diagrama de clases Nº 2 proceder a ingresar datos de productos. Hacer uso de arreglos o vectores.

Tema: RELACIONES ENTRE CLASES

Crear un archivo Producto.java y colocar el siguiente código:

7

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Tema: RELACIONES ENTRE CLASES

Crear un archivo Almacen.java y colocar el siguiente código:

8

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Tema: RELACIONES ENTRE CLASES

Crear el archivo OperacionesProductos.java y colocar el siguiente código:

9

Técnicas de Programación

Ing. Haybert Escobedo Neyra

2. Actividades de Relaciones con Clases 1. Crear la clase Alumno con los atributos codigoAlu, nombreAlu y emailAlu. También crear la clase Matricula con los atributos nroMatricula, codigoAlu, nombreCurso y costoCurso. Luego procede a ingresar los datos de alumnos y matriculas. Finalmente mostrar un listado de los alumnos matriculados indicando los cursos que llevarán. 2. Crear la clase Categoria con los atributos codigoCat y nombreCat. También crear la clase Producto con los atributos codigoPro, nombrePro, stock y preciounitario. Luego procede a ingresar datos de categorías y productos. Posteriormente visualizar el producto de mayor stock.

Tema: Actividades de Relaciones con Clases

3. Construye una aplicación que permita crear la clase Marca con los atributos codigoMar y nombreMar. También crear la clase Bus con los atributos codigoBus, nroAsientos, nroEjes y nroPisos. Luego proceder a ingresar datos en Marca y en Bus y posteriormente visualizar los datos de los buses ingresados. Hacer uso de arreglos.

1 0

Técnicas de Programación

Ing. Haybert Escobedo Neyra

3. MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Si no especificamos ningún modificador de acceso se utiliza el nivel de acceso por defecto, que consiste en que el elemento puede ser accedido sólo desde las clases que pertenezcan al mismo paquete. El nivel de acceso public permite a acceder al elemento desde cualquier clase, independientemente de que esta pertenezca o no al paquete en que se encuentra el elemento. private, por otro lado, es el modificador más restrictivo y especifica que los elementos que lo utilizan sólo pueden ser accedidos desde la clase en la que se encuentran. Este modificador sólo puede utilizarse sobre los miembros de una clase y sobre interfaces y clases internas, no sobre clases o interfaces de primer nivel, dado que esto no tendría sentido. Es importante destacar también que private convierte los elementos en privados para otras clases, no para otras instancias de la clase. Es decir, un objeto de una determinada clase puede acceder a los miembros privados de otro objeto de la misma clase. El modificador protected, por último, indica que los elementos sólo pueden ser accedidos desde su mismo paquete (como el acceso por defecto) y desde cualquier clase que

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Los modificadores de acceso, como su nombre indica, determinan desde qué clases se puede acceder a un determinado elemento. En Java tenemos 4 tipos: public, private, protected y el tipo por defecto, que no tiene ninguna palabra clave asociada, pero se suele conocer como default o package-private.

1 1

Técnicas de Programación

Ing. Haybert Escobedo Neyra

extienda la clase en que se encuentra, independientemente de si esta se encuentra en el mismo paquete o no. Este modificador, como private, no tiene sentido a nivel de clases o interfaces no internas. Los distintos modificadores de acceso quedan resumidos en la siguiente tabla:

A pesar de lo que podría parecer por su nombre, heredado de la terminología de C++, el modificador static no sirve para crear constantes, sino para crear miembros que pertenecen a la clase, y no a una instancia de la clase. Esto implica, entre otras cosas, que no es necesario crear un objeto de la clase para poder acceder a estos atributos y métodos. Este es el motivo por el cual es obligatorio que main se declare como static; de esta forma no tenemos que ofrecer un constructor vacío para la clase que contiene el método, o indicar de alguna forma a la máquina virtual cómo instanciar la clase. Un uso del modificador static sería, por ejemplo, crear un contador de los objetos de la clase que se han creado, incrementando la variable estática en el constructor:

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

STATIC

1 2

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Como es de esperar, dado que tenemos acceso a los atributos sin necesidad de crear un objeto, los atributos estáticos como usuarios no se inicializan al crear el objeto, sino al cargar la clase. Podemos acceder a estos métodos y atributos bien desde la propia clase:

Otro uso sería el de crear una recopilación de métodos y atributos relacionados a los que poder acceder sin necesidad de crear un objeto asociado, que podría no tener sentido o no ser conveniente, como es el caso de la clase Math.

Una característica no muy conocida que se introdujo en Java 1.5 son los static imports, una sentencia similar al import habitual, con la salvedad de que esta importa miembros estáticos de las clases, en lugar de clases de los paquetes, permitiendo utilizar estos miembros sin indicar el espacio de nombres en el que se encuentran. El ejemplo anterior podría haberse escrito también de la siguiente forma utilizando esta característica:

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

O bien desde una instancia cualquiera de la clase:

1 3

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Por último, una curiosidad relacionada que se puede utilizar para romper el hielo con una programa en Java es que podemos utilizar un bloque static para escribir un programa sencillo sin necesidad de un main, añadiendo una llamada a System.exit para que el programa termine tras cargar la clase sin intentar llamar al método main

FINAL Indica que una variable, método o clase no se va a modificar, lo cuál puede ser útil para añadir más semántica, por cuestiones de rendimiento, y para detectar errores. Si una variable se marca como final, no se podrá asignar un nuevo valor a la variable. Si una clase se marca como final, no se podrá extender la clase. Si es un método el que se declara como final, no se podrá sobrescribir.

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Si por algún motivo requerimos cualquier tipo de computación para inicializar nuestras variables estáticas, utilizaremos lo que se conoce como bloque estático o inicializador estático, el cual se ejecuta una sola vez, cuando se carga la clase.

1 4

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Algo muy a tener en cuenta a la hora de utilizar este modificador es que si es un objeto lo que hemos marcado como final, esto no nos impedirá modificar el objeto en sí, sino tan sólo usar el operador de asignación para cambiar la referencia. Por lo tanto el siguiente código no funcionaría:

MIEMBROS DE CLASES ESTÁTICOS Cada objeto de una clase tiene su propia copia de todas las variables de ejemplar de clase. En ciertos casos, una sola copia de la variable en particular debe ser compartida por todos los objetos de la clase. Por esta y otras razones utilizamos las variables de clase static (estáticas). Una variable de clase static representa información “que abarca toda la clase”. La declaración de un método estático comienza con la palabra clave static.

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Pero, sin embargo, este sí:

1 5

Técnicas de Programación

Ing. Haybert Escobedo Neyra

PROGRAMAS RESUELTOS 1) Crear una clase Empleado que haga uso del modificador static y luego crea dos

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

objetos de Empleados.

1 6

Técnicas de Programación

Ing. Haybert Escobedo Neyra

En el programa anterior usamos un atributo private static y un método public static. El atributo contador se inicializa en cero por omisión. Esta variable va contando el número de Objetos de la Clase Empleado que se van creando, esta variable se va incrementando en el constructor cada vez que se crea un objeto. Para saber cuántos objetos hemos creados llamamos al método estático getContador() que devuelve el valor de la variable contador. Un método declarado static no puede acceder a miembros de clase no estáticos. Un método static no tiene referencia this porque las variables de clase static y los métodos static existen independientemente de que existan o no objetos de clase. En la primera línea del Programa colocamos llamamos Empleado.getContador() pues como es un método estático no es necesario usar un objeto de la clase para llamar al método, solo se usa el nombre de la Clase y luego el método getContador().

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Interpretación de la programación:

1 7

Técnicas de Programación

Ing. Haybert Escobedo Neyra

2) Crea una clase denominada FigurasGeometricas y calcula el área y el perímetro del cuadrado, rectángulo y del triángulo. Hacerlo con métodos estáticos y métodos no estáticos.

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Respuesta con métodos estáticos:

1 8

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Técnicas de Programación Ing. Haybert Escobedo Neyra

1 9

Técnicas de Programación

Ing. Haybert Escobedo Neyra

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Respuesta con métodos no estáticos:

2 0

Ing. Haybert Escobedo Neyra

4. Actividades de Métodos Estáticos 1. Construye una aplicación que permita crear la clase Docente con los atributos coddocente, nombre, profesión y email. Luego crea objetos Docente ingresando sus datos hasta confirmar que no se ingresará más datos. Hacer uso del modificador static en un atributo de la clase Docente. 2. Construye una aplicación que permita calcular el área y el perímetro del trapecio. Crea la clase con los atributos necesarios y hazlo con métodos no estáticos tanto para el cálculo del área y del perímetro.

Tema: Actividades de Métodos Estáticos

Técnicas de Programación

2 1

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF