Paquetes e interfaces.

Slides:



Advertisements
Presentaciones similares
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Advertisements

2. Manejo de memoria Manejo de memoria estática
Curso de java básico (scjp)
Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Programación Interactiva Hilos
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Arquitectura CLARO-TECNOTREE
Informática II Prof. Dr. Gustavo Patiño MJ
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
Diseño y programación de
PROGRAMACION ORIENTADA A OBJETOS
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
Tema 12: Programación multihilo
Lenguaje de Programación II Manejo de Paquetes Corporación Universitaria del Caribe CECAR.
 son segmentos de código de un programa que se ejecutan secuencialmente de modo independiente de las otras partes del programa.
Java. Threads (Hebras) Los sistemas operativos actuales permiten la multitarea, aunque esta se de tiempo compartido cuando se trabaja con un solo procesador.
Lic. Rosemary Torrico Bascopé
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
SCJP Sun Certified Programmer for Java 6
Un hilo es un único flujo de ejecución dentro de un proceso. Un proceso es un programa ejecutándose dentro de su propio espacio de direcciones. Los.
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Clase 10: Estructuras de datos y arreglos.
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
Animación usando Threads (lógica) Tema 10. Threads Definición: Un thread es un flujo secuencial de control dentro de un programa. Definición: Un thread.
Tema 9: Paquetes Antonio J. Sierra. Índice 1. Introducción. 2. Protección de acceso. 3. Importación de paquetes. 4. Modelado UML de un paquete.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
Control de errores visual basic
Gestión de procesos Sistemas Operativos Edwin Morales
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
Algoritmos y programación 3 - cátedra Fontela Concurrencia.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) CONCEPTOS DE PROGRAMACION.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Programación orientada a objetos
Threads en Java  Threads: programas multitarea  Creación de threads  Ciclo de vida de un thread  Sincronización.
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
UNIVERSIDAD TECNICA DE BABAHOYO EXTENSION DE QUEVEDO  Espinales Lisseth G RUPO N º 2 Temas:  Herencia  Polimorfismo  Encapsulamiento  2 Ejemplos Estudiante.
Elementos y tipos de sistemas operativos
Hilos y Multihilos Un thread (hilo, flujo de control del programa) representa un proceso individual ejecutándose en un sistema. A veces se les llama.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
Hilos Java Profesor Elian Rojas Berrocal
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Tema 1: Concurrencia con Java
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Paquetes e interfaces

Paquetes Un paquete es un contenedor de clases, que se usa para mantener el espacio de nombres de clase, dividido en compartimentos. Es muy conveniente ya que evita conflictos de nombres cuando se manejan un gran numero de clases e interfaces

Paquetes Se almacenan de manera jerárquica, utilizando los directorios del sistema de archivos para almacenar los paquetes. Se importan explícitamente en las definiciones de nuevas clases. Permite restringir la visibilidad de las clases que contiene Se pueden definir miembros de una clase que solo sean accesibles por miembros del mismo paquete

Definición de un paquete La siguiente instrucción se incluye al inicio del archivo fuente (.java) package nombre-paquete Si no se incluye la instrucción package en el archivo fuente, entonces java agrega las clases de ese archivo fuente a un paquete por defecto (default package). Si se declara que una clase esta dentro de un paquete llamado PrimerPaquete, entonces el archivo fuente de esa clase se debe almacenar en un directorio llamado PrimerPaquete. Se puede crear una jerarquía de paquetes dentro de paquetes separando los niveles por puntos. Esta es la jerarquía se debe reflejar en el sistema de archivos de desarrollo de java

Por ejemplo: package java.awt.imagen; Significa que imagen esta almacenada en la siguiente jerarquía de directorios. java => awt Imagen

Usando paquetes Se pueden utilizar las clases publicas de un paquete de dos formas. Utilizando el nombre completo del paquete. java.util.GregorianCalendar hoy= new java.util.GregorianCalendar(); Lo cual resulta muy compolicado o Lo mas simple y común en importar el paquete. import java.util.*; GregorianCalendar hoy= new GregorianCalendar();

