Lenguajes de Programación Curso Práctica 3. Crear y utilizar paquetes. Crear una jerarquía de clases.

Documentos relacionados
Objetivos. Índice. 1. Paquetes

Transparencias de Java. Tema 3: Paquetes. Uploaded by Ingteleco

Guía del Entorno de Desarrollo de Java. Eclipse

Prácticas de Lenguajes de Programación (Java) Ingeniería Informática Curso Práctica 0 Universitat de València

Bloque II. Herramientas

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos

Sesión 2. TEMA 4. OBJETOS Y CLASES

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización

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

Curso de Java POO: Programación orientada a objetos

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Estructuras de control selectivas

El entorno de desarrollo eclipse 3.0.1

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Packages, Classpath y

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Apuntes de Programación y estructuras de datos. Control de datos

Examen de Fundamentos de Computadores y Lenguajes

12. Tipos de atributos

Curso de Java POO: Programación orientada a objetos

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Ingeniería del Software de Gestión

Introducción a la herramienta de desarrollo Eclipse

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.

Herramientas Visuales de Programación

POO: Clases y objetos

Destrucción de objetos (I)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Bloque III. Herramientas

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

roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. Nociones básicas de programación

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

Integración de Toolchain sobre IDE gráfico basado en Eclipse

UNIDAD 4. MODIFICAR TABLAS DE DATOS

MODIFICAR TABLA DE DATOS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

MODIFICAR TABLA DE DATOS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Seminario 2 Eclipse PROGRAMACIÓN 3. Septiembre Departamento de Lenguajes y Sistemas Informáticos Universidad de Alicante.

SOFTWARE Microsoft Visual Studio 2005.NET FrameWork 2.0

UNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA

Programación orientada a objetos

Sesión 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS

Formato para prácticas de laboratorio

ENTORNO DE TRABAJO E INTRODUCCIÓN A JAVA - ANEXO Versión: 1.0.1

18. Interfaces Declaración de una interfaz

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

1

INTRODUCCION A LA PROGRAMACION EN JAVA

Programación orientada a objetos: Lenguajes, Metodologías y Herramientas

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ

Unidad 2. Elementos Intermedios del Lenguaje

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

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

MODELO 190. Seleccionamos Declaración de I.R.P.F.: información para modelos 111 y 190 y nos aparece la siguiente pantalla:

Lenguajes de Programación Curso Práctica 7.

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Manual de instalación de certificados digitales en soporte software

Programación orientada a objetos I

Desarrollo de una Servlet básica con las herramientas de JBuilder 9

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

MODELO 347. Si elegimos el modelo 347, la pantalla que se nos muestra es:

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

TEMA 5. Agenda. Herencia

Fundamentos de la POO 1

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

Conceptos Básicos. Programación Orientada a Objetos 2

Herencia y Clases Abstractas

Tema 6: Herencia. (El lenguaje C++)

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

Aplicaciones de Escritorio

Manual de Importación/Exportación. Proyectos Mule

Sebastián García Galán

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

Tema 3b: Estructura General de un programa en Java

Java en 2 horas. Rodrigo Santamaría

Técnicas Avanzadas de Inteligencia Artificial Dpt. Lenguajes y Sistemas Informáticos. FISS. UPV-EHU

PROYECTOS JAVA. CLÁUSULAS PACKAGE E IMPORT. JERARQUÍA Y VISIBILIDAD DE CLASES. ORGANIZACIÓN EN BLUEJ. EJEMPLOS. (CU00674B)

Clases Abstractas e Interfaces

Las clases de las bibliotecas estándar del lenguaje están organizadas en jerarquías de paquetes.

Crear una extensión desde 0 en gvsig. Jorge Piera

PRÁCTICA 2: Tutorial de creación de módulos

Herencia. Implementación en Java

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

Derechos de Acceso: COMPOSICION

UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez

PRESENTACIÓN DE LA ASIGNATURA E INTRODUCCIÓN A LA PROGRAMACIÓN VISUAL

SEMESTRE: 1 SEMESTRE GRADO: 1 GRADO GRUPO: E1

TIKA. Manual de usuario. Manual del Gestor de solicitudes e incidencias por Tickets de la Universidad Pablo de Olavide

Transcripción:

