Sunteți pe pagina 1din 21

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

Temario

Contenido
1. 2. 3. RELACIONES ENTRE CLASES ........................................................................................................ 2 Actividades de Relaciones con Clases ....................................................................................... 10 MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE ............................................... 11

Tema: RELACIONES ENTRE CLASES

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

1. RELACIONES ENTRE CLASES

Un conjunto de objetos aislados tiene escasa capacidad de resolver un problema. En una aplicacin til los objetos colaboran e intercambian informacin, mantienen distintos tipos de relaciones entre ellos. A nivel de diseo podemos distinguir entre 5 tipos de relaciones bsicas entre clases de objetos: dependencia, asociacin, agregacin, composicin y herencia. La dependencia es la relacin menos importante, simplemente refleja que entre dos clases de objetos existe una posible colaboracin temporal con algn propsito. Una dependencia puede indicar la utilizacin de un objeto de una clase como argumento de una operacin o en su implementacin. En cambio, la asociacin es la relacin ms importante y ms comn. Refleja una relacin 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 relacin, el sentido de dicha relacin y las cardinalidades en los dos extremos.

Tema: RELACIONES ENTRE CLASES

Tcnicas de Programacin

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 mtodos 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 mtodo tiene a DetallePedido(). Existe una relacin entre la clase de Pedido y DetallePedido que consiste que cada Pedido debe estar compuesto de uno a muchos Detalle de Pedidos.
Ilustracin 1: Diagrama de clases N 1

Veamos otro diagrama de clases: Se observa la clase Almacen que tiene como nico atributo nombre (de tipo cadena) y sus mtodos son: Almacen(), adiconarProducto(), obtenerProducto(), adicionarEmpleado() y obtenerEmpleado(). 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 mtodo Producto(). Existe una relacin entre la clase Almacen y la clase Producto que consiste que cada Almacen puede
Ilustracin 2: Diagrama de clases N 2

tener uno o muchos productos.

Tema: RELACIONES ENTRE CLASES

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

Una asociacin se implementa en Java introduciendo referencias a objetos de la clase destino de la relacin como atributos de la clase origen. Si la relacin tiene una cardinalidad superior a uno entonces ser necesario utilizar un arreglo o una estructura de datos. Normalmente la conexin entre los objetos se realiza recibiendo la referencia de uno de ellos en el constructor u otro operacin similar del otro. Veamos el siguiente cdigo escrito en Java:

Tema: RELACIONES ENTRE CLASES

Se tiene la clase Cliente con los atributos nombre, apellidos, direccion, localidad y fNacimiento (ver en la llave correpondiente a 1) . Tenemos como mtodos 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 mtodos 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 mtodos.

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

PROGRAMAS RESUELTOS 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.

Tema: RELACIONES ENTRE CLASES

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

Tema: RELACIONES ENTRE CLASES

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

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

Crear un archivo Producto.java y colocar el siguiente cdigo:

Tema: RELACIONES ENTRE CLASES

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

Crear un archivo Almacen.java y colocar el siguiente cdigo:

Tema: RELACIONES ENTRE CLASES

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

Crear el archivo OperacionesProductos.java y colocar el siguiente cdigo:

Tema: RELACIONES ENTRE CLASES

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

2. Actividades de Relaciones con Clases


1. Crear la clase Alumno con los atributos codigoAlu, nombreAlu y emailAlu. Tambin 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 llevarn. 2. Crear la clase Categoria con los atributos codigoCat y nombreCat. Tambin crear la clase Producto con los atributos codigoPro, nombrePro, stock y preciounitario. Luego procede a ingresar datos de categoras y productos. Posteriormente visualizar el producto de mayor stock. 3. Construye una aplicacin que permita crear la clase Marca con los atributos codigoMar y nombreMar. Tambin 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

Tema: Actividades de Relaciones con Clases

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