Como el compilador localiza los paquetes Es importante recalcar que todos los archivos del paquete se deben de encontrar en un subdirectorio que tenga el mismo nombre del paquete. Estos subdirectorios no deben de estar en la raíz del sistema de directorios. Java busca los paquetes, primero en todos los archivos del paquete por defecto. Los archivos del paquete por defecto están localizados en los directorios definidos en el CLASSPATH. Es responsabilidad del programador poner los paquetes en los subdirectorios correctos.

Importante para ejecutar paquetes Cuando se intenta poner una clase en un paquete, el primer problema es que la estructura de directorios debe coincidir con la jerarquía de paquetes exactamente. No se puede renombrar un paquete sin renombrar el directorio en el cual están almacenadas las clases. Otro problema, cuando desee llamar a una clase que se encuentre en un paquete deberá prestar atención a su ubicación en la jerarquía de paquetes. Por ejemplo, se crea una clase llamada PaquetePrueba en un paquete llamado prueba. Para ello se crea el directorio llamado prueba y se pone en él PaquetePrueba.java y se compila. Si intenta ejecutarlo, el intérprete no lo encontrará. Esto se debe a que esta clase se encuentra ahora en un paquete llamado prueba y no nos podemos referir a ella simplemente con PaquetePrueba. sin embargo si es posible referirse a cualquier paquete enumerando su jerarquía de paquetes, separando los paquetes por puntos. Por lo tanto, si intenta ahora ejecutar ahora Java con prueba.PaquetePrueba, el intérprete tampoco lo encontrará. El motivo de este nuevo fracaso se encuentra en la variable CLASSPATH. Probablemente contenga algo parecido a ".;C:\java\classes" que le dice al intérprete que busque en el directorio de trabajo actual y en el directorio de instalación del Equipo de herramientas de desarrollo de Java estándar. El problema es que no hay un directorio prueba en el directorio de trabajo actual porque usted ya está en el directorio prueba. Tiene dos opciones en este momento: cambiar de directorio un nivel arriba y ejecutar "java prueba.PaquetePrueba", o añadir el extremo de su jerarquía de clases de desarrollo a la variable de entorno CLASSPATH. Después podrá utilizar "java prueba.PaquetePrueba" desde cualquier directorio y Java encontrará el archivo .class adecuado. Si trabaja con su código fuente en un directorio llamado C:\mijava, dé a CLASSPATH el valor ".;C:\mijava;C:\java\classes".

Un ejemplo de paquetes

Interfaces Son sintácticamente como las clases, pero no tienen variables de instancia y los métodos declarados no contienen cuerpo. Se utilizan para especificar lo que debe hacer una clase, pero no cómo lo hace. Una clase puede implementar cualquier número de interfaces.

La instrucción interface La forma general de una interfaz es acceso interface nombre { tipo_devuelto nombre_de_método1(lista_de_parámetros); tipo_dato nombre_var = valor; } acceso puede ser public o no usarse. Si no se utiliza (acceso por defecto) la interfaz está sólo disponible para otros miembros del paquete en el que ha sido declarada. Si se usa public, puede ser usada por cualquier código (todos los métodos y variables son implícitamente públicos). Los métodos de una interfaz son básicamente métodos abstractos (no tienen cuerpo de implementación). Un interfaz puede tener variables pero serán implícitamente final y static.

Por que interfaces Los interfaces se utilizan para definir un protocolo de comportamiento que puede ser implementado por cualquier clase del árbol de clases. Los interfaces son útiles para. capturar similitudes entre clases no relacionadas sin forzar una relación entre ellas. declarar métodos que una o varias clases necesitan implementar. revelar la interfase de programación de un objeto sin mostrar sus clases (los objetos de este tipo son llamados objetos anónimos y pueden ser útiles cuando se comparte un paquete de clases con otros desarrolladores).

Utilizar un Interface Para utilizar un interface se debe escribir una clase que lo implemente. Una clase declara todos los interfaces que implementa en su declaración de clase. Para declarar que una clase implementa uno o más interfaces, se utiliza la palabra clave implements seguida por una lista delimitada por comas con los interfaces implementados por la clase. Una vez declarada la interfaz, puede ser implementada por varias clases. Cuando implementemos un método de una interfaz, tiene que declararse como public. Si una clase implementa dos interfaces que declaran el mismo método, entonces los clientes de cada interfaz usarán el mismo método.