Objetivos Crear y utilizar paquetes. Crear una jerarquía de clases. Índice 1. Paquetes 1 1.1. Nombres de los paquetes................................... 2 1.2. Declaración de un paquete.................................. 2 1.3. La variable de entorno CLASSPATH............................ 2 1.4. Visibilidad de los elementos fuera del paquete........................ 3 1.5. Paquetes y Eclipse...................................... 4 2. Tareas 7 1. Paquetes Un paquete es una biblioteca de tipos (clases e interfaces). Veamos cuales pueden ser las diferentes utilidades que puede tener agrupar clases en un paquete: Evitar conflictos de nombres Cuando se diseña un programa en Java (o en general con un lenguaje orientado a objetos) se modela el dominio del problema identificando y definiendo una serie de tipos (tipo se usa en este contexto como sinónimo de clase) a los que asignamos un nombre. Cada nombre de tipo debe ser único ya que es lo que lo distingue de otros tipos. Para evitar el problema de conflicto de nombres de tipo se utilizan paquetes. Cada tipo tiene un nombre simple, y cada paquete tiene un nombre de paquete. El nombre del paquete seguido de un punto y el nombre del tipo constituye lo que se conoce como nombre completo. Por tanto los paquetes se pueden ver como una forma de evitar los conflictos de nombres en los programas escritos en Java. En lugar de intentar que el nombre simple de cada tipo sea único, nos tenemos que preocupar de que el nombre completo (incluyendo el nombre del paquete) sea único. Organización Otro modo de ver los paquetes es como una herramienta que ayuda a organizar los tipos que se crean. Con los paquetes organizamos los programas en grupos de tipos relacionados entre si, y organizamos los grupos jerárquicamente. Biblioteca Una tercera posibilidad de contemplar los paquetes es simplemente como una biblioteca de tipos. Un programa que escribimos puede hacer uso de bibliotecas desarrolladas por terceros y puestas a nuestra disposición como paquetes. Implementación La ultima interpretación que se puede hacer de un paquete es observarlo como una herramienta que puede ayudar a separar la interfaz de la implementación. Se pueden dar distintos privilegios Lenguajes de Programación Página: 1