3. 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.
Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Si no especificamos ningn modificador de acceso se utiliza el nivel de acceso por defecto, que consiste en que el elemento puede ser accedido slo 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 ms restrictivo y especifica que los elementos que lo utilizan slo pueden ser accedidos desde la clase en la que se encuentran. Este modificador slo 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 tendra sentido. Es importante destacar tambin 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 slo pueden ser accedidos desde su mismo paquete (como el acceso por defecto) y desde cualquier clase que

1 1

Tcnicas de Programacin

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:

STATIC A pesar de lo que podra parecer por su nombre, heredado de la terminologa 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 mtodos. Este es el motivo por el cual es obligatorio que main se declare como static; de esta forma no tenemos que ofrecer un constructor vaco para la clase que contiene el mtodo, o indicar de alguna forma a la mquina virtual cmo instanciar la clase. Un uso del modificador static sera, por ejemplo, crear un contador de los objetos de la clase que se han creado, incrementando la variable esttica en el constructor:
Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

1 2

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

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

O bien desde una instancia cualquiera de la clase:

Otro uso sera el de crear una recopilacin de mtodos y atributos relacionados a los que poder acceder sin necesidad de crear un objeto asociado, que podra no tener sentido o no ser conveniente, como es el caso de la clase Math.

Una caracterstica 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 estticos 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 podra haberse escrito tambin de la siguiente forma utilizando esta caracterstica:

1 3

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

Si por algn motivo requerimos cualquier tipo de computacin para inicializar nuestras variables estticas, utilizaremos lo que se conoce como bloque esttico o inicializador esttico, el cual se ejecuta una sola vez, cuando se carga la clase.

FINAL Indica que una variable, mtodo o clase no se va a modificar, lo cul puede ser til para aadir ms semntica, 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 mtodo el que se declara como final, no se podr sobrescribir.

1 4

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

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, aadiendo una llamada a System.exit para que el programa termine tras cargar la clase sin intentar llamar al mtodo main

Tcnicas de Programacin

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 slo usar el operador de asignacin para cambiar la referencia. Por lo tanto el siguiente cdigo no funcionara:

Pero, sin embargo, este s:

MIEMBROS DE CLASES ESTTICOS 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 (estticas). Una variable de clase static representa informacin que abarca toda la clase. La declaracin de un mtodo esttico comienza con la palabra clave static.

1 5

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

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

1 6

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

Interpretacin de la programacin: En el programa anterior usamos un atributo private static y un mtodo public static. El atributo contador se inicializa en cero por omisin. Esta variable va contando el nmero 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 cuntos objetos hemos creados llamamos al mtodo esttico getContador() que devuelve el valor de la variable contador. Un mtodo declarado static no puede acceder a miembros de clase no estticos. Un mtodo static no tiene referencia this porque las variables de clase static y los mtodos static existen independientemente de que existan o no objetos de clase. En la primera lnea del Programa colocamos llamamos Empleado.getContador() pues como es un mtodo esttico no es necesario usar un objeto de la clase para llamar al mtodo, solo se usa el nombre de la Clase y luego el mtodo getContador().
Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

1 7

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

2) Crea una clase denominada FigurasGeometricas y calcula el rea y el permetro del cuadrado, rectngulo y del tringulo. Hacerlo con mtodos estticos y mtodos no estticos. Respuesta con mtodos estticos:

1 8

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Tcnicas de Programacin Ing. Haybert Escobedo Neyra

1 9

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

Respuesta con mtodos no estticos:

2 0

Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Tcnicas de Programacin

Ing. Haybert Escobedo Neyra

1. Construye una aplicacin que permita crear la clase Docente con los atributos coddocente, nombre, profesin y email. Luego crea objetos Docente ingresando sus datos hasta confirmar que no se ingresar ms datos. Hacer uso del modificador static en un atributo de la clase Docente. 2. Construye una aplicacin que permita calcular el rea y el permetro del trapecio. Crea la clase con los atributos necesarios y hazlo con mtodos no estticos tanto para el clculo del rea y del permetro.

2 1

Tema: Actividades de Mtodos Estticos

4. Actividades de Mtodos Estticos

S-ar putea să vă placă și