TÉCNICAS DE PROGRAMACIÓN Lenguaje Java



Documentos relacionados
Introducción - por qué usarlas?(1)

Programación Orientada a Objetos con Java

Uso de excepciones en Java

Programación Orientada a Objetos. Java: Excepciones

Modelo de Objetos Distribuidos

Programación Orientada a Objetos. Java: Excepciones

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:

Curso de Java POO: Programación orientada a objetos

Excepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

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

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

2. Estructura de un programa en Java

Modulo 1 El lenguaje Java

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Java Inicial (20 horas)

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

Universidad de Cantabria

Repaso de las características más importantes de la programación Java y su adaptación a Android

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Tema 14: Excepciones

Introducción a Java LSUB. 15 de enero de 2015 GSYC

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

Programación en Java. Programación en OO

Tema 2. El lenguaje de programación Java (Parte 1)

Introducción a la Programación Orientada a Objetos

Arquitectura y Lenguaje Java

11. Algunas clases estándar de Java (II)

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Objetos y Clases en Java. ELO-329: Diseño y Programación Orientados a Objetos

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

Java en 2 horas. Rodrigo Santamaría

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

Elementos léxicos del lenguaje de programación Java

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica

Clases y Objetos. Informática II Ingeniería Electrónica

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

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

Programación Orientada a Objetos en Java

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Constructores y Destructores

Introducción a la programación orientada a objetos

Programación Orientada a Objetos en Java

Carmen. Estándares de codificación. Manuel Arias Calleja

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

Programación orientada a objetos

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Definición de clases: Herencia, polimorfismo, ligadura dinámica

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Java: Clases Abstractas e Interfaces

Pruebas de unidad con JUnit

Práctica 5: Common Object Request Broker Architecture CORBA

Manual del Protocolo XML-RPC de Mensajería Negocios

Un breve resumen del lenguaje Java

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

Práctica sobre compartición de instancias remotas.

Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

TEMA 5. EXCEPCIONES EN JAVA DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

1. Visión general de RMI

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

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

Patrones para persistencia (I) Ingeniería del Software II

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Preliminares. Tipos de variables y Expresiones

INTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Introducción al lenguaje JAVA

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

Técnicas Avanzadas de Testing Automatizado

8. Sentencia return y métodos

Tema 1. Introducción a JAVA

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

19. Packages o paquetes

Objetivo de aprendizaje del tema

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

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

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

1. Manejo de memoria estática 2. Manejo de memoria dinámica

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

Primer Parcial Septiembre 5 de 2009

9. Objetos y clases Clases

1 HILOS (THREADS) EN JAVA

RMI [Remote Method Invocation]

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

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

Transcripción:

TÉCNICAS DE PROGRAMACIÓN Lenguaje Java Introducción a Java 2 Daniel Finol 1

Otras diferencias entre C y Java No hay typedef ni enum. No existe el operador coma. Pero sí: for(int i = 0, j = 0; condición; j++, i++); No hay uniones ni campos de bits. No hay apuntadores a métodos. No hay argumentos de longitud variable (printf). 2

Otras diferencias entre C y Java No hay que declarar antes de usar. Las variables pueden declararse en cualquier lugar, no sólo al inicio de un bloque. Aunque esto a veces no es recomendado. Sobrecarga de métodos: dos métodos pueden tener el mismo nombre si difieren en la lista de argumentos. Recolector de basura (garbage collector). 3

Paquetes y acceso a clases Las clases pueden tener dos tipos de acceso: public: Pueden ser accedidas por clases en otros paquetes. Por defecto: Sólo se puede acceder a ellas desde el mismo paquete en que se definen. Cuando no se especifica ningún paquete (en el archivo fuente donde se define una clase) éstas están en el "paquete global". Ámbito (Namespace). 4

CLASSPATH CLASSPATH: Cuando en un programa usamos clases que no están definidas en el mismo archivo, javac y java buscan los archivos.class correspondientes en los directorios definidos en la variable de entorno CLASSPATH. También, al ejecutar un programa (con el comando java), se puede especificar dónde buscar mediante la opción classpath. Cuando hemos incluido paquetes también se buscan los subdirectorios (de los directorios mencionados arriba) que correspondan con los nombres de los paquetes. 5

Firma de métodos Se llama firma de un método a la combinación de su nombre y la lista de los tipos de argumentos que recibe. Esto es lo que distingue a un método de otro dentro de una misma clase. 6

Variables objeto Un objeto en Java (una variable cuyo tipo es una clase) en realidad contiene una "referencia" es decir, una indicación de dónde se encuentra el objeto en memoria, es por eso que: Al comparar dos objetos == no estamos comparando sus contenidos. Al asignarle un objeto a otro no estamos copiando los contenidos del objeto. Cuando se pasa un objeto como argumento a una función no se hace una copia del objeto. Cuando una función retorna un objeto (aunque retorne una referencia a un objeto que se creó dentro de la función) la referencia sigue siendo válida. 7

