![Page 1: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/1.jpg)
03/02/03 1
Estrategias de Comunicación Estrategias de Comunicación para Implementar un Diseño para Implementar un Diseño
en Javaen Java
Artur Boronat Moll
Laboratorio de Sistemas de Información
Facultad de InformáticaUniversidad Politécnica de Valencia
![Page 2: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/2.jpg)
03/02/03 2
Introducción (I)Introducción (I)
Objetivo: Implementar el diseño de un sistema usando un lenguaje OO (java)
Modalidades: acoplamiento normal (por datos) acoplamiento común (vbles globales) cluster de información
![Page 3: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/3.jpg)
03/02/03 3
Introducción (II)Introducción (II)
Dos aproximaciones: A partir de un diseño estructurado (procedural) A partir de un diseño OO
![Page 4: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/4.jpg)
03/02/03 4
COORDINADOR
PREPRODUCTOR PRECONSUMIDOR
PRODUCTOR
(obtiene una cadena del usuario)
CONSUMIDOR(muestra por pantalla
la información introducida)
SISTEMA
Introducción (III)Introducción (III)
![Page 5: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/5.jpg)
03/02/03 5
APROXIMACIÓN APROXIMACIÓN ESTRUCTURADAESTRUCTURADA
Acoplamiento normal Acoplamiento común Cluster de información
![Page 6: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/6.jpg)
03/02/03 6
APROXIMACIÓN ESTRUCTURADA APROXIMACIÓN ESTRUCTURADA (1.1) Acoplamiento Normal(1.1) Acoplamiento Normal
Acoplamiento normal
COORDINADOR
PREPRODUCTOR PRECONSUMIDOR
PRODUCTOR
(obtiene una cadena del usuario)
CONSUMIDOR(muestra por pantalla
la información introducida)
dato
dato dato
dato
![Page 7: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/7.jpg)
03/02/03 7
APROXIMACIÓN ESTRUCTURADA APROXIMACIÓN ESTRUCTURADA
(1.2) Acoplamiento Normal(1.2) Acoplamiento Normal import java.lang.System;import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;
public class DProcParam { /* Diseño procedural: acoplamiento normal (por datos) */ public static String preProductor() throws
IOException { // Llama al módulo de creación del dato return productor(); }
...
![Page 8: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/8.jpg)
03/02/03 8
APROXIMACIÓN ESTRUCTURADA APROXIMACIÓN ESTRUCTURADA (1.3) Acoplamiento Normal(1.3) Acoplamiento Normal
...public static String productor() throws IOException { // Lee un dato introducido por el usuario BufferedReader keyboardInput; // Se pide al usuario que introduzca una cadena System.out.print("Escribe una cadena: "); System.out.flush(); // Se lee el dato introducido keyboardInput = new BufferedReader(new
InputStreamReader(System.in)); return keyboardInput.readLine(); } ...
![Page 9: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/9.jpg)
03/02/03 9
APROXIMACIÓN ESTRUCTURADA APROXIMACIÓN ESTRUCTURADA (1.4) Acoplamiento Normal(1.4) Acoplamiento Normal
... public static void preConsumidor( String dato ) { // Llama al módulo que muestra el dato consumidor( dato ); }
public static void consumidor( String dato ) { // Muestra el dato por pantalla System.out.println( "La cadena introducida es: " +
dato ); } ...
![Page 10: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/10.jpg)
03/02/03 10
APROXIMACIÓN ESTRUCTURADA APROXIMACIÓN ESTRUCTURADA (1.5) Acoplamiento Normal(1.5) Acoplamiento Normal
... public static void main( String args[] ) throws
IOException { // Actua de módulo coordinador String dato = preProductor(); preConsumidor( dato ); }}
![Page 11: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/11.jpg)
03/02/03 11
APROXIMACIÓN ESTRUCTURADA APROXIMACIÓN ESTRUCTURADA (1.6) Acoplamiento Normal(1.6) Acoplamiento Normal
Inconvenientes: Flujo de datos vagabundos
Observación: si se quisiera devolver más de un parámetro del mismo tipo: devolver vector de elementos de diferente tipo: diferentes métodos de
obtención estáticos
![Page 12: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/12.jpg)
03/02/03 12
Aprox. Estructurada (2.1)Aprox. Estructurada (2.1)Acoplamiento comunAcoplamiento comun
Acoplamiento común (vbles globales)
COORDINADOR
PREPRODUCTOR PRECONSUMIDOR
PRODUCTOR
(obtiene una cadena del usuario)
CONSUMIDOR(muestra por pantalla
la información introducida)
dato
![Page 13: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/13.jpg)
03/02/03 13
Aprox. Estructurada (2.2)Aprox. Estructurada (2.2)Acoplamiento comunAcoplamiento comun
public class DProcGlobal { /* Diseño procedural: acoplamiento común o por variables globales */ public static String dato;
public static void preProductor() throws IOException { // Llama al módulo de creación del dato productor(); }...
![Page 14: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/14.jpg)
03/02/03 14
Aprox. Estructurada (2.1)Aprox. Estructurada (2.1)Acoplamiento comunAcoplamiento comun
... public static void productor() throws IOException { // Lee un dato introducido por el usuario
// Se pide al usuario que introduzca una cadena System.out.print("Escribe una cadena: "); System.out.flush(); // Se lee el dato introducido BufferedReader keyboardInput = new BufferedReader
(new InputStreamReader(System.in)); dato = keyboardInput.readLine(); } ...
![Page 15: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/15.jpg)
03/02/03 15
Aprox. Estructurada (2.4)Aprox. Estructurada (2.4)Acoplamiento comunAcoplamiento comun
... public static void preConsumidor() { // Llama al módulo que muestra el dato consumidor(); }
public static void consumidor() { // Muestra el dato por pantalla System.out.println( "La cadena introducida es: " + dato ); }...
![Page 16: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/16.jpg)
03/02/03 16
Aprox. Estructurada (2.5)Aprox. Estructurada (2.5)Acoplamiento comunAcoplamiento comun
... public static void main( String args[] ) throws IOException { // Actua de módulo coordinador preProductor(); preConsumidor(); }}
![Page 17: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/17.jpg)
03/02/03 17
Aprox. Estructurada (2.6)Aprox. Estructurada (2.6)Acoplamiento comunAcoplamiento comun
Ventajas: Se elimina el flujo de datos vagabundos
Inconvenientes: Acoplamiento global prescindible
![Page 18: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/18.jpg)
03/02/03 18
Aproximación Estructurada (3.2)Aproximación Estructurada (3.2)Cluster de informaciónCluster de información
Cluster (cúmulo) de información
COORDINADOR
PREPRODUCTOR PRECONSUMIDOR
PRODUCTOR CONSUMIDOR
dato
Inicializar Dato
Obtener Dato
dato dato
![Page 19: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/19.jpg)
03/02/03 19
Aproximación Estructurada (3.2)Aproximación Estructurada (3.2)Cluster de informaciónCluster de información
public class DProcCluster { /* Diseño procedural: cúmulo (cluster) de información */
public static void preProductor() throws IOException { // Llama al módulo de creación del dato productor(); }
...
![Page 20: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/20.jpg)
03/02/03 20
Aproximación Estructurada (3.3)Aproximación Estructurada (3.3)Cluster de informaciónCluster de información...
public static void productor() throws IOException { // Lee un dato introducido por el usuario String dato_local; // Se pide al usuario que introduzca una cadena System.out.print("Escribe una cadena: "); System.out.flush(); // Se lee el dato introducido BufferedReader keyboardInput = new BufferedReader
(new InputStreamReader(System.in)); dato_local = keyboardInput.readLine(); //almacenamos el dato en el cluster ProcCluster.setDato( dato_local ); } ...
![Page 21: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/21.jpg)
03/02/03 21
Aproximación Estructurada (3.4)Aproximación Estructurada (3.4)Cluster de informaciónCluster de información
... public static void preConsumidor() { // Llama al módulo que muestra el dato consumidor(); }
public static void consumidor() { // Muestra la información por pantalla System.out.println( "La cadena introducida es: " +
ProcCluster.getDato() ); }
...
![Page 22: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/22.jpg)
03/02/03 22
Aproximación Estructurada (3.5)Aproximación Estructurada (3.5)Cluster de informaciónCluster de información
... public static void main( String args[] ) throws IOException { // Actua de módulo coordinador preProductor(); preConsumidor(); }} //fin clase DProcCluster...
![Page 23: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/23.jpg)
03/02/03 23
Aproximación Estructurada (3.6)Aproximación Estructurada (3.6)Cluster de informaciónCluster de información
... class ProcCluster { private static String dato;
public static void setDato( String nuevoDato ) { dato = nuevoDato; }
public static String getDato() { return dato; }} // fin clase ProcCluster
![Page 24: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/24.jpg)
03/02/03 24
Aproximación Estructurada (3.7)Aproximación Estructurada (3.7)Cluster de informaciónCluster de información
Ventajas No hay flujos de datos vagabundos Buen acoplamiento
![Page 25: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/25.jpg)
03/02/03 25
APROXIMACIÓN ORIENTADA A OBJETOS APROXIMACIÓN ORIENTADA A OBJETOS (1.1)(1.1)
Acoplamiento normal Acoplamiento común Cluster de información
![Page 26: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/26.jpg)
03/02/03 26
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.1) Acoplamiento normalOBJETOS (1.1) Acoplamiento normal
Diagrama de clases
PRODUCTOR
- dato
+ preProducir( ): String- producir( )
CONSUMIDOR
- dato
+ preConsumir (dato: String)- consumir( )
COORDINADOR
+ coordinar( )
1
1
1
1
![Page 27: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/27.jpg)
03/02/03 27
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.2) Acoplamiento normalOBJETOS (1.2) Acoplamiento normal
Interacción entre objetos
preProducir
producir
PRODUCTOR
preConsumir
consumir
CONSUMIDOR
coordinar
COORDINADOR
dato
dato
![Page 28: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/28.jpg)
03/02/03 28
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.3) Acoplamiento normalOBJETOS (1.3) Acoplamiento normal
Diagrama de secuencia
![Page 29: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/29.jpg)
03/02/03 29
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.4) Acoplamiento normalOBJETOS (1.4) Acoplamiento normal
public class DOOParam { /* Diseño OO: acoplamiento normal (por datos) - Tercera aproximación: métodos no estáticos en las clases Productor y Consumidor, y con atributos - Clase coordinador */
public static void main( String args[] ) throws IOException { Coordinador c = new Coordinador(); c.coordinar(); }} //fin clase DOOParam
![Page 30: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/30.jpg)
03/02/03 30
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.5) Acoplamiento normalOBJETOS (1.5) Acoplamiento normal
class Coordinador { // Clase raíz encargada de coordinar el productor y el // consumidor private Productor p; private Consumidor c;
public Coordinador() { p = new Productor( this ); c = new Consumidor( this ); }...
![Page 31: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/31.jpg)
03/02/03 31
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.6) Acoplamiento normalOBJETOS (1.6) Acoplamiento normal
... public void coordinar() throws IOException { // Actua de módulo coordinador String dato;
dato = p.preProducir(); c.preConsumir( dato ); }} // fin clase Coordinador
![Page 32: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/32.jpg)
03/02/03 32
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.7) Acoplamiento normalOBJETOS (1.7) Acoplamiento normal
class Productor { // Clase encargada de leer información del usuario private Coordinador coo; private String dato; public Productor( Coordinador nuevoCoo) { coo = nuevoCoo; } public String preProducir() throws IOException {
// Llama al módulo de creación del dato producir(); return dato; } ...
![Page 33: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/33.jpg)
03/02/03 33
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.8) Acoplamiento normalOBJETOS (1.8) Acoplamiento normal
... private void producir() throws IOException {
// Lee un dato introducido por el usuario BufferedReader keyboardInput; // Se pide al usuario que introduzca una cadena System.out.print("Escribe una cadena: "); System.out.flush(); // Se lee el dato introducido keyboardInput = new BufferedReader (new
InputStreamReader (System.in)); dato = keyboardInput.readLine(); }} //fin clase Productor
![Page 34: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/34.jpg)
03/02/03 34
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.9) Acoplamiento normalOBJETOS (1.9) Acoplamiento normal
class Consumidor { //Clase encargada de mostrar la información introducida por pantalla
private Coordinador coo; private String dato;
public Consumidor(Coordinador nuevoCoo) { coo = nuevoCoo; }...
![Page 35: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/35.jpg)
03/02/03 35
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.10) Acoplamiento normalOBJETOS (1.10) Acoplamiento normal
... public void preConsumir(String dato) { // Llama al módulo que muestra el dato this.dato = dato; consumir(); } private void consumir() { // Muestra el dato por pantalla System.out.println( "La cadena introducida es: " + this.dato ); }} // fin clase Consumidor
![Page 36: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/36.jpg)
03/02/03 36
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (1.11) Acoplamiento normalOBJETOS (1.11) Acoplamiento normal
Ventaja: No hay flujo de datos vagabundos
Observación: más de un parámetro del mismo tipo: devolver vector (en el return) diferente tipo:
pasar como parámetro la referencia al objeto (teniendo en cuenta que modificamos su estado)
si los atributos del objeto no tienen valor aún, crear una nueva instancia (desde un método estático - productor), llenarla con los datos y devolver su referencia (en el return)
![Page 37: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/37.jpg)
03/02/03 37
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (2.1) Acoplamiento comunOBJETOS (2.1) Acoplamiento comun
Diagrama de clases
PRODUCTOR
+ preProducir( )- producir( )
CONSUMIDOR
+ preConsumir ( )- consumir( )
COORDINADOR
+ coordinar( )
1
1
1
1
+ dato
![Page 38: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/38.jpg)
03/02/03 38
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (2.2) Acoplamiento comunOBJETOS (2.2) Acoplamiento comun
Interacción entre objetos
dato
preProducir
producir
PRODUCTOR
preConsumir
consumir
CONSUMIDOR
coordinar
COORDINADOR
![Page 39: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/39.jpg)
03/02/03 39
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (2.3) Acoplamiento comunOBJETOS (2.3) Acoplamiento comun
Diagrama de secuencia
![Page 40: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/40.jpg)
03/02/03 40
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (2.4) Acoplamiento comunOBJETOS (2.4) Acoplamiento comun
class CoordinadorGlobal { private ProductorGlobal p; private ConsumidorGlobal c; public String dato; public CoordinadorGlobal() { p = new ProductorGlobal( this ); c = new ConsumidorGlobal( this ); } public void coordinar() throws IOException { p.preProducir(); c.preConsumir(); }} // fin clase CoordinadorGlobal
![Page 41: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/41.jpg)
03/02/03 41
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (2.5) Acoplamiento comunOBJETOS (2.5) Acoplamiento comun
class ProductorGlobal { // Clase encargada de leer información del usuario private CoordinadorGlobal coo;
public ProductorGlobal( CoordinadorGlobal nuevoCoo) { coo = nuevoCoo; }
public void preProducir() throws IOException { // Llama al módulo de creación del dato producir(); } ...
![Page 42: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/42.jpg)
03/02/03 42
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (2.6) Acoplamiento comunOBJETOS (2.6) Acoplamiento comun
... private void producir() throws IOException { // Se pide al usuario que introduzca una cadena System.out.print("Escribe una cadena: "); System.out.flush(); // Se lee el dato introducido BufferedReader keyboardInput = new BufferedReader
(new InputStreamReader(System.in)); coo.dato = keyboardInput.readLine(); }} //fin clase ProductorGlobal
![Page 43: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/43.jpg)
03/02/03 43
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (2.7) Acoplamiento comunOBJETOS (2.7) Acoplamiento comun
class ConsumidorGlobal { //Clase encargada de mostrar la información introducida por pantalla private CoordinadorGlobal coo;
public ConsumidorGlobal(CoordinadorGlobal nuevoCoo) { coo = nuevoCoo; }...
![Page 44: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/44.jpg)
03/02/03 44
APROXIMACIÓN ORIENTADA A APROXIMACIÓN ORIENTADA A OBJETOS (2.8) Acoplamiento comunOBJETOS (2.8) Acoplamiento comun
... public void preConsumir () { // Llama al módulo que muestra el dato consumir(); }
private void consumir() { // Muestra el dato por pantalla System.out.println( "La cadena introducida es: " + coo.dato ); }} // fin clase ConsumidorGlobal
![Page 45: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/45.jpg)
03/02/03 45
Aproximación OO (3.1)Aproximación OO (3.1)Cluster de informaciónCluster de información
Diagrama de clases
1 1
PRODUCTOR
+ preProducir( )- producir( )
CONSUMIDOR
+ preConsumir ( )- consumir( )
COORDINADOR
+ coordinar( )
11
CLUSTER
+ setDato(String dato)+ getDato: String
- dato
1
1 1
1
![Page 46: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/46.jpg)
03/02/03 46
Aproximación OO (3.2)Aproximación OO (3.2)Cluster de informaciónCluster de información
Interacción entre objetos
preProducir
producir
PRODUCTOR
preConsumir
consumir
CONSUMIDOR
coordinar
COORDINADOR
dato
datosetDato
getDato
CLUSTER
![Page 47: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/47.jpg)
03/02/03 47
Aproximación OO (3.3)Aproximación OO (3.3)Cluster de informaciónCluster de información
Diagrama de secuencia
![Page 48: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/48.jpg)
03/02/03 48
Aproximación OO (3.4)Aproximación OO (3.4)Cluster de informaciónCluster de información
class ProductorCluster { // Clase encargada de leer información del usuario private CoordinadorCluster coo;
public ProductorCluster( CoordinadorCluster nuevoCoo) { coo = nuevoCoo; }
public void preProducir() throws IOException { // Llama al módulo de creación del dato producir(); } ...
![Page 49: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/49.jpg)
03/02/03 49
Aproximación OO (3.5)Aproximación OO (3.5)Cluster de informaciónCluster de información
... private void producir() throws IOException { // Se pide al usuario que introduzca una cadena System.out.print("Escribe una cadena: "); System.out.flush(); // Se lee el dato introducido BufferedReader keyboardInput = new BufferedReader
(new InputStreamReader(System.in)); //Guardamos la información en el cluster OOCluster.setDato( keyboardInput.readLine() ); }} // fin clase ProductorCluster
![Page 50: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/50.jpg)
03/02/03 50
Aproximación OO (3.6)Aproximación OO (3.6)Cluster de informaciónCluster de información
class ConsumidorCluster { //Clase encargada de mostrar la información introducida //por pantalla
private CoordinadorCluster coo;
public ConsumidorCluster(CoordinadorCluster nuevoCoo) { coo = nuevoCoo; } ...
![Page 51: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/51.jpg)
03/02/03 51
Aproximación OO (3.7)Aproximación OO (3.7)Cluster de informaciónCluster de información
... public void preConsumir() { // Llama al módulo que muestra el dato consumir(); }
private void consumir() { // Muestra el dato por pantalla System.out.println( "La cadena introducida es: " +
OOCluster.getDato() ); }} // fin clase ConsumidorCluster
![Page 52: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/52.jpg)
03/02/03 52
Aproximación OO (3.8)Aproximación OO (3.8)Cluster de informaciónCluster de información
class OOCluster {
private static String dato;
public static void setDato( String nuevoDato ) { dato = nuevoDato; }
public static String getDato() { return dato; }} // fin clase ProcCluster
![Page 53: 03/02/031 Estrategias de Comunicación para Implementar un Diseño en Java Artur Boronat Moll Laboratorio de Sistemas de Información Facultad de Informática](https://reader033.vdocuments.co/reader033/viewer/2022052618/5528bde2497959977d8f88fb/html5/thumbnails/53.jpg)
03/02/03 53
ConclusionesConclusiones
Java (como otros lenguajes) permite diferentes enfoques de programación (OO y/o procedural)
Es importante evaluar las alternativas de comunicación mediante el diseño (previo a la codificación)