Ejemplo de interfase interface coleccion { int MAXIMO = 500; void añadir(Object obj); void borrar(Object obj); Object buscar(Object obj); int contadorActual(); }

continuación class PilaFIFO implements coleccion { . . . void añadir(Object obj) { . . . } void borrar(Object obj) { . . . } Object buscar(Object obj) { . . . } int contadorActual() { . . . } }

Conceptos de Hilos Un hilo -algunas veces llamado contexto de ejecución o proceso ligero- es un flujo de control secuencial dentro de un programa Un único hilo es similar a un programa secuencial; es decir, tiene un comienzo, una secuencia y un final, además en cualquier momento durante la ejecución existe un sólo punto de ejecución. un hilo no es un programa; no puede correr por sí mismo, corre dentro de un programa

Creación de un hilo Una forma de crear un hilo es heredando de Thread class MiThread extends Thread { public void run() { . . . } La otra forma es utilizando la interface Runnable public class MiThread implements Runnable { Thread t; // Ejecución del thread una vez creado

El método run() Antes que nada, necesitamos proveer a cada hilo con un método run para indicarle qué debe hacer. El código de este método implementa el comportamiento en ejecución del hilo y puede hacer, prácticamente cualquier cosa capaz de ser codificada en Java. Existen dos técnicas para proveer un método run para un hilo: Haciendo una subclase de Thread y sobrecargando run Implementando la interface Runnable. Thread es una clase, pero Runnable es una interface.

Manejo de Prioridades de los hilos La gran ventaja que ofrecen los hilos es que corren de manera concurrente. La mayoría de las computadoras tienen un sólo procesador, por lo tanto los hilos corren uno a la vez de forma tal que proveen la ilusión de concurrencia (esto es llamado scheduling). El sistema de ejecución de Java soporta un algoritmo determinístico (para el scheduler) llamado fixed priority scheduling. Este algoritmo asigna tiempo de ejecución a un hilo basado en su prioridad relativa a los demás hilos que están listos para ejecutarse. Cuando se crea un nuevo hilo, hereda su prioridad del hilo que lo crea, ésta puede ser modificada con el método setPriority.

Prioridad Si dos hilos con la misma prioridad están esperando que el CPU los ejecute, el scheduler escoge uno utilizando round-robin (i.e. escoge uno aleatoriamente, se supone que round-robin ofrece iguales probabilidades de ejecución a los hilos en cuestión). El hilo escogido para ejecución, corre hasta que alguna de estas condiciones sea verdadera: Un hilo con mayor prioridad está listo para ejecución. El hilo cede su lugar (yields), o su método run termina. En sistemas que soportan rebanadas de tiempo (time slicing), su tiempo asignado ha expirado

Sincronización. Cuando tenemos varios hilos, muchas veces deseamos que éstos pueden compartir datos, por lo tanto, es indispensable saber sincronizar sus actividades; esto también nos permitirá evitar inanición y abrazos mortales. En muchas situaciones, hilos que se ejecutan concurrentemente comparten información y deben considerar el estado de las actividades de los demás hilos.

Suspensión de un Thread Puede resultar útil suspender la ejecución de un thread sin marcar un límite de tiempo. Si, por ejemplo, está construyendo un applet con un thread de animación, querrá permitir al usuario la opción de detener la animación hasta que quiera continuar. No se trata de terminar la animación, sino desactivarla. Para este tipo de control de thread se puede utilizar el método suspend(). t1.suspend(); El thread es suspendido indefinidamente y para volver a activarlo de nuevo necesitamos realizar una invocación al método resume(): t1.resume();

Parada de un Thread El último elemento de control que se necesita sobre threads es el método stop(). Se utiliza para terminar la ejecución de un thread: t1.stop(); Esta llamada no destruye el thread, sino que detiene su ejecución. La ejecución no se puede reanudar ya con t1.start(). Cuando se desasignen las variables que se usan en el thread, el objeto thread (creado con new) quedará marcado para eliminarlo y el garbage collector se encargará de liberar la memoria que utilizaba .

http://www.geocities.com/CollegePark/Quad/8901/cap05.htm http://www.programacion.com/java/tutorial/java_basico/30/ http://leo.ugr.es/~fjgc/CLDC/transjava/node9.html http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto.Oct98/2_Lengua/5_Interf.htm