Práctica 1: Programación orientada a objetos (el lenguaje java)

Documentos relacionados
Examen de Programación II (Ingeniería Informática)

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Concurso: Cuánto sabes de JAVA?

Tema: Introducción al IDE de Microsoft Visual C#.

Tutorial Java con acceso a datos e Interfaces gráficas

Programación basada en eventos Event- Based Programming : Conceptos. ELO329: Diseño y Programación Orientados a Objetos

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

El lenguaje de programación Java

Introducción al lenguaje Java

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Examen de Métodos de Programación Ingeniería Informática Primera Parte

Federico Peinado

Programación basada en/dirigida por eventos Event-Based Programming : Conceptos (o Event-driven Programming)

Programación Orientada a Objetos en Java

Indice. Swing: conceptos. Generalidades. Swing & AWT: diferencias. Interfaz Gráfica de Usuario (GUI)

Examen de Prácticas de Programación Ingeniería Informática

Pasos requeridos para establecer el manejo de eventos para un componente de GUI.

18. Interfaces Declaración de una interfaz

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Componentes Swing. Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit)

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

Java desde Consola Utilizando Java sin Path

GUIs en Java (4) Iván Alonso

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Examen Teórico Convocatoria de Junio de 2012

Práctica 4 Concurrencia en Java

Construir una Interfaz Gráfica

MANIPULACIÓN DE DATOS

Tutorial básico del entorno de desarrollo Eclipse.

IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B)

Java en 2 horas. Rodrigo Santamaría

Programación Orientada a Objetos Curso 2014/2015. Práctica 11

Creando archivos *.jar 2008

PROGRAMACIÓN ORIENTADA POR OBJETOS EN JAVA

INTRODUCCION A LA PROGRAMACION EN JAVA

Interfases gráficas. Programación Orientada a Objetos.

Estructuras de control selectivas

Java Avanzado Facultad de Ingeniería. Escuela de computación.

public void mousepressed(mouseevent evento) Se llama cuando se oprime un botón del ratón, mientras el cursor del ratón está sobre un componente.

Agenda. Contenedores y componentes

Pasos a seguir para crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE.

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA

Examen escrito de Programación 1

Práctica No. 5. Estructuras con Memoria Dinámica

1. El entorno de desarrollo Eclipse

Uso de Java Swing. Noviembre de 2013

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

Cuestionario Empresas Gestoras de Viviendas Turísticas

Introducción a Swing. Taller de Programación 2016

PROGRAMACIÓN EN JAVA

Guía práctica de estudio 01: Entorno y lenguaje de programación

INSTRUCCIÓN PEDIR EN JAVA CON JTEXTAREA Y MOSTRAR CON JLABEL. SETBOUNDS Y SETTEXT. EJEMPLOS. (CU00929C)

Documentación en Java: Javadoc

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Una Interfaz Grafo-Matriz

Manual de Usuario UCARIBE VIRTUAL

Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Algoritmia y Programación

Tutorial Básico Cmake en Linux

1. El entorno de desarrollo Eclipse

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

Manejo de eventos AWT

Modelo de Objetos Distribuidos

Funciones básicas del depurador

Práctica 2: Java Remote Method Invocation (RMI)

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

PRÁCTICA 1 MANUAL BÁSICO DE ECLIPSE

Arquitecturas cliente/servidor

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Java Avanzado Facultad de Ingeniería. Escuela de computación.

JAVA 1. Introducción

Introducción al lenguaje de programación java

PROGRAMA DE CURSO. Escuela de Ingeniería de Sistemas y Computación Universidad del Valle Santiago de Cali, Colombia. Febrero 2007

Práctica 1. Entorno de Trabajo e Introducción a Java. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

Intefaces gráficas. Eventos. Jose Jesus García Rueda

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Tema: Introducción a Java y Netbeans

Novedades de GM EPC. Navegación gráfica. Navegación común para cada vehículo

Programación Java Curso C GUI

Clases y herencia. FJP Unidad 8. Diseño de clases

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria.

EJERCICIO GUIADO. JAVA: DISEÑO DE FORMULARIOS DESDE CÓDIGO

Práctica 4: Java Remote Method Invocation (RMI)

Transcripción:

