Introducción a la Programación Orientada a Objetos

Introducción a la Programación Orientada a Objetos CLASES ASOCIADAS Y ENCAPSULAMIENTO INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI Ecapsul

2 downloads 108 Views 684KB Size

Recommend Stories


Persistencia Orientada a objetos
Persistencia Orientada a objetos Prof. Mg. Javier Bazzocco 2011 1 Bazzocco, Javier Persistencia orientada a objetos. - 1a ed. - La Plata : Universi

POO - Programación Orientada a Objetos
Última modificación: 08-03-2016 230086 - POO - Programación Orientada a Objetos Unidad responsable: 230 - ETSETB - Escuela Técnica Superior de Ingen

Programación Orientada a Objetos. Sesión 4: Herencia
Programación Orientada a Objetos Sesión 4: Herencia Contextualización Cuando hablamos de informática, podemos contemplar varios elementos que se uti

Tema 11: Programación orientada a objetos
Tema 11: Programación orientada a objetos Índice 1 La Programación Orientada a Objetos...............................................................

Conceptos de Programación Orientada a Objetos
Conceptos de Programación Orientada a Objetos ¿Qué es un objeto en el mundo real? Un objeto es un elemento real o abstracto, que tiene un estado, un c

Programación orientada a objetos en Visual Basic.NET
Programación orientada a objetos en Visual Basic .NET Índice Introducción 1 Lección: Entender el concepto de clase 2 Lección: Trabajar con clases

4.3. Estructuras de programación orientada a objetos Tablas
GAmuza Hybrid live coding / 4. L e n g u a j e modular application 4.3. Estructuras de programación orientada a objetos La programación orientada

LABORATORIO #7 PARTE I INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN LABORATORIO #7 – PARTE I INTRODUCCIÓN A LA PRO

5 C A P I T U L O. Programacion orientada a objetos con Java. 5.1 Introduccion a Java Caracteristicas
5 CAPITULO Programacion orientada a objetos con Java En este capitulo haremos una breve introduccion al lenguaje de Java1, mostrando la relacion entr

Story Transcript

Introducción a la Programación Orientada a Objetos

CLASES ASOCIADAS Y ENCAPSULAMIENTO

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI Ecapsulamiento, clases asociadas Dr. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2015

• En el diseño de una aplicación, la solución se modula de modo tal que cada clase pueda implementarse sin depender de las demás. • En el desarrollo de una aplicación en la cual la entrada y 01100 salida se realiza a través de una GUI, la clase que 10011 implementa la interface gráfica de usuario usa a las 1 0 1 1 0 01110 clases que modelan el problema, sin conocer detalles de 01100 la representación. 10011

01100 10011 10110 01110 01100 10011 10110 01110 1001 1 11 0 0 1

10110

• Análogamente, las clases que modelan el problema se0 1 1 1 0 diseñan e implementan sin saber si la entrada y salida1 0 0 1 1 11 va a hacerse por consola o mediante una GUI. 0 1

Introducción a la Programación Orientada a Objetos IPOO - 2015

CASO DE ESTUDIO: TRADUCTOR ESPAÑOL A INGLÉS

10011 10110 01110 1001 1 11 0 0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015

• •

Diccionario T [] Par Diccionario() insertar(p:Par) traducirEngSpa(pan: String): String traducirEspIng(pal: String): String

GUIEspIng panelPalabras: JPanel cartelEntrada: JLabel cajaPalabra: JTextField diccionario: Diccionario

0 1 1 0 0 10011 GUIEspIng(tit: String, dic: Diccionario) 1 0 1 1 0 01110 01100 10011 La clase GUIEspIng es cliente de la clase Diccionario. 1 0 1 1 0 110 La implementación de estos servicios queda encapsulada01 10en 01 la clase proveedora y es transparente para la clase cliente.1 1 1 0 0 1 4

