You are on page 1of 21

Técnicas de Programación

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

1

Tema: RELACIONES ENTRE CLASES

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

2

Tema: RELACIONES ENTRE CLASES

Técnicas de Programación Ing. La segunda clase llamada Producto tiene como atributos a nombre (de tipo cadena). Haybert Escobedo Neyra Veamos el siguiente diagrama de clases: Se observa la clase Pedido que tiene como atributos a numero (de tipo entero). Tiene como operaciones o métodos a Pedido(). Ilustración 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 métodos son: Almacen(). adicionarEmpleado() y obtenerEmpleado(). adicionarDetalle(). 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. 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. 3 Tema: RELACIONES ENTRE CLASES . como único método tiene a DetallePedido(). stock (de tipo entero) y precio (de tipo flotante) y como único método Producto(). obtenerProducto(). adiconarProducto(). fecha (de tipo cadena) y cliente (de tipo cadena). obtenerDetalle() y calcularTotalPedido(). La segunda clase llamada DetallePedido tiene como atributos a cantidad (de tipo entero) y precio (de tipo flotante).

Tenemos como métodos a Cliente(). direccion. La mayor novedad en este ejemplo es que la Clase Cuenta tiene un atributo llamado titular que es de tipo Cliente. localidad y fNacimiento (ver en la llave correpondiente a 1) . es decir. nombreCompleto() y direccionCompleta() (ver en 2). .Técnicas de Programación Ing. 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. apellidos. 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 3 4 4 Tema: RELACIONES ENTRE CLASES Se tiene la clase Cliente con los atributos nombre. Como métodos tiene a Cuenta y a leerTitular() (ver en 4). Se tiene la clase Cuenta que tiene como atributos a numero. 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. saldo e interesAnual (ver en la llave correspondiente a 3) . Si la relación tiene una cardinalidad superior a uno entonces será necesario utilizar un arreglo o una estructura de datos. titular (de tipo Cliente – ver flecha anaranjada).

nombreEsc. 5 Tema: RELACIONES ENTRE CLASES . facultad. Luego procede a ingresar los datos de dos escuelas profesionales.Técnicas de Programación 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.

Técnicas de Programación Ing. Haybert Escobedo Neyra 6 Tema: RELACIONES ENTRE CLASES .

Crear un archivo Producto.java y colocar el siguiente código: 7 Tema: RELACIONES ENTRE CLASES .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.

Haybert Escobedo Neyra Crear un archivo Almacen.Técnicas de Programación Ing.java y colocar el siguiente código: 8 Tema: RELACIONES ENTRE CLASES .

java y colocar el siguiente código: 9 Tema: RELACIONES ENTRE CLASES . Haybert Escobedo Neyra Crear el archivo OperacionesProductos.Técnicas de Programación Ing.

Luego procede a ingresar los datos de alumnos y matriculas. nroAsientos. Hacer uso de arreglos. stock y preciounitario. Finalmente mostrar un listado de los alumnos matriculados indicando los cursos que llevarán. Luego procede a ingresar datos de categorías y productos. 3. Haybert Escobedo Neyra 2. Luego proceder a ingresar datos en Marca y en Bus y posteriormente visualizar los datos de los buses ingresados. nombrePro. Posteriormente visualizar el producto de mayor stock. nombreCurso y costoCurso. 1 0 Tema: Actividades de Relaciones con Clases . nroEjes y nroPisos. 2.Técnicas de Programación Ing. Crear la clase Categoria con los atributos codigoCat y nombreCat. Actividades de Relaciones con Clases 1. Construye una aplicación que permita crear la clase Marca con los atributos codigoMar y nombreMar. También crear la clase Producto con los atributos codigoPro. codigoAlu. También crear la clase Bus con los atributos codigoBus. Crear la clase Alumno con los atributos codigoAlu. nombreAlu y emailAlu. También crear la clase Matricula con los atributos nroMatricula.

determinan desde qué clases se puede acceder a un determinado elemento. Este modificador sólo puede utilizarse sobre los miembros de una clase y sobre interfaces y clases internas. private. pero se suele conocer como default o package-private. que no tiene ninguna palabra clave asociada. dado que esto no tendría sentido. 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. private. Es importante destacar también que private convierte los elementos en privados para otras clases. indica que los elementos sólo pueden ser accedidos desde su mismo paquete (como el acceso por defecto) y desde cualquier clase que 1 1 . Es decir. Tema: 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. independientemente de que esta pertenezca o no al paquete en que se encuentra el elemento. como su nombre indica. por último. MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE Los modificadores de acceso. Haybert Escobedo Neyra 3. que consiste en que el elemento puede ser accedido sólo desde las clases que pertenezcan al mismo paquete. En Java tenemos 4 tipos: public.Técnicas de Programación Ing. no sobre clases o interfaces de primer nivel. El modificador protected. por otro lado. protected y el tipo por defecto. no para otras instancias de la clase. El nivel de acceso public permite a acceder al elemento desde cualquier clase. un objeto de una determinada clase puede acceder a los miembros privados de otro objeto de la misma clase.