Práctica 1: Programación orientada a objetos (el lenguaje java) Asignatura:Ingeniería del Software-II José Merseguer Dpto. de Universidad de Zaragoza jmerse@unizar.es 7 de octubre de 2010 1. Objetivos En esta práctica el alumno se familiarizará con el uso del lenguaje de programación java y el entorno de desarrollo JDK 1.6. Para ello en la práctica se desarrollará: Una aplicación de consola, cuyo objetivo es aprender cómo java implementa los conceptos más importantes de la orientación a objetos. Una aplicación con interfaz gráfica de usuario cuyo objetivo es aprender los fundamentos básicos del desarrollo de aplicaciones java con las clases del paquete Swing. 2. Entorno de trabajo La práctica se realizará en el entorno de trabajo local (CentOS del Laboratorio L.0.04) dónde se creará un directorio de nombre /insii/practica1. Ten en cuenta que tu HOME es tu espacio de trabajo en hendrix-ssh. Para el manejo del entorno JDK 1.6 sun dispone de una completa documentación [1] que puede ser consultada a través de la red. Para crear los ficheros fuente de las aplicaciones java (nomclase.java) puede utilizarse cualquiera de los editores instalados: vi, emacs, nedit, etc. Las siguientes secciones describen las herramientas, variables, etc. a tener en cuenta para desarrollar en JDK 1.6. 2.1. La API de java Java proporciona un extenso conjunto de clases e interfaces conocido como Application Program Interface (API). Estas clases e interfaces resultan imprescindibles a la hora de programar en java. Será por tanto necesario tener abierto un navegador con la página web [2] que documenta la API de java (utilizar la versión en local). 1

3 APLICACIÓN DE CONSOLA A modo de ejemplo buscar en dicha página el paquetejavax.swing y en él la clase JDialog que será util para crear diálogos tanto modales como no modales. Dedicar algún minuto a familiarizaros con la documentación que proporciona sobre sus atributos (Field Detail), constructores (Constructor Detail) y métodos (Method Detail). 2.2. Las herramientas de JDK JDK tiene herramientas y utilidades que te resultarán necesarias para compilar y depurar tus fuentes java, ejecutar las aplicaciones, crear documentación, etc. En esta primera práctica básicamente usarás: javac, compila los fuentes java (.java) en bytecodes (.class). En la página web [3] tienes una documentación sencilla y precisa de esta herramienta. java, el intérprete que ejecuta aplicaciones java. En la página web [4] tienes una documentación sencilla y precisa de esta herramienta. 2.3. Demos Puede ser interesante que antes de escribir tu primera aplicación java intentes ejecutar y comprender el código de alguna de las aplicaciones de demostración que puedes encontrar en el directorio /usr/local/java/demo/. 2.4. esumen del lenguaje java Además de la introducción a java explicada en las clases de teoría, la página web [1] contiene diversos tutoriales. 3. Aplicación de consola El conocido problema de las ocho reinas servirá de ejemplo sencillo para realizar la primera aplicación en java que permita tomar contacto con los elementos básicos del lenguaje, el estilo de la programación orientada a objetos y el entorno de desarrollo. El problema consiste en situar ocho reinas en un tablero de ajedrez de modo que no se ataquen entre sí, la Figura 1 muestra una posible solución. La solución orientada a objetos [6] consistirá en crear las reinas y dotarlas del com- Figura 1: Una solución. portamiento para que ellas mismas descubran la solución. Cada reina puede ser asignada a una columna, quedando el problema reducido a que cada reina encuentre su fila apropiada. Para ello una reina sólo necesita enviar mensajes a su 2

3 APLICACIÓN DE CONSOLA vecina de un lado (p.e. el izquierdo) consultando si en la posición en la que se encuentra puede ser atacada (función puedeatacar(f,c)). Una solución aceptable para una columna n será una configuración de las columnas 1 a n en la que ninguna reina puede atacar a otra reina en tales columnas. La solución al problema en su conjunto consiste en pedir a la reina del extremo derecho que encuentre una solución aceptable (función primera()). Cuando se pide a una reina en la columna n que produzca una solución aceptable, deberá pedir a su vecina que produzca una solución aceptable para la columna n-1. La primera columna es una caso especial, mientras que cualquier otra reina debe consultar si puede ser atacada (función pruebaoavanza()) en la posición en la que se encuentra, si es así debe avanzar a una nueva posición y consultar de nuevo si puede ser atacada (función siguiente()). Si la reina ha llegado a la última fila y no se encuentra en una posición segura pedirá a su vecina que explore la posición siguiente. Por útimo se imprime la solución (procedimiento imprimir). El perfil de las funciones necesarias para resolver el problema aparece a continuación, así como el seudocódigo de pruebaoavanza() e imprimir(). función puedeatacar(f,c): booleana; función primera():booleana; función siguiente():booleana; función pruebaoavanza(): booleana; si vecina.puedeatacar(fila,columna) devuelve misma.siguiente() sino devuelve verdadero fin procedimiento imprimir vecina.imprimir; escribe fila, columna fin Utiliza el siguiente código como base para implementar el programa einasapp.java, que constará de las dos clases que aparecen, la primera de ellas ya está implementada. //declarar paquetes necesarios import... //clase para el programa principal class einasapp { public static void main (String args[]) throws IOException{ //Crear las reinas eina ultimaeina = null;//la primera reina no tiene vecina for(int i=1; i<=8; ++i) ultimaeina = new eina(i, ultimaeina); //Generar sol. if( ultimaeina.primera() ) ultimaeina.imprimir(); //clase que modela una reina 3

