Download Fundamentos Java
Document related concepts
no text concepts found
Transcript
Fundamentos de Lenguaje de Programación Java Fundamentos de Java 1 ORIENTACIÓN A OBJETOS Tipo abstracto de datos (TAD) Modelo conceptual representativo de un conjunto de objetos cuyas características sólo se pueden establecer a través de una colección de operaciones Encapsulamiento Propiedad que permite reunir datos y operaciones al interior de una estructura única, restringir su acceso y ocultar información Fundamentos de Java 2 ORIENTACIÓN A OBJETOS Jerarquía Propiedad que permite ordenar estructuralmente las abstracciones. Se presenta en las formas de especialización (herencia o relación es-un) y agregación (composición o relación tiene-un) Polimorfismo Propiedad que permite a una entidad la adopción de múltiples formas. Se presenta en calidad de polimorfismo paramétrico, ad-hoc (sobrecarga) y jerárquico Fundamentos de Java 3 ORIENTACIÓN A OBJETOS Caracterización Un objeto es un modelo de una entidad concreta o abstracta Objetos de una misma categoría constituyen una clase Un objeto es un ejemplar (instancia) de una clase Los objetos interactúan mediante mensajes Un método (operación) se activa mediante un mensaje enviado al objeto Fundamentos de Java 4 ORIENTACIÓN A OBJETOS Caracterización Un atributo (dato) es una variable interna mantenida por un ejemplar Los atributos de un objeto representan su estado Los métodos de un objeto determinan su comportamiento (conducta) Un objeto es la combinación de estado y comportamiento Un miembro de una clase puede ser atributo o método Fundamentos de Java 5 ORIENTACIÓN A OBJETOS Interacción entre objetos Un objeto (emisor) envía un mensaje a otro objeto (receptor) El mensaje solicita la ejecución de una acción e incluye los datos necesarios para satisfacerla El receptor que acepta un mensaje debe responder con la ejecución del método que satisface la petición La clase del receptor determina que método se activa como respuesta a un mensaje Fundamentos de Java 6 ORIENTACIÓN A OBJETOS Jerarquía Mar Transporte Aire DentroAtmosfera Nieve FueraAtmosfera Fundamentos de Java Tierra 1-Persona n-Personas 7 ORIENTACIÓN A OBJETOS Equivalencia entre paradigmas Orientado a objetos Objeto Clase Método Mensaje Jerarquía de clases Fundamentos de Java Procedimental Variable Tipo Procedimiento Llamada Jerarquía de tipos 8 ORIENTACIÓN A OBJETOS Herencia Todas las clases pertenecen a una estructura jerárquica Se puede definir una nueva clase a partir de una existente La nueva clase se denomina subclase o clase derivada La clase existente se denomina superclase o clase base Fundamentos de Java 9 ORIENTACIÓN A OBJETOS Herencia Las subclases heredan tanto los atributos como los métodos de la superclase La herencia es transitiva Una subclase tiene todas las propiedades de la superclase y otras más (extensión) Una subclase constituye una especialización de la superclase (reducción) Un método de superclase es anulado por un método homónimo definido en la subclase Fundamentos de Java 10 ORIENTACIÓN A OBJETOS Constructores Un constructor es un método especial que tiene el mismo nombre de la clase El constructor se invoca automáticamente para crear [e inicializar] un objeto de su clase inicializar un objeto (recién creado) de su clase Se provee un constructor sin parámetros cuando se omite ese método en la clase Un constructor de subclase se ejecuta después que el constructor de su superclase Fundamentos de Java 11 ORIENTACIÓN A OBJETOS Constructores Los constructores se pueden combinar con la capacidad de sobrecarga (dos o más cuerpos de método con un mismo nombre) Destructores Un destructor es un método especial invocado automáticamente justo antes de la eliminación de un objeto Un destructor de subclase se ejecuta antes que el destructor de su superclase Fundamentos de Java 12 CÓDIGOS EN JAVA Programa Colección de objetos que se comunican entre sí Conjunto de archivos de clase Aplicación Programa que incluye una clase con un método llamado main() Applet Programa que se ejecuta desde un navegador dotando de interactividad a una página Web Fundamentos de Java 13 CÓDIGOS EN JAVA Servlet .java Programa que se ejecuta para proveer contenido dinámico desde un servidor Web Archivo que contiene el código fuente de una clase en Java .class Archivo que contiene el código byte resultante de la compilación del respectivo archivo .java Fundamentos de Java 14 PAQUETES Y PROTECCIÓN DE CLASES La biblioteca de clases java es un conjunto de paquetes jerárquicamente organizados Un paquete contiene clases lógicamente relacionadas y agrupadas bajo un nombre El paquete java.io agrupa las clases que permiten la entrada y salida de datos Un paquete puede contener otros paquetes Un paquete puede ser creado por el usuario Fundamentos de Java 15 PAQUETES Y PROTECCIÓN DE CLASES El nombre completo de una clase consta del nombre de la clase precedido del nombre del paquete, por ejemplo java.lang.System La protección de una clase determina su relación con las clases de otros paquetes Se distinguen dos niveles de protección: De paquete (predeterminado) Público Fundamentos de Java 16 IMPORTACIÓN DE CLASES Se puede usar una clase de otro paquete dando su nombre completo o importándola import java.lang.System permite referirse a la clase System omitiendo java.lang Para importar un paquete completo se reemplaza el nombre de una clase por un * import java.lang.* importa todas las clases públicas del paquete java.lang que se usen en un programa Fundamentos de Java 17 CONTROL DE ACCESO Existen cuatro niveles y tres modificadores de acceso: De paquete (por omisión) Público (public) Privado (private) Protegido (protected) Un miembro declarado sin modificador de acceso es accesible por cualquier clase perteneciente al mismo paquete Fundamentos de Java 18 CONTROL DE ACCESO Un miembro declarado public es accesible por cualquier otra clase o subclase que desee utilizarlo Un miembro declarado private es accesible sólo por los métodos de su propia clase Un miembro declarado protected es accesible por cualquier clase del mismo paquete o cualquiera de sus subclases Fundamentos de Java 19 EXCEPCIONES Una excepción es un evento que impide la continuidad de ejecución de un programa Las excepciones proporcionan una manera limpia de verificar errores Se puede capturar y manejar una excepción en un intento por evitar que se detenga la ejecución del programa Las clases Exception y Error son subclases de la clase Throwable Fundamentos de Java 20 EXCEPCIONES Exception cubre las fallas recuperables Error cubre las fallas no recuperables En un método, el código que podría lanzar (throw) una excepción debe incluirse en un bloque try Al ocurrir una falla, el método lanza una excepción para que intervenga el bloque catch que la manejará Fundamentos de Java 21 MIEMBROS ESTÁTICOS Un atributo static se puede utilizar aunque no existan objetos de su clase Mediante el nombre de su clase, otra clase puede acceder a un atributo public static Un método static no tiene referencia this, por lo cual no puede ser invocado por un objeto de su clase puede acceder a miembros static de su clase, pero no a miembros no static de la misma Fundamentos de Java 22 TIPOS DE DATOS Categorías de tipos de datos: Primitivos Enteros [byte (1 byte), short (2 bytes), int (4 bytes), long (8 bytes) y char (2 bytes)] Reales [float (4 bytes) y double (8 bytes)] Lógico [boolean (1 byte)] Referenciados Clases Interfaces Arreglos Fundamentos de Java 23 TIPOS DE DATOS Además, el paquete java.lang proporciona las clases: Byte Character Short Integer Long Float Double Boolean Fundamentos de Java 24 CONSTANTES SIMBÓLICAS Una constante simbólica es un dato de algún tipo primitivo, inicializado explícitamente y precedido del calificador final puede incluir el calificador static puede definirse como atributo de clase local a un método definida como local a un método, NO puede ser declarada static Fundamentos de Java 25 CONSTANTES SIMBÓLICAS Cuando una constante simbólica aparece como atributo de clase mediante final static, sólo se crea una copia de ella para todos los objetos de esa clase final, se crea una copia de ella para cada objeto de esa clase (poco útil) Fundamentos de Java 26 VARIABLES Para acceder a la representación en memoria de variables de tipo primitivo se usa direccionamiento directo referenciado se usa direccionamiento indirecto Una variable puede ser atributo (ámbito de clase) o local (ámbito de bloque) La referencia a un objeto declarado final es una referencia constante a ese objeto Fundamentos de Java 27 OPERADORES Aritméticos Relacionales <, >, <=, >=, !=, == Lógicos +, -, *, /, % &&, ||, &, |, !, Unarios !, ~, -, ++, -- Fundamentos de Java 28 OPERADORES Sobre bits &, |, , <<, >>, >>> De asignación ++, --, =, +=, -=, *=, /=, %= <<=, >>=, >>>, &=, |=, = Condicional ? op1 ? op2 : op3 Fundamentos de Java 29 CREACIÓN DE OBJETOS Una clase es una plantilla para crear objetos Un objeto se crea con el operador new Si la memoria disponible para representar el objeto es suficiente, el operador new retorna una referencia al nuevo objeto insuficiente, el operador new lanza el error OutOfMemoryError Fundamentos de Java 30 CONSTRUCTORES La ejecución de un constructor inicializa los atributos de un objeto recién creado Un constructor implícito asigna los valores especificados en la declaración predeterminados por el lenguaje Un constructor explícito no puede ser void ni retornar un valor admite parámetros y puede ser sobrecargado no puede ser final ni static Fundamentos de Java 31 ASIGNACIÓN DE OBJETOS El operador de asignación no sirve para copiar un objeto en otro La semántica de obj1 = obj2 es la identidad de los objetos obj1 y obj2 Se puede copiar un objeto en otro mediante un método exclusivo para ello ó un constructor de copia El constructor de copia permite inicializar un nuevo objeto a partir de otro existente Fundamentos de Java 32 DESTRUCTORES Un destructor es un método único con el nombre predefinido finalize Puede contener sentencias acordes con la desaparición del objeto Por omisión se provee uno implícito Cuando no quedan referencias que apunten a un objeto, éste se transforma en basura La invocación del destructor es automática cuando se recolecta un objeto basura Fundamentos de Java 33 FLUJOS DE E/S ESTÁNDAR La clase System proporciona tres flujos estándares que se mantienen activos durante la ejecución de un programa: System.in destinado a la entrada de datos por teclado System.out destinado a la salida de datos por pantalla System.err destinado a la salida de errores por pantalla Fundamentos de Java 34 FLUJOS DE E/S ESTÁNDAR Un objeto de la clase InputStreamReader convierte un flujo de bytes en caracteres La clase BufferedReader provee el método readLine() para leer una línea de texto InputStreamReader isr = new InputStreamReader(System.in); BufferedReader flujoE = new BufferedReader(isr); in isr flujoE La clase PrintStream provee el método println(<arg>) para desplegar <arg> como una línea de texto Fundamentos de Java 35 CLASE Leer public class Leer { public static String dato() { String sdato = ""; try { // Definir un flujo de caracteres de entrada InputStreamReader isr = new InputStreamReader(System.in); BufferedReader flujoE = new BufferedReader(isr); sdato = flujoE.readLine(); } catch (IOException e) { System.err.println("Error: " + e.getMessage()); } return sdato; } Fundamentos de Java 36 CLASE Leer public static short datoShort() { try { return Short.parseShort(dato()); } catch (NumberFormatException e) { return Short.MIN_VALUE; } } public static int datoInt() { try { return Integer.parseInt(dato()); } catch (NumberFormatException e) { return Integer.MIN_VALUE; } } Fundamentos de Java 37 CLASE Leer public static long datoLong() { try { return Long.parseLong(dato()); } catch (NumberFormatException e) { return Long.MIN_VALUE; } } public static float datoFloat() { try { Float f = new Float(dato()); // Crea un objeto Float return f.floatValue(); // Retorna un valor float } catch (NumberFormatException e) { return Float.NaN; } } Fundamentos de Java 38 CLASE Leer public static double datoDouble() { try { Double d = new Double(dato()); return d.doubleValue(); } catch (NumberFormatException e) { return Double.NaN; } } } // Fin de la clase Leer Fundamentos de Java 39