a los tipos dentro del paquete y se pueden definir tipos que solo sean accesibles por otros tipos que estén en el mismo paquete y hacer públicos solo aquellos que nos interesen. 1.1. Nombres de los paquetes Los paquetes que importamos en nuestros programas pueden venir de diferentes fuentes, por lo tanto es importante que a la hora de asignar un nombre a un paquete este sea diferente a los nombres de los paquetes desarrollados por otros. Java recomienda poner al paquete un nombre que sea el nombre de dominio de la organización al revés. Por ejemplo si la organización es uv.es la recomendación es que nuestros paquetes comiencen del siguiente modo: es.uv 1.2. Declaración de un paquete Una clase es colocada en un paquete introduciendo una declaración de paquete al principio del fichero fuente. Para ello utilizaremos la palabra reservada package seguida por el nombre del paquete y un punto y coma. Por ejemplo la siguiente clase pertenece al paquete es.uv.lp package e s. uv. l p ; / Clase Alumno @version 1. 0 / public class Alumno{ private S t r i n g nombre ; private S t r i n g NIP ; private f l o a t nota ; // Constructor ( es ) / Metodo asignarnota s i r v e para a s i g n a r una nota @param n nota / public void asignarnota ( f l o a t n ) { nota = n ;... 1.3. La variable de entorno CLASSPATH La variable de entorno CLASSPATH define las rutas donde el compilador busca los paquetes. Cuando dentro de un determinado directorio se colocan una serie de clases y no se las declara como pertenecientes a ningún paquete, las clases son encontradas por el compilador y la máquina virtual (ejecutados ambos desde el directorio) ya que normalmente el directorio actual (.) está incluido en la variable de entorno CLASSPATH. Sin embargo, al importar paquetes que no se encuentren en el directorio de trabajo hay que indicar tanto al compilador como a la MVJ la ruta donde debe buscar las clases. Por poner un ejemplo, vamos a suponer que colocamos el paquete bajo el directorio c:\tmp\prac2\paquete. La clase que se ha puesto como ejemplo en el apartado anterior deberá estar colocada en una ruta: c:\tmp\prac2\paquete\es\uv\lp\alumno.class Queremos definir una clase Clase que utiliza la clase Alumno. Supongamos que esta clase se coloca en el directorio c:\tmp\prac2\prog. import e s. uv. l p. Alumno ; public class Clase { private Alumno [ ] a l s ; Lenguajes de Programación Página: 2

private Alumno [ ] d e l e g a d o s ; private S t r i n g aula ; public void matricularalumno ( Alumno a l ) { // Codigo para añadir e l alumno a l array... Si estamos en el directorio c:\tmp\prac2\prog la variable de entorno CLASSPATH debe contener la ruta c:\tmp\prac2\paquete ya que el compilador toma todas la rutas de esta variable como base para buscar los paquetes, formando en este caso concreto (al encontrar el import) la ruta (tras sustituir los puntos por \) c:\tmp\prac2\paquete\es\uv\lp\ que es donde se encuentra la clase Alumno. Finalmente, indicar que también es posible usar dentro del programa el nombre completo (incluyendo el paquete) para referirnos a la clase (este nombre es conocido como qualified name). Por tanto el siguiente código es perfectamente válido, aunque es más complicado de leer (y de escribir). public class Clase { private e s. uv. l p. Alumno [ ] a l s ; private e s. uv. l p. Alumno [ ] d e l e g a d o s ; private S t r i n g aula ; public void matricularalumno ( e s. uv. l p. Alumno a l ) { // Codigo para añadir e l alumno a l array... Para poder compilar correctamente la clase Clase desde su directorio c:\tmp\prac2\prog debemos de escribir en la linea de ordenes: c:\tmp\prac2\prog>set CLASSPATH=c:\tmp\prac2\paquete;. y compilar normalmente c:\tmp\prac2\prog>javac Clase.java otra posibilidad es pasar la ruta como una opción al compilador: c:\tmp\prac2\prog>javac -classpath c:\tmp\prac2\paquete;. Clase.java Resumiendo Para definir que una clase pertenece a un paquete hay que usar la palabra reservada package seguida por el nombre que va se le va a dar al paquete. Para importarlo hay que usar la palabra import seguida del nombre del paquete. Los puntos que aparecen en el nombre del paquete se corresponden con una ruta en nuestra estructura de directorios. Para hacer visible el paquete a las utilidades (javac y java) hay que poner a partir de qué directorios se deben buscar para esto usamos la variable de entorno CLASSPATH o la opción -classpath pasada a las utilidades. 1.4. Visibilidad de los elementos fuera del paquete. Accesibilidad de clases Visible para public package Otra clase del mismo paquete si si Una clase de otro paquete si no Accesibilidad de miembros: Lenguajes de Programación Página: 3

Accesible a public protected package private La misma clase si si si si Clase en el mismo paquete si si si no Subclase en otro paquete si si no no No subclase en otro paquete si no no no Esto se muestra gráficamente en la siguiente figura: package a.b.c Clase A public tipo a1; protected tipo a2; tipo a3; private tipo a4; public Clase B public tipo b1; protected tipo b2; tipo b2; private tipo b4; A a = new A(...); a.a1 = valor; a.a2 = valor; a.a3 = valor; import a.b.c.*; Clase C B b = new B(...); b.b1 = valor; import a.b.c.*; Clase D extends B b1 = valor; b2 = valor; 1.5. Paquetes y Eclipse Desde Eclipse se puede crear un paquete dentro de un proyecto que se haya declarado del tipo Java. Para ello, una vez creado el proyecto, pulsando con el botón derecho del ratón sobre el nombre del proyecto en la vista Package Explorer aparece un menú contextual en el que podemos seleccionar New Package. Pulsando sobre esta opción aparece una ventana similar a la que se muestra a continuación donde se puede introducir el nombre del paquete: Lenguajes de Programación Página: 4

Una vez dado el nombre del paquete (que lo único que hace es crear la estructura de directorios a partir del nombre que se ha proporcionado) podemos crear clases dentro del paquete pulsando con el botón derecho sobre él y seleccionando New Class. Si hacemos esto vemos que automáticamente se pone como primera linea del fichero con la clase package nombre; donde nombre es el nombre del paquete que hemos introducirlo al crearlo. Si necesitamos importar clases de un paquete que alguien ha desarrollado y que está en un formato jar (comprimido) hay que indicarle a Eclipse que lo utilice. Eclipse necesitará acceder a este fichero en dos momentos: 1. en el momento de la compilación para comprobar que se están utilizando de forma adecuada las clases declaradas y, 2. en el momento de la ejecución. Para indicarle que busque clases en un determinado fichero a la hora de compilar se sigue la siguiente secuencia en el menú Project Properties. Aparece una ventana en la que pulsando en el panel de la izquierda sobre Java Build Path y seleccionando en el panel de la derecha la pestaña Libraries se puede indicar qué fichero jar debe considerar pulsando sobre Add jar... si el fichero jar está importado en el proyecto o, Add external jar.. si no se ha importado el fichero jar al proyecto. Lenguajes de Programación Página: 5

Para indicarle que clases en un determinado fichero a la hora de ejecutar se sigue la siguiente secuencia en el menú Run Run.... En la ventana que aparece y tras crear la configuración para ejecutar (dar un nombre, indicar el proyecto y la clase que contiene el main), pulsando sobre la pestaña Classpath y quitando la opción de Use default class path se puede seleccionar el fichero jar igual que en el caso anterior. Lenguajes de Programación Página: 6

2. Tareas Realizar la siguiente jerarquía de clases en un paquete llamado es.uv.tel.lp.p3 Figura Circulo Rectangulo Elipse Poligono donde la flecha indica una relación de herencia. La clase Figura debe seguir la siguiente especificación: public class Figura { protected int posx ; protected int posy ; protected int v e l o c i d a d x ; protected int v e l o c i d a d y ; protected Color c o l o r ; // p o s i c i o n i n i c i a l de l a f i g u r a en ( px, py ) // v e l o c i d a d de l a f i g u r a en ( v e l x, v e l y ) // Color de l a f i g u r a en Color ( de j a v a. awt ) public Figura ( int px, int py, int velx, int vely, Color c ) { // En e s t e caso e l cuerpo de e s t e metodo e s t a v a c i o ya que no sabemos como // p i n t a r una Figura hasta no e s p e c i f i c a r que t i p o de f i g u r a public void p i n t a ( Graphics g ) { // Tiempo e s t a en m i l i s e g u n d o s y l a v e l o c i d a d es en puntos / segundo // hay que r e a l i z a r una conversion public void mueve ( int tiempo ) { // Devuelve posx public int getx ( ) { // Devuelve posy public int gety ( ) { // Devuelve v e l o c i d a d x public int getvx ( ) { // Devuelve v e l o c i d a d y public int getvy ( ) { // E s t a b l e c e una nueva v e l o c i d a d x public void cambiavx ( int vx ) { // E s t a b l e c e una nueva v e l o c i d a d y public void cambiavy ( int vy ) { Lenguajes de Programación Página: 7

Todas las clases deben sobreescribir el método pinta(graphics g) de Figura ya que cada figura concreta debe especificar cómo se pinta. Además cada figura tiene sus propios atributos (debido a la geometría de cada figura). Para ver cuales son los atributos que debe tener cada clase se debe consultar en la clase Graphics del paquete java.awt los métodos que ofrece para pintar las figuras propuestas. Se proporciona el paquete es.uv.tel.lp.mov (en el fichero movimiento.jar que contiene una clase Ventana que ofrece un método anadirfigura(figura fig) para ir añadiendo figuras a la ventana. Cada vez que se añade a la ventana una figura ésta se pone en movimiento según se haya especificado en el método mueve(...) que tienen todas las figuras. El método mueve(...) de Figura determina que las figuras sigan un movimiento con velocidad uniforme: x(t + 1) = x(t) + v x t y(t + 1) = y(t) + v y t donde t es el intervalo de tiempo (en segundos). Este intervalo de tiempo lo recibe mediante las llamadas que se realizarán desde Ventana y coincide con el tiempo que se pasa al constructor de Ventana salvo que este último está en milisegundos. Este es el movimiento que adquieren todas las figuras por heredar de Figura. Aunque es posible que alguna figura pueda ocultar el método de la clase padre con el fin de definir su propia forma de movimiento. Material adicional a este enunciado: El paquete movimiento.jar. La documentación (API) del paquete APImovimiento.zip. Lenguajes de Programación Página: 8