4 APLICACIÓN GUI class eina { //atributos //Constructor public eina(int c, eina vec) {... //resto de metodos (puedeatacar,primera,siguiente,pruebaoavanza,imprimir Modifica el programa para que: 1. Calcule todas las soluciones posibles (no sólo la primera). 2. El usuario decida para cada columna si la reina que la ocupa se debe comportar como una reina o como una torre. 4. Aplicación GUI Se desarrollará un sencillo prototipo de aplicación con interfaz gráfica y la implementación de dos cuadros de diálogo. Todo ello basado en los componentes Swing de java. Los objetivos son aprender a: crear aplicaciones basadas en menús, manejar los eventos que se generan, gestionar diálogos, manejar componentes gráficos más avanzados (tabla y árbol). Comenzar creando un front-end como el que aparece en la Figura 2. Este se compone de los siguientes items de menú: Fichero (Nuevo, Abrir,Salvar,Salir), MisDialogos (Tabla,Arbol). Además aparecerá un campo de texto dónde se escribirá el nombre de la opción de menú que se seleccione cada vez. Utilizar como guía el esqueleto que aparece a continuación. Para obtener una ayuda detallada consulta en la API la clase JFrame, allí encontrarás la sección How to make frames. //declarar paquetes necesarios import... //clase que crea el menu public class Aplicacion extends JFrame{ Container framecontainer; //Crear la barra de menu (JMenuBar). //Crear las opciones del menu principal (JMenu). //Crear los items de menu(jmenuitem) y el separador(jseparator). //Crear el campo de texto (JTextField) public Aplicacion(){ super(title); creargui(); crearmanejadoresevts(); //fijar tama~no de la ventana, modo de operacion y mostrarla. void creargui(){ crearmenu(); situarcomponentes(); 4

4 APLICACIÓN GUI void crearmenu(){ //A~nadir los items de menu a su opcion principal. //A~nadir las opciones principales a la barra de menu. //Configurar la barra de menu (setjmenubar(..)). void situarcomponentes(){ framecontainer = getcontentpane(); framecontainer.setlayout(null); //Dar tama~no al campo de texto y unirlo al framecontainer. void crearmanejadoresevts(){ addwindowlistener(new ManejadorVentana());//gestiona evts. vent. ppal. //A~nadirManejadores a los items de menu. public static void main(string[] args) { Aplicacion app = new Aplicacion(); public class ManejadorVentana extends WindowAdapter{ //implementar el metodo correspondiente //para que la aplicacion termine correctamente. public class ManejadorItemMenu implements ActionListener{ //implementar el metodo correspondiente para que Fichero/Salir //termine la Aplicacion y el resto de opciones escriban //escriban en el campo de texto su nombre. Una vez realizado el menú se debe crear un diálogo modal que aparecerá cuando se seleccione la opción de menú MisDialogos/Tabla. Este diálogo contendrá una tabla con scroll. Las columnas mostrarán información de Clientes: Nombre, Apellido, Teléfono, Edad. Cada fila de la tabla se corresponderá con la información de un cliente, que será tomada de un fichero de texto en el que cada línea es un cliente con los diferentes campos separados por espacios en blanco. La tabla podrá ser ordenada por cualquier campo. Se permitirá añadir y borrar clientes de la tabla así como actualizar el fichero de texto con la información de la tabla. Para obtener detalles de cómo manipular tablas leer en la clase JTable, How to create a table. Para manipular el fichero utilizar las clases Fileeader, Bufferedeader, StringTokenizer. Por último, la opción MisDialogos/Arbol mostrará un diálogo modal que contendrá un árbol (objeto JTree) con la estructura jerárquica de los ficheros y directorios en tu cuenta de hendrix. Se permitirá cambiar nombre y permisos de los ficheros y directorios así como crear nuevos y borrar los existentes. Para obtener detalles de cómo manipular árboles leer en la clase JTree, How to use trees. Por simplicidad, este diálogo no debe tener ninguna relación con las opciones del menú principal (Fichero Nuevo, Fichero Abrir, etc.). No utilizar la clase JFileChooser. 5

EFEENCIAS Figura 2: Menú de la aplicación. eferencias [1] Documentación de java: http://download.oracle.com/javase/6/docs/ En DIIS: http://docdiis.unizar.es [2] API de java: http://download.oracle.com/javase/6/docs/api/ En DIIS: http://docdiis.unizar.es [3] javac (tool): http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/javac.html. En DIIS: http://docdiis.unizar.es. [4] java (tool): http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/java.html. En DIIS: http://docdiis.unizar.es. [5] J. Jaworski. Java 1.2 al descubierto. Prentice Hall, 1998. [6] T. Budd. Programación orientada a objetos. Addison-Wesley, 1994. 6