incrementando la variable estática en el constructor: Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE 1 2 . por ejemplo. de esta forma no tenemos que ofrecer un constructor vacío para la clase que contiene el método. Este modificador. heredado de la terminología de C++. independientemente de si esta se encuentra en el mismo paquete o no. como private. el modificador static no sirve para crear constantes. Los distintos modificadores de acceso quedan resumidos en la siguiente tabla: STATIC A pesar de lo que podría parecer por su nombre. no tiene sentido a nivel de clases o interfaces no internas. que no es necesario crear un objeto de la clase para poder acceder a estos atributos y métodos. y no a una instancia de la clase. entre otras cosas. Esto implica. Un uso del modificador static sería. crear un contador de los objetos de la clase que se han creado. o indicar de alguna forma a la máquina virtual cómo instanciar la clase. sino para crear miembros que pertenecen a la clase. Este es el motivo por el cual es obligatorio que main se declare como static.Técnicas de Programación Ing. Haybert Escobedo Neyra extienda la clase en que se encuentra.

dado que tenemos acceso a los atributos sin necesidad de crear un objeto. una sentencia similar al import habitual.5 son los static imports. Haybert Escobedo Neyra Como es de esperar. El ejemplo anterior podría haberse escrito también de la siguiente forma utilizando esta característica: 1 3 Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE . Podemos acceder a estos métodos y atributos bien desde la propia clase: O bien desde una instancia cualquiera de la 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. Una característica no muy conocida que se introdujo en Java 1. permitiendo utilizar estos miembros sin indicar el espacio de nombres en el que se encuentran. con la salvedad de que esta importa miembros estáticos de las clases. que podría no tener sentido o no ser conveniente.Técnicas de Programación Ing. en lugar de clases de los paquetes. los atributos estáticos como usuarios no se inicializan al crear el objeto. sino al cargar la clase. como es el caso de la clase Math.

Haybert Escobedo Neyra Si por algún motivo requerimos cualquier tipo de computación para inicializar nuestras variables estáticas. añadiendo una llamada a System. lo cuál puede ser útil para añadir más semántica. FINAL Indica que una variable. no se podrá asignar un nuevo valor a la variable. método o clase no se va a modificar. no se podrá extender la clase. el cual se ejecuta una sola vez.exit para que el programa termine tras cargar la clase sin intentar llamar al método main . Si una clase se marca como final. Si una variable se marca como final. cuando se carga la clase. 1 4 Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE Por último. por cuestiones de rendimiento. utilizaremos lo que se conoce como bloque estático o inicializador estático. Si es un método el que se declara como final. no se podrá sobrescribir. 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.Técnicas de Programación Ing. y para detectar errores.

Una variable de clase static representa información “que abarca toda la clase”.Técnicas de Programación Ing. La declaración de un método estático comienza con la palabra clave static. este sí: MIEMBROS DE CLASES ESTÁTICOS Cada objeto de una clase tiene su propia copia de todas las variables de ejemplar de clase. 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í. sin embargo. En ciertos casos. sino tan sólo usar el operador de asignación para cambiar la referencia. una sola copia de la variable en particular debe ser compartida por todos los objetos de la clase. Por lo tanto el siguiente código no funcionaría: Pero. Por esta y otras razones utilizamos las variables de clase static (estáticas). 1 5 Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE .

1 6 Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE .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 objetos de Empleados.

Haybert Escobedo Neyra Interpretación de la programación: En el programa anterior usamos un atributo private static y un método public static. Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE 1 7 . 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. solo se usa el nombre de la Clase y luego el método getContador(). 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. El atributo contador se inicializa en cero por omisión. Un método declarado static no puede acceder a miembros de clase no estáticos. En la primera línea del Programa colocamos llamamos Empleado.Técnicas de Programación Ing.getContador() pues como es un método estático no es necesario usar un objeto de la clase para llamar al método. Para saber cuántos objetos hemos creados llamamos al método estático getContador() que devuelve el valor de la variable contador.

Respuesta con métodos estáticos: 1 8 Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE .Técnicas de Programación Ing. Hacerlo con métodos estáticos y métodos no estáticos. rectángulo y del triángulo. Haybert Escobedo Neyra 2) Crea una clase denominada FigurasGeometricas y calcula el área y el perímetro del cuadrado.

Haybert Escobedo Neyra 1 9 Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE .Técnicas de Programación Ing.

Haybert Escobedo Neyra Respuesta con métodos no estáticos: 2 0 Tema: MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE .Técnicas de Programación Ing.

2 1 Tema: Actividades de Métodos Estáticos 4. Hacer uso del modificador static en un atributo de la clase Docente.Técnicas de Programación Ing. Haybert Escobedo Neyra 1. 2. Construye una aplicación que permita calcular el área y el perímetro del trapecio. Construye una aplicación que permita crear la clase Docente con los atributos coddocente. Luego crea objetos Docente ingresando sus datos hasta confirmar que no se ingresará más datos. Actividades de Métodos Estáticos . 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. nombre. profesión y email.