final Variables final: Constantes, después de ser inicializadas su valor no puede cambiar. Variable final local: No tiene que inicializarse en la declaración. Métodos final: No pueden sobre escribirse. Son más rápidos de llamar. Los métodos private son implícitamente final. Clases final: No pueden "heredarse", no se pueden crear subclases a partir de ella. 8

Clases Abstractas Si una clase tiene un método abstract la clase es abstracta y debe ser declarada abstract. Una clase abstract no se puede "instanciar". Si una subclase de una clase abstracta no sobreescribe (implementa) todos los métodos abstractos de su superclase entonces también será abstracta y debe ser declarada como tal. Los métodos static, final y private no pueden ser abstractos. Una clase final no puede ser abstracta. Una clase se puede declarar como abstract aunque no tenga métodos abstractos. 9

Clase Abstracta 10

Clases Abstractas 11

Clases Abstractas 12

Clases Abstractas class Círculo extends Figura { void redibujar() { System.out.println("Dibujar círculo"); class Rectángulo extends Figura { void redibujar() { System.out.println("Dibujar rectángulo"); 13

Interfaces Una interfaz especifica lo que hace una clase sin implementarlo. Es parecida a una clase abstracta excepto: La palabra interface reemplaza a abstract class. Todos los métodos son abstractos (implícitamente): no se define (implementa) ninguno, sólo se declaran. No hay métodos static. En cambio los datos deben ser constantes: static final. Todos los métodos son públicos (aunque no se indique). Como no se puede "instanciar" no hay constructores. 14

Interfaces Mientras que una clase sólo puede extender una sola (super )clase, cualquier clase puede implementar cualquier número de interfaces: public interface Centered { public void setcenter(double x, double y); public double getcenterx(); public double getcentery(); 15

public class CenteredRectangle extends Rectángulo implements Centered { private double cx, cy; public CenteredRectangle(double cx, double cy, double w, double h) { super(w, h); this.cx = cx; this.cy = cy; Llama al constructor de la superclase public void setcenter(double x, double y) { cx = x; cy = y; public double getcenterx() { return cx; public double getcentery() { return cy; 16

Una interfaz puede extender otra interfaz. Marker Interfaces. 17

"Clases Internas" Clases miembro estáticas. Puede acceder a miembros estáticos de la clase que la contiene. Clases miembro. Puede acceder a todos los miembros de la clase que la contiene. Clases locales. Se definen dentro de un bloque de código. Como el código también está dentro de una clase tienen acceso como si fueran clases miembro. Clases anónimas. Como las locales pero anónimas. 18

La clase Object La clase Object (definida en java.lang) es la raíz de la jerarquía de clases de Java: Toda clase en Java (esto incluye las definidas por Ud.; también los arreglos) hereda (extiende) la clase Object implícitamente; directa o indirectamente. Algunos métodos de esta clase son: Object clone() boolean equals(object obj) Class getclass() String tostring() finalize() También están hashcode() y métodos para la sincronización de hilos. 19

finalize() Este método es llamado por el recolector de basura antes de destruir un objeto. No hay garantías de si será llamado ni cuándo. Se puede usar para liberar recursos asociados a un objeto: cerrar archivos, liberar conexiones de red, etc. 20

Excepciones En C se usan valores específicos de retorno para indicar que ha ocurrido en error. Eso requiere que se verifiquen los valores de retorno, a veces, a través cadenas de llamadas anidadas. Ejemplo: supóngase que en main se llama a la función f() que a su vez llama a g() y ésta llama a h(). Si se produce un error en h() habría que pasar el código a g() y luego a f() y finalmente a main. Esto requiere crear código que oculta la lógica del algoritmo. 21

Excepciones Las excepciones permiten manejar los errores manteniendo el código claro y legible. // In main() try { f(); catch (MyException e) { System.out.println(e); No se necesita propagar el error a través de la pila de llamadas a funciones. // In h() throw new MyException("optional text here"); 22

Excepciones Es un evento que ocurre durante la ejecución de un programa que impide que el programa continúe normalmente; generalmente es un error. Las excepciones son de distintos tipos y forman una jerarquía extendible de clases. Todos los tipos de excepciones derivan de Throwable. Hay dos tipos: Exception y Error que derivan de Throwable. Una excepción es un objeto de tipo Throwable. 23

Excepciones Una excepción señala que alguna condición excepcional o error ha ocurrido. Lanzar (throw) una excepción es señalar una condición excepcional. Atajar (catch) un excepción es manejarla: hacer lo necesario para recuperarse de ella. 24

Excepciones De dónde vienen? Una excepción se puede lanzar: throw new MyException("optional text here"); bien sea en el código de uno o en funciones de clases que uno utiliza. Un método debe lanzar una excepción sólo si no puede cumplir con su especificación. Un ejemplo podría ser una Pila que lanza una excepción si se llama a pop() cuando la pila está vacía. Otra fuente de excepciones es la máquina virtual de Java. 25

Excepciones class FixedStack { private int capacity; private int size; private Object[] data; public FixedStack(int cap) { data = new Object[cap]; capacity = cap; size = 0; public void push(object o) throws StackException { if (size == capacity) throw new StackException("pila llena"); data[size++] = o; 26

public Object pop() throws StackException { if (size<=0) throw new StackException("pila vacía"); return data[--size]; public Object top() throws StackException { if (size<=0) throw new StackException("pila vacía"); return data[size-1]; public int size() { return this.size; 27

class StackException extends Exception { StackException() { StackException(String msg) { super(msg); 28

class StackTest { public static void main(string[] args) { FixedStack s = new FixedStack(3); dotest(s); public static void dotest(fixedstack s) { try { s.push("one"); s.push(new Integer(2)); s.push(new Float(3.0)); s.push("one too many"); // error! catch(stackexception x) { System.out.println(x); // This should happen: 29

try { System.out.println("Top: " + s.top()); System.out.println("Popping..."); while (s.size() > 0) System.out.println(s.pop()); catch(stackexception x) { // This should never happen: throw new InternalError(x.toString()); 30

Excepciones No Verificada (unchecked): Los excepciones tipo Error y RuntimeException pueden ocurrir en cualquier momento. Por eso usualmente no se chequean. Verificadas (checked): Los excepciones tipo Exception excepto RuntimeException sí se chequean y se espera que se manejen. 31

Excepciones Si se usan excepciones verificadas el compilador verifica que sucedan dos cosas: Todo método que lanze (throw) potencialmente una excepción debe anunciarlo en el encabezado: public Object top() throws StackException { Todo método que llame a un método que anuncie una excepción verificada debe hacer una de dos cosas: Manejar la excepción: try/catch; o Anunciar a su vez la excepción con su propia cláusula throws en el encabezado. 32

Excepciones La excepciones no verificadas no se colocan en la cláusula throws. Las tipo RuntimeException se pueden atajar (catch), pero no es necesario. Ejemplos: 33

Las tipo Error no se atajan pues señalan un error grave que requiere que se "apague" la máquina virtual. Ejemplos: InternalError, VirtualMachineError, OutOfMemoryError, StackOverflowError, LinkageErrors. 34

La sentencia catch(e e) {... atajaría todas las excepciones de tipo E y sus derivadas. Por ej.: try { // whatever catch (Exception e) { System.out.println(e); ataja todas las excepciones (verficables). Cuando se lanza una excepción en el try el sistema busca los catch en el orden en que aparecen; por eso no debe colocarse un catch de una super clase antes de uno para una sub clase de esa super clase. 35

Cuando una sub clase sobre escribe un método no deben añadirse nuevos tipos de excepciones a la cláusula throws. A menos que sean excepciones derivadas de las que tenía el método original. En el bloque try/catch/finally debe haber: Un try. Por lo menos un catch. Uno o ningún finally. 36

Excepciones if (x < 0) throw new IllegalArgumentException("x must be >= 0")); double fact; for(fact=1.0; x > 1; fact *= x, x--); return fact; 37

try/catch/finally try { statement(s) catch (exceptiontype name) { statement(s) finally { statement(s) 38

throws public static String readfirstline(string filename) throws IOException { BufferedReader in = new BufferedReader(new FileReader(filename)); return in.readline(); 39

private Vector vector; private static final int SIZE = 10; PrintWriter out = null; try { System.out.println("Entered try statement"); out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) { out.println("value at: " + i + " = "+ vector.elementat(i)); catch and finally statements... 40

catch (FileNotFoundException e) { System.err.println("FileNotFoundException: " + e.getmessage()); throw new SampleException(e); catch (IOException e) { System.err.println("Caught IOException: " + e.getmessage()); 41

finally { if (out!= null) { System.out.println("Closing PrintWriter"); out.close(); else { System.out.println("PrintWriter not open"); 42

public void writelist() { PrintWriter out = null; try { System.out.println("Entering try statement"); out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) out.println("value at: " + i + " = " + victor.elementat(i)); catch (ArrayIndexOutOfBoundsException e) { System.err.println("Caught " + "ArrayIndexOutOfBoundsException: " + e.getmessage()); catch (IOException e) { System.err.println("Caught IOException: " + e.getmessage()); finally { if (out!= null) { System.out.println("Closing PrintWriter"); out.close(); else { System.out.println("PrintWriter not open"); 43

this y super La palabra clave this es una referencia a la instancia de la clase. Ej.: class Abc { int a; Abc(int a) { this.a = a; La palabra super se usa para tener acceso a los miembros de la super clase de la clase actual. O para llamar a su constructor: super(). 44

Applets Los applets son programas pequeños que hechos para distribuirse a través de internet y ejecutarse dentro del navegador. Los programas tipo applet deben derivarse de la clase Applet y sobre escribir algunos métodos de ésta. 45

javadoc Los comentarios que comienzan por /** son usados por la herramienta javadoc para crear documentación html de nuestras clases. Dentro de estos comentarios se usan etiquetas como @author, @param, @return para insertar información. Dentro de los comentarios puede usarse código html y poner enlaces. 46