public GUIEspIng (String tit, Diccionario dicc) {

class GUIEspIng extends JFrame { //Atributos gráficos private JPanel panelPalabras; private JLabel cartelEntrada; private JTextField cajaPalabra; //Atributos de la aplicación private Diccionario diccionario;

Profesor Luciano H. Tamargo

Par pal1, pal2: String Par(p1, p2: String) obtenerPal1(): String obtenerPal2(): String

3

CASO DE ESTUDIO: TRADUCTOR ESPAÑOL A INGLÉS

Introducción a la Programación Orientada a Objetos IPOO - 2015

2

CASO DE ESTUDIO: TRADUCTOR ESPAÑOL A INGLÉS

• Implemente una GUI que permita traducir una palabra de Español a Inglés. • El usuario ingresa la palabra en la caja de texto y al oprimir intro la aplicación busca la traducción. 01100 • Si existe la traducción se muestra en un panel de 10011 diálogo. 10110 • En caso contrario se muestra un mensaje, también en 0 1 1 1 0 01100 un panel de diálogo.

• La clase que implementa la GUI de instancia que es instancia de Diccionario.

0

01100 10011 10110 01110 01100 encapsula un atributo11 00 01 11 10 la clase asociada 01110 1001 1 11 0 0 1 5

//Establece la apariencia del frame super(tit); setSize(400, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); diccionario = dicc; //Crea los objetos gráficos e invoca al método interno panelPalabras = new JPanel(); cartelEntrada = new JLabel(); cajaPalabra = new JTextField ("",15); armaGUI(); } • La GUI recibe como parámetro un objeto de clase Diccionario y asigna la referencia al atributo de instancia, que puede ser accedido desde cualquier servicio.

1

Introducción a la Programación Orientada a Objetos

CASO DE ESTUDIO: TRADUCTOR ESPAÑOL A INGLÉS

CASO DE ESTUDIO: TRADUCTOR ESPAÑOL A INGLÉS

private void armaGUI(){ armarPaneles();

/*Establece los atributos de la caja, crea y registra al oyente*/ cajaPalabra.setSize(120,15); cajaPalabra.setPreferredSize(new java.awt.Dimension(120,15));0 1 1 0 0 cajaPalabra.setBorder(new LineBorder(new 1 0 0 1 1 10110 Color(100,100,100), 1, false)); 01110 OyentePalabra oyente = new OyentePalabra(); 01100 10011 cajaPalabra.addActionListener(oyente);

//Establece los atributos de las etiquetas cartelEntrada.setText("Ingrese una palabra"); 01100 10011 cartelEntrada.setSize(120,15); 10110 cartelEntrada.setPreferredSize(new 01110 java.awt.Dimension(120,15)); 01100 cartelEntrada.setBorder(new LineBorder(new1 0 0 1 1 10110 Color(0,0,0), 1, false)); 0 1 1 1 0 … 1001

10110 01110 1001 1 11 0 0 1

1 11 0 0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015

CASO DE ESTUDIO: TRADUCTOR ESPAÑOL A INGLÉS panelPalabras.add(cartelEntrada,BorderLayout.NORTH); panelPalabras.add(cajaPalabra,BorderLayout.CENTER); getContentPane().setLayout(new BorderLayout()); getContentPane().add(panelPalabras,BorderLayout.NORTH); 01100 10011 10110 01110 01100 10011 10110 01110 1001 1 11 0 0 1 9

CASO DE ESTUDIO: TRADUCTOR ESPAÑOL A INGLÉS private class OyentePalabra implements ActionListener{ public void actionPerformed(ActionEvent event){ String palabra = cajaPalabra.getText(); JOptionPane dialogo = new JOptionPane(); String traducida = diccionario.traducirEspIng(palabra); if (traducida == null) 01100 10011 dialogo.showMessageDialog(null, 10110 "La palabra no figura en el diccionario","", 01110 dialogo.INFORMATION_MESSAGE ); 01100 else{ 10011 cajaPalabra.setText(""); 10110 dialogo.showMessageDialog(null, 01110 "La traduccion de "+palabra+ " es "+ traducida,"", 1001 dialogo.INFORMATION_MESSAGE ); 1 11 } 0 0 1 }

private void armarPaneles(){ //Establece los atributos de los paneles panelPalabras.setLayout(new BorderLayout()); panelPalabras.setSize(400,90); 01100 10011 panelPalabras.setPreferredSize 10110 (new java.awt.Dimension(400,90)); 01110 01100 10011 10110 01110 1001 1 11 0 0 1

}

Introducción a la Programación Orientada a Objetos IPOO - 2015

10

CASO DE ESTUDIO: TRADUCTOR • Implemente una clase GUI_Traductor que permita mostrar la traducción de una palabra ingresada en inglés a español o una palabra ingresada en español a inglés. • La clase GUI_Traductor está asociada a Diccionario. 01100 • La clase Diccionario encapsula a una colección de pares 10011 de palabras, la primera palabra del par está en inglés y1 0 1 1 0 01110 la segunda es su traducción al español. 01100 • Claramente un objeto de clase Diccionario puede 10011 10110 utilizarse para traducir de inglés a español o de español 01110 a inglés. 1001 1 11 0 0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015

Profesor Luciano H. Tamargo

8

CASO DE ESTUDIO: TRADUCTOR ESPAÑOL A INGLÉS

//Inserta los objetos gráficos en los paneles

Introducción a la Programación Orientada a Objetos IPOO - 2015

Introducción a la Programación Orientada a Objetos IPOO - 2015

7

12

2

Introducción a la Programación Orientada a Objetos

CASO DE ESTUDIO: TRADUCTOR Par pal1, pal2: String Par(p1, p2: String) obtenerPal1(): String obtenerPal2(): String

CASO DE ESTUDIO: TRADUCTOR

GUI_Traductor panelPalabras, panelControl:JPanel botonES,botonEI:JButton cartelEntrada :JLabel cajaPalabra: JTextField 01100 diccionario : Diccionario 10011 palabra:String 1 0 1 1 0 01110 GUIEspIng(tit: String, dic: Diccionario) 0 1 1 0 0 10011 10110 01110 La clase GUI_Traductor es cliente de la clase Diccionario. 1001 1 La implementación de estos servicios queda encapsulada1en1 la clase proveedora y es transparente para la clase cliente. 01 0

• •

Diccionario T [] Par Diccionario() insertar(p:Par) traducirEngSpa(pan: String): String traducirEspIng(pal: String): String

13

• • • •

01100 10011 10110 El usuario completa la caja de texto y al oprimir Intro se 01110 habilitan los dos botones. 01100 10011 Cada botón está asociado a un oyente que envía un mensaje 10110 al diccionario para buscar la palabra. Si existe la traducción se muestra en un panel de diálogo. 0 1 1 1 0 1001 En caso contrario se muestra un mensaje, también en un 1 1 1 panel de diálogo. 0 0 1

Introducción a la Programación Orientada a Objetos IPOO - 2015

CASO DE ESTUDIO: TRADUCTOR

CASO DE ESTUDIO: TRADUCTOR

//Atributos gráficos private JPanel panelPalabras, panelControl; private JButton botonES, botonEI; private JLabel cartelEntrada; private JTextField cajaPalabra;

//Deshabilita los botones estadoBotones(false);

//Atributos de la aplicación private Diccionario diccionario; private String palabra;

OyentePalabra oyente = new OyentePalabra(); cajaPalabra.addActionListener(oyente);

public GUITraductor (Diccionario dicc) { diccionario = dicc; … }

01100 10011 10110 01110 01100 10011 10110 01110 1001 1 11 0 0 1

01100 10011 10110 01110 01100 10011 10110 OyenteBotonES oyenteES = new OyenteBotonES(); 01110 botonES.addActionListener(oyenteES); 1001 1 11 0 0 OyenteBotonEI oyenteEI = new OyenteBotonEI(); 1 botonEI.addActionListener(oyenteEI); 16

CASO DE ESTUDIO: TRADUCTOR

private void estadoBotones(boolean estado){ //Habilita o deshabilita botones botonEI.setEnabled(estado); botonES.setEnabled(estado); 01100 } 10011 private class OyentePalabra implements 10110 ActionListener { 01110 01100 public void actionPerformed(ActionEvent event){ 10011 palabra = (cajaPalabra.getText()); 10110 estadoBotones(true); 01110 1001 } 1 11 } 0 0 1 17

Profesor Luciano H. Tamargo

/*Crea los oyentes y los registra a los objetos fuente de evento*/

15

CASO DE ESTUDIO: TRADUCTOR

14

private class OyenteBotonES implements ActionListener { public void actionPerformed(ActionEvent e){ JOptionPane dialogo = new JOptionPane(); String tra = diccionario.traducirEngSpa(palabra); if (tra == null) dialogo.showMessageDialog(null, 01100 "La palabra no figura en el diccionario","", 10011 dialogo.INFORMATION_MESSAGE ); 10110 else{ 01110 cajaPalabra.setText(""); 01100 10011 estadoBotones(false); 10110 dialogo.showMessageDialog(null, 01110 "La traduccion de " + palabra + " es " + tra, "", 1001 dialogo.INFORMATION_MESSAGE ); 1 11 } 0 0 } 1 } 18

3

Introducción a la Programación Orientada a Objetos

CASO DE ESTUDIO: TRADUCTOR

CASO DE ESTUDIO: TRADUCTOR

private class OyenteBotonEI implements ActionListener { public void actionPerformed(ActionEvent e){ JOptionPane dialogo = new JOptionPane(); String tra = diccionario.traducirIngEsp(palabra); if (tra == null) dialogo.showMessageDialog(null, 01100 "La palabra no figura en el diccionario","", 10011 dialogo.INFORMATION_MESSAGE ); 10110 else{ 01110 cajaPalabra.setText(""); 01100 10011 estadoBotones(false); 10110 dialogo.showMessageDialog(null, 01110 "La traduccion de " + palabra + " es " + tra, "", 1001 dialogo.INFORMATION_MESSAGE ); 1 11 } 0 0 } 1 } 19

CASO DE ESTUDIO: TRADUCTOR

0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015

0 20

CASO DE ESTUDIO: TRADUCTOR

• Cuando el usuario realiza una acción sobre botonES se envía el mensaje traducirEngSpa(palabra) al diccionario. • Análogamente cuando el usuario realiza una acción en 01100 botonEI se envía el mensaje 10011 traducirEngSpa(palabra) al diccionario. 10110 • Otra característica que aparece en esta GUI es que los0 1 1 1 0 01100 botones se habilitan y deshabilitan. 10011 10110 01110 1001 1 11 0 0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015

• El objeto ligado a la variable palabra se inicializa en el oyente de la caja y se usa para buscar la traducción. • La implementación de cada clase oyente requiere acceder a un diccionario. 01100 • El diccionario es una estructura de datos que mantiene1 0 0 1 1 pares de palabras, la primera palabra del par está en 1 0 1 1 0 01110 inglés y la segunda en español. 01100 • La estructura está encapsulada en una clase 10011 10110 Diccionario que brinda dos servicios de búsqueda, 01110 buscar en la primera palabra de cada par o en la 1001 segunda. 1 11

21

OBJETOS Y EVENTOS

• La clase GUITraductor usa a la clase Diccionario como una caja negra, conoce únicamente la interface y el contrato. • Los datos pueden estar modelados por un arreglo o un 01100 objeto de clase Vector, las búsquedas pueden implicar 10011 un recorrido secuencial o la estructura puede estar 10110 ordenada y se aplica entonces búsqueda binaria. 01110 01100 • Todas esas cuestiones quedan escondidas para la 10011 interfaz. 10110 01110 • De manera análoga, es posible cambiar el diseño y la 1 0 0 1 implementación de la GUI, sin afectar a la clase 1 11 0 0 Diccionario. 1 Introducción a la Programación Orientada a Objetos IPOO - 2015

22

OBJETOS Y EVENTOS

• Algunas componentes de una GUI son reactivas, pueden percibir las acciones del usuario y reaccionar en respuesta a ellas. • Cuando un usuario realiza una acción sobre una 01100 componente reactiva se genera un evento. 10011 • Un evento es una señal de que algo ha ocurrido. 10110 01110 • En esta materia consideraremos únicamente eventos 01100 generados por acciones del usuario al interactuar con1la 0011 10110 GUI.

• Los objetos fuente del evento, están asociados a una componente de la interfaz, tienen una representación gráfica y son capaces de percibir y reaccionar ante un evento externo provocado por una acción del usuario y 01100 disparar eventos de software. 10011 • Los objetos evento son disparados implícitamente por1 0 1 1 0 un objeto fuente del evento. 01110 01100 • Los objetos oyentes (listeners) se ejecutan para 10011 manejar un evento. La clase a la que pertenece un 10110 01110 objeto oyente brinda métodos para manejar eventos, es 1001 decir, especifica el curso de acción a seguir en 1 11 respuesta a diferentes tipos de eventos. 0 0

Introducción a la Programación Orientada a Objetos IPOO - 2015

Introducción a la Programación Orientada a Objetos IPOO - 2015

01110 1001 1 11 0 0 1

Profesor Luciano H. Tamargo

23

1 24

4

Introducción a la Programación Orientada a Objetos

El objeto fuente de evento percibe el evento e externo y dispara uno o más eventos internos.

Cada evento interno está asociado a un objeto evento creado implícitamente.

El objeto fuente de evento botonEI crea un objeto evento de clase ActionEvent

Evento Componente reactiva

El usuario realiza una acción que provoca un evento externo sobre una componente reactiva ligada a un objeto fuente de evento.

Profesor Luciano H. Tamargo

Evento Componente reactiva

El objeto oyente registrado al objeto fuente de evento, recibe un mensaje con el objeto evento como parámetro.

El usuario hace clik sobre la componente reactiva asociado al objeto fuente de evento botonEI

El objeto oyente oyenteEI registrado al objeto fuente de evento botonEI, recibe un mensaje actionPerformed con el objeto evento e como parámetro.

5

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.