Download programación en java - Desarrollo de Software y SIG
Document related concepts
no text concepts found
Transcript
Aplicaciones Empresariales en Java – Programación en Java PROGRAMACIÓN EN JAVA BREVE HISTORIA DE JAVA Java data de 1991, en el que un grupo de ingenieros de Sun Microsystems liderados por Patrick Naughton, Sun Fellow y James Gosling, deseaban diseñar un lenguaje de computadoras que se pudiera utilizar para dispositivos de consumo como los computadores de TV por Cable. Estos dispositivos poseen pocos recursos de procesamiento y de almacenamiento de memoria. Era importante que el lenguaje no estuviera asociado a una sola arquitectura. Esto llevo a resucitar el modelo de compacidad y neutralidad respecto a la plataforma creado hace varios años por Niklaus Wirth inventor de Pascal. Este es el inicio de un lenguaje transportable y del concepto de máquinas virtuales. El personal de Sun tenía experiencia en UNIX así que basaron al lenguaje Java a partir de C y C++. Gosling decidió llamarlo en sus inicios Oak y luego lo bautizaron como Java. En 1992, el proyecto Green generó su primer producto denominado *7, que se trataba de un control remoto inteligente. Lamentablemente este producto no tuvo éxito en el mercado. Mientras sucedía todo esto en Sun, la parte del internet que es la WWW se iba haciendo cada vez más grande. La clave de la web es el navegador. En 1994, casi todo el mundo usaba Mosaica(un navegador comercial que surgió del Centro de Supercompuadoras de la Universidad de Illinois en 1994). Este navegador fue escrito en gran parte por Mark Andreesen estudiante universitario que más tarde sería cofundador y jefe de tecnología de Netscape. A mediados de 1994, Gosling inicia la construcción de un navegador escrito en Java desarrollado por Patrick Naughton y Jonathan Payne y lo denominador HotJava. Este navegador introduce el concepto de Applets (programas con interfaz gráfica que funcionan en un navegador web). Sun publicó su primera versión de Java a principios de 1996. Esta versión carecía de credibilidad entre los programadores por su escasa aplicabilidad. La versión 1.1 corregía errores de la versión anterior y se agrega el modelo de eventos para programación gráfica. En 1998 aparece la versión Java 1.2 que reemplaza en antiguo conjunto de herramientas de Interfaz Gráfica por un modelo sofisticado y escalable denominado Swing. En diciembre de 1998 se cambia el nombre por Java 2 Standard Edition Software Developer Kit versión 1.2. Además, se presentaron otras dos ediciones: Micro Edition para dispositivos móviles y Enterprise Edition para servidores. ARQUITECTURA DE JAVA El lenguaje de programación Java saltó a la escena de internet y consiguió instantáneamente un título de celebridad. Un lenguaje con una ingeniería muy sólida. Su característica de protección y seguridad para programadores y usuarios. Propietario de Sun hoy de Oracle. Java es el mejor lenguaje de programación usado por buenos programadores Java es una plataforma con una gran biblioteca de clases. Basado en C y C++ con fundamento de Pascal. Java es toda una plataforma, con una enorme biblioteca con una gran cantidad de código reutilizable y con un entorno de ejecución que ofrece servicios tales como: seguridad, adaptabilidad entre sistemas operativos y recolección automática de basura. Como programador, se necesita un lenguaje que tenga una sintaxis agradable y una semántica comprensible. Versiones de Java: Java 2 Standard Edition J2SE: Estructuras Fundamentales, Clases y Objetos, Interfaz Gráfica de Usuario (GUI), Acceso a Base de Datos (JDBC) ESPOCH FIE - Ing. Jorge Huilca Palacios Página 1 Aplicaciones Empresariales en Java – Programación en Java Java 2 Enterprise Edition J2EE: hoy se la denomina Java Enterprise Edition (JEE) orientada al desarrollo web, programación de redes, componentes distribuidos (RMI, Corba, EJB, Servicios Web) Java 2 Micro Edition J2ME: orientado a dispositivos móviles A demás han aparecido nuevas tecnologías Java FX: para la creación de Rich Internet Applications (RIAs), esto es, aplicaciones web que tienen las características y capacidades de aplicaciones de escritorio, incluyendo aplicaciones multimedia interactivas Java Card: es una tecnología que permite ejecutar de forma segura pequeñas aplicaciones Java (applets) en tarjetas inteligentes (SIM) y similares dispositivos empotrados Java TV: implementación de Java que se ejecuta en diferentes dispositivos relacionados con la TV: desde top boxes para televisión por cable y satelital hasta lectores de discos La evolución de Java en cuanto a su desarrollo interno de clases: Versiones Versión 1.0 Versión 1.1 Versión 1.2 Versión 1.3 Versión 1.4 Versión 5.0 Versión 6 No. de Clases 211 clases 477 clases 1524 clases 1840 clases 2723 clases 3279 clases 3777 clases Las características de Java son: Sencillo: Programación de forma sencilla. Utiliza prácticas actuales. Muy parecido a C++. Carece de muchas características erróneas (punteros). En java se genera mucho código. Hoy existen Entornos de Desarrollo Integrados (IDE) que mejoran la productividad. Si se está acostumbrado a entornos visuales (Visual Basic, .NET, Delphi) no le resultará fácil. Orientado a Objetos: El diseño orientado a objetos es una técnica de programación que se centra en los datos y en las relaciones. Las capacidades orientadas a objetos de Java son las mismas de C++. En Java no existe herencia múltiple, sobrecarga de operadores. Aparecen conceptos de interfaces, serialización y construcciones de GUI. Distribuido: Java posee una extensa biblioteca para tratar protocolos de red (TCP/IP, FTP y HTTP). Manejo fácil de sockets. Fácil invocación a métodos remotos entre objetos distribuidos (RMI, CORBA, EJB, Servicios Web). Una arquitectura específica denominada Java 2 Enterprise Edition. Robusto: Fiable para el cliente y el programador. Mejorado el modelo de punteros. Existen clases que representan las diferentes estructuras de datos (arreglos, listas, árboles, mapas) Seguro: Java está diseñado para entornos distribuidos. Protegidos para ataques como: Desbordar la pila de ejecución (virus), Corromper la memoria (punteros) y L/E de archivos sin permiso (applets) Neutro en su Arquitectura: El compilador genera un archivo neutro denominado bytecode independiente de la arquitectura. La traducción a código objeto se denomina JIT (Just In Time). Modelo adoptado por .NET. Hace más de 20 años Niklaus Wirth con el sistema UCSD Pascal empleaba la misma técnica. ESPOCH FIE - Ing. Jorge Huilca Palacios Página 2 Aplicaciones Empresariales en Java – Programación en Java Adaptable: A diferencia de C y C++ no existen aspectos dependientes de la plataforma. Los tipos primitivos están bien especificados. Las cadenas son Unicode. Ej. Interfaz Gráfico de Usuario utilizando Swing. Interpretado: el intérprete de Java puede ejecutar directamente bytecodes de Java en cualquier máquina a la que se haya adaptado el intérprete. Las herramientas de desarrollo de Java son lentas. Multihilo: Ejecución en múltiples procesadores. No planifica. Deja que el Sistema Operativo lo planifique. Fácil manejo para el desarrollador ERRORES POPULARES DE JAVA Java es una extensión de HTML Yo uso XML así que no necesito de Java Java es un lenguaje de programación fácil de aprender Java llegará a convertirse en un lenguaje de programación universal para todas las plataformas Java tan solo es un buen lenguaje de programación Ahora que existe C#, Java a quedado obsoleto Java es un lenguaje privado, y por tanto habría que evitarlo Todos los programas en Java se ejecutan en una página web JAVA DEVELOPMENT KIT (JDK) Es un software que provee herramientas de desarrollo para la creación de programas en java. En los sistemas Windows sus variables de entorno son: JAVAPATH: es un path completo del directorio donde esta instalado el JDK. CLASSPATH: son las librerias o clases de usuario. PATH: variable donde se agrega la ubicación de JDK Los programas más importantes que se incluyen son: ESPOCH FIE - Ing. Jorge Huilca Palacios Página 3 Aplicaciones Empresariales en Java – Programación en Java Appletviewer: es un visor de applet para generar sus vistas previas,ya que un applet carece de método main y no se puede ejecutar con el programa java. Javac: es el compilador de JAVA. java: es el intérprete de JAVA. javadoc: genera la documentación de las clases java de un programa. ENTORNOS DE DESARROLLO Java funciona en las siguientes plataformas operativas: Solaris, Linux, Windows y Macintosh. Los Entornos de Desarrollo Integrados (IDE) más utilizados en el desarrollo de Java son: Eclipse (www.eclipse.org) Eclipse es un entorno de desarrollo integrado de código abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. Esta plataforma, típicamente ha sido usada para desarrollar entornos de desarrollo integrados (del inglés IDE), como el IDE de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse). Eclipse es también una comunidad de usuarios, extendiendo constantemente las áreas de aplicación cubiertas. Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia de herramientas para VisualAge. Eclipse es ahora desarrollado por la Fundación Eclipse, una organización independiente sin ánimo de lucro que fomenta una comunidad de código abierto y un conjunto de productos complementarios, capacidades y servicios. NetBeans (www.netbeans.org) NetBeans es un entorno de desarrollo, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extender el NetBeans IDE. NetBeans IDE es un producto libre y gratuito sin restricciones de uso. NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio de 2000 y continúa siendo el patrocinador principal de los proyectos. La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulos ESPOCH FIE - Ing. Jorge Huilca Palacios Página 4 Aplicaciones Empresariales en Java – Programación en Java pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software. JDeveloper(www.oracle.com/technology/products/jdev/index.html) JDeveloper es un entorno de desarrollo integrado desarrollado por Oracle Corporation para los lenguajes Java, HTML, XML, SQL, PL/SQL, Javascript, PHP, Oracle ADF, UML y otros. Es un software propietario pero gratuito desde 2005. Las primeras versiones de 1998 estaban basadas en el entorno JBuilder de Borland, pero desde la versión 9i de 2001 está basado en Java, no estando ya relacionado con el código anterior de JBuilder. BlueJ (bluej.org) BlueJ es un entorno integrado de desarrollo (de sus siglas en inglés IDE - Integrated Development Environment) para el lenguaje de programación Java, desarrollado principalmente con propósitos educacionales, pero también es adecuado para el desarrollo de software a pequeña escala. BlueJ fue desarrollado para apoyar la enseñanza y el aprendizaje de la programación orientada a objetos, y como resultado, su diseño difiere de otros entornos de desarrollo. La pantalla principal muestra gráficamente la estructura de clases de una aplicación en desarrollo (en un diagrama muy parecido a UML), y los objetos pueden ser creados y probados interactivamente. Combinado con una interfaz de usuario simple, esta facilidad de interacción permite experimentar de manera fácil con los objetos en desarrollo. Los conceptos de la orientación a objetos (clases, objetos, comunicación a través de llamadas a métodos) son representados visualmente en el diseño de interacción en la interfaz. EJERCICIOS PROPUESTOS No.1 1. 2. 3. Realice la instalación del JDK y del IDE capturando cada una de las pantallas y describiendo las opciones de instalación Realice una investigación sobre las semejanzas y diferencias de los diferentes IDEs de desarrollo Realice una investigación sobre la nueva versión del JDK 7 ESTRUCTURA DE UN PROGRAMA El lenguaje de programación Java es sensible al contexto, es decir respeta mayúsculas y minúsculas. Todo programa en Java vive dentro de una clase. Una clase debe escribirse en Mayúscula la primera letra. El nombre del archivo debe ser el mismo nombre de la clase. El compilador, para iniciar la ejecución, busca al método o función main. Según la Java Language Especification (JLE), el método main se tiene que declarar como public Las llaves {} delimitan un bloque de programación. Toda sentencia termina con punto y coma (;). Se usan las comillas (“ ”) para trabajar con en cadenas de caracteres. Las funciones o métodos emplean el separador punto (.). Aún cuando un método o función no admita parámetros, son necesarios los paréntesis. Los comentarios pueden ser una línea (//) o de varias líneas (/**/). Los comentarios no forma parte del bytecode o ejecutable. ESPOCH FIE - Ing. Jorge Huilca Palacios Página 5 Aplicaciones Empresariales en Java – Programación en Java TIPOS DE DATOS Java es un lenguaje de comprobación estricta de tipos, es decir Java no siempre realiza una conversión automática de los tipos de datos. Java contiene tipos primitivos y avanzados de datos. Entre los tipos primitivos tenemos las siguientes categorías: Enteros, Coma Flotante, Carácter y Lógico. En cada una de las categorías tenemos tipo específicos como se detalla a continuación: Enteros: Números que carecen de parte fraccionaria Tipo byte short int long Tamaño 1 byte 2 bytes 4 bytes 8 bytes Rango -128 hasta 127 -32768 hasta 32767 -2147483648 hasta 2147483647 -9223372036854775808 hasta 9223372036854775807 Coma Flotante: Números con parte fraccionaria. El tipo utilizando en la mayoría de aplicaciones es double Tipo float Tamaño 4 byte double 8 bytes Rango ±3.40282347E+38 6 – 7 cifras decimales ±79769313486231570E+308 15 cifras decimales Caracter – char: Caracteres del UNICODE de 16 bits. UTF-16. Se representa el carácter encerrado entre apóstrofes. Ejm ‘A’ Lógico – boolean: Dos posibles valores: true y false Variables Las variables se declaran ubicando primero el tipo. Se puede tener múltiples declaraciones en una sola línea. Java obliga a inicializar las variables. Se puede declarar las variables en cualquier lugar. Se recomienda ubicar las variables tan cerca del lugar en que se utilice por primera vez. ESPOCH FIE - Ing. Jorge Huilca Palacios Página 6 Aplicaciones Empresariales en Java – Programación en Java Constantes En Java para la declaración de constante se utiliza la palabra final. Para constantes, se acostumbra a poner en MAYUSCULAS. Operadores Aritméticos Operadores aritméticos +,-,*,/ Módulo o residuo % Operadores de Aritmética Binaria: X+=10 equivale a X=X+10 Operadores de incremento y decremento o Prefijo ++i, --i o Sufijo i++, i-- Operadores Relacionales Igualdad == Desigualdad != Y lógico && O lógico || Operadores habituales >,>=,<,<= Operador ternario C1?expresión1:expresión2 Cadenas de Caracteres Son secuencia de caracteres UNICODE, Java no posee un tipo primitivo para representar una cadena de caracteres. Se utiliza la clase String. Las variables u objetos de tipo String poseen los siguientes métodos o funciones: Método length() proporciona el número de caracteres Método charAt(n) extrae un carácter Método substring(inicio,fin-1) extrae una subcadena ESPOCH FIE - Ing. Jorge Huilca Palacios Página 7 Aplicaciones Empresariales en Java – Programación en Java Para la concatenación se utiliza el signo +. No utilice == , != para la comparación entre cadenas. En su lugar utilice los métodos o funciones: Método equals(cadena) comprueba la igualdad Método equalsIgnoreCase(cadena) comprueba la igualdad sin distinción LECTURA DE DATOS Para imprimir un resultado se utiliza println() o print(). Desde JDK 5.0 existe una forma sencilla de lectura de datos utilizando la clase Scanner. La lectura se realiza con nextLine(), next(), nextInt(), etc. Se debe importar el paquete java.util. El paquete java.lang está importado por defecto Scanner in = new Scanner(System.in); String mensaje=in.nextLine(); La clase Scanner no es apropiada para la lectura de claves desde consola. A partir del JDK 6.0 se introduce la clase Console para este propósito. Console cons = System.console(); String username = cons.readLine("User name: "); char[] passwd = cons.readPassword("Password: "); Por motivos de seguridad, se devuelve un arreglo de caracteres en la clave. ESTRUCTURAS CONDICIONALES Se utiliza la sentencia if. La condición debe ir entre paréntesis. Si las sentencias son más de una, utilice los delimitadores de bloque. La sentencia if resulta complicada si tenemos varias opciones. En el switch la opción únicamente es entera If (condición) sentencia else sentencia switch(opcion) { case 1: …break; ESPOCH FIE - Ing. Jorge Huilca Palacios Página 8 Aplicaciones Empresariales en Java – Programación en Java default: …break; } ESTRUCTURAS REPETITIVAS El bucle while ejecuta una sentencia mientras se cumpla la condición. El bucle while hace la comprobación en la parte superior. El bucle do while ejecuta primero la sentencia y después comprueba la condición. while (Condición) sentencia do sentencia while(Condición); El bucle for es un bucle determinado que tiene una iteración controlada. A partir del JDK 5 se presenta otra alternativa para recorrer elementos de una matriz. Se denomina el for each for (inicio;condición;contador) sentencia for(variable:colección) sentencia EXCEPCIONES Cuando un programa Java viola las restricciones semánticas del lenguaje (se produce un error), la máquina virtual Java comunica este hecho al programa mediante una excepción. Muchas clases de errores pueden provocar una excepción, desde un desbordamiento de memoria o un disco duro estropeado hasta un disquete protegido contra escritura, un intento de dividir por cero o intentar acceder a un vector fuera de sus límites. Cuando esto ocurre, la máquina virtual Java crea un objeto de la clase exception o error y se notifica el hecho al sistema de ejecución. Se dice que se ha lanzado una excepción (“Throwing Exception”). Un método se dice que es capaz de tratar una excepción (“Catch Exception”) si ha previsto el error que se ha producido y prevé también las operaciones a realizar para “recuperar” el programa de ese estado de error. En el momento en que es lanzada una excepción, la máquina virtual Java recorre la pila de llamadas de métodos en busca de alguno que sea capaz de tratar la clase de excepción lanzada. Para ello, comienza examinando el método donde se ha producido la excepción; si este método no es capaz de tratarla, examina el método desde el que se realizó la llamada al método donde se produjo la excepción y así sucesivamente hasta llegar al último de ellos. En caso de que ninguno de los métodos de la pila sea capaz de tratar la excepción, la máquina virtual Java muestra un mensaje de error y el programa termina. Manejador de excepciones. Un manejador de excepciones es una porción de código que se va a encargar de tratar las posibles excepciones que se puedan generar. El bloque try. ESPOCH FIE - Ing. Jorge Huilca Palacios Página 9 Aplicaciones Empresariales en Java – Programación en Java Lo primero que hay que hacer para que un método sea capaz de tratar una excepción generada por la máquina virtual Java o por el propio programa mediante una instrucción throw es encerrar las instrucciones susceptibles de generarla en un bloque try. try { BloqueDeIntrucciones } Cualquier excepción que se produzca dentro del bloque try será analizado por el bloque o bloques catch que se verá en el punto siguiente. En el momento en que se produzca la excepción, se abandona el bloque try y, por lo tanto, las instrucciones que sigan al punto donde se produjo la excepción no serán ejecutadas. Cada bloque try debe tener asociado por lo menos un bloque catch. El bloque catch. try { BloqueDeIntrucciones } catch (TipoExcepción nombreVariable) { BloqueCatch } catch (TipoExcepción nombreVariable) { BloqueCatch }… Por cada bloque try pueden declararse uno o varios bloques catch, cada uno de ellos capaz de tratar un tipo u otro de excepción. Para declarar el tipo de excepción que es capaz de tratar un bloque catch, se declara un objeto cuya clase es la clase de la excepción que se desea tratar o una de sus superclases El bloque finally. try { BloqueDeIntrucciones } catch (TipoExcepción nombreVariable) { BloqueCatch } catch (TipoExcepción nombreVariable) { BloqueCatch }… } catch (TipoExcepción nombreVariable) { BloqueCatch } ESPOCH FIE - Ing. Jorge Huilca Palacios Página 10 Aplicaciones Empresariales en Java – Programación en Java finally { BloqueFinally } El bloque finally se utiliza para ejecutar un bloque de instrucciones sea cual sea la excepción que se produzca. Este bloque se ejecutará en cualquier caso, incluso si no se produce ninguna excepción. Sirve para no tener que repetir código en el bloque try y en los bloques catch. EJERCICIOS PROPUESTOS No.2 1. 2. 3. Realice un programa que efectúe un intercambio de variables enteras, sin utilizar una variable temporal Diseñe un programa que permita validar una cédula de identidad a través del dígito verificador Diseñe una aplicación de consola que posea un menú con las siguientes opciones: a. Suma b. Resta c. Multiplicación d. División e. Salir En dependencia de la selección que realice el usuario, se deberá solicitar dos números y realizar la operación respectiva. Incluya bloques controladores de excepciones. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS La programación orientada a objetos POO es un paradigma de programación dominante en estos días, al haber sustituido a las técnicas estructuradas, basadas en procedimientos, que se desarrollaron a principios de la década de 1970. Java es totalmente orientado a objetos. Un objeto es todo aquello que existe en la vida real. Los objetos tienen propiedades y métodos. Las propiedades son las características o atributos de un objeto. Un objeto se construye a partir de una clase. Una clase es la plantilla o plano a partir del cual se crean realmente los objetos. El Encapsulamiento u Ocultamiento de Información permite ocultar la implementación; es decir no nos interesa la implementación interna sino su funcionamiento. Los valores de las propiedades de un objeto se denominan estado. No se puede acceder a los datos de forma directa. Se debe interactuar a través de métodos de acceso (set o asignar y get u obtener). A continuación se detalla la creación de una clase public class Persona { private String nombre; public void setnombre(String pnombre) { nombre=pnombre; } public String getnombre() { ESPOCH FIE - Ing. Jorge Huilca Palacios Página 11 Aplicaciones Empresariales en Java – Programación en Java return nombre; } public void imprimir() { System.out.println(“El Nombre es: ”+nombre); } } Para la creación de un objeto se realiza de la siguiente manera: Persona objeto = new Persona(); Para asignar los datos al objeto se utiliza el siguiente código: objeto.setNombre(“Jorge Huilca”); Para llamar al método imprimir, utilizamos el siguiente código: objeto.imprimir(); Los métodos set y get se denominan métodos de modificación y acceso respectivamente. El método imprimir, en este caso no recibe parámetros ni retorna algún valor. Un ejemplo de un método que retorna parámetros sería: public int calcularTamano() { return(nombre.length()); } La llamada sería: System.out.println(“El tamaño del nombre es: ”+ objeto.calcularTamano()); CONSTRUCTORES Un constructor es un método especial de una clase que tiene las siguientes características: Un constructor tiene el mismo nombre de la clase La clase puede tener más de un constructor Un constructor suele tener cero, uno o más parámetros Un constructor carece de valor proporcionado Los constructores siempre se invocan con el operador new. ESPOCH FIE - Ing. Jorge Huilca Palacios Página 12 Aplicaciones Empresariales en Java – Programación en Java Una clase puede tener uno o varios constructores (sobrecarga de constructores). Lleva el mismo nombre de la clase y se ejecuta al crear un objeto. El constructor solo se puede llamar a través del operador new. public Persona() { //Código } public Persona(String valor) { //Código } Si no se da un valor explícito a un campos en el constructor, ese campo recibe automáticamente un valor predeterminado: los números se ponen a 0, los boolean a false y las referencias a objetos a null. Es una mala práctica de programación recurrir a esto. Un constructor predeterminado o default es un constructor sin parámetros. Si se escribe una clase que carezca por completo de constructores, se nos proporcionará un constructor predeterminado. La palabra reservada this, se refiere al parámetro implícito del método o clase. Sin embargo se lo puede usar dentro de un constructor para llamar a otro constructor. this(nombre,valor) Como Java posee un mecanismo de recolección automática de basura, no se necesita una liberación manual de la memoria, por tanto no se admite destructores. Sin embargo, hay objetos que utilizan recursos distintos de memoria como los ficheros, base de datos, sockets, etc. En este caso es importante que ese recurso se libere y recicle cuando ya no es necesario. A todas las clases se les puede añadir un método llamado finalize. Este método será invocado antes que el recolector de basura descarte el objeto. Esta técnica no es 100% confiable. Es mejor crear métodos personalizados de cierre de recurso que haga esta tarea. METODOS PRIVADOS Cuando implementamos una clase, hacemos privados todos los campos de datos porque los datos públicos son peligrosos. La mayoría de los métodos son públicos, los métodos privados se utilizan en ciertas circunstancias. Para esto se utiliza el modificador de acceso private. CAMPOS FINALES Los campos de una clase se pueden definir como final. Estos campos deben recibir valor inicial por única vez. Se utiliza en campos de tipo primitivo o en clases inmutables. private final int IVA=12; CAMPOS Y MÉTODOS ESTÁTICOS Campos Estáticos ESPOCH FIE - Ing. Jorge Huilca Palacios Página 13 Aplicaciones Empresariales en Java – Programación en Java Si se define a un campo como static, estará disponible desde cualquier lugar del proyecto. A los campos estáticos también se los conoce como campos de clase. public static int sueldo=240; Para utilizar el campo lo haremos de la siguiente forma: System.out.println(Clase.sueldo); Constantes Estáticas Los campos estáticos son poco frecuentes. Sin embargo las constantes static aparecen mayormente en las aplicaciones. public static final double PI=3.141592 Tal como se ha indicado, nunca es buena idea tener campos públicos, ya que todo el mundo puede modificarlos. Sin embargo, las constantes públicas son correctas. Métodos Estáticos Los métodos estáticos no operan sobre objetos. Se utilizan en dos situaciones: Cuando un método no necesita acceder al estados de un objeto, porque todos los parámetros se proporcionan de forma explícita. Cuando el método solo necesita acceder a campos static EJERCICIOS PROPUESTOS No.3 1. Realice el modelado del siguiente problema e implemente las clases, propiedades y métodos respectivos: Un club de fútbol desea crear un sistema que permita gestionar la organización del club. El club está compuesto por los socios, los jugadores, los directivos y el personal. Teniendo en cuenta que, por ejemplo, un jugador podrá ser a la vez jugador y socio. De los jugadores se desea almacenar el nombre y el sueldo, de los socios el número de socio, y de los directivos el puesto que ocupan. Una persona que pertenezca al personal podrá ser técnico, administrativo o de limpieza. También es necesario conocer qué directivo es actualmente el director del club. Los jugadores juegan partidos, y en cada partido cada jugador puede recibir una prima (que puede ser diferente para cada jugador aunque se trate del mismo partido). El club también quiere controlar quién arbitra los partidos al club. Para ello se desea guardar los árbitros para cada partido y a qué federación autonómica pertenecen. Los árbitros podrán ser árbitros principales o jueces de línea. Es necesario tener en cuenta que en cada partido sólo podrá arbitrar un solo árbitro por federación autonómica, aunque un mismo árbitro podrá arbitrar varios partidos al club HERENCIA Se puede crear nuevas clases tomando como base clases ya existentes. Concepto de reutilización de código. La herencia utiliza la palabra extends. Superclase, clase base o clase padre. Subclase, clase derivada o clase hija. public class Padre { //Propiedades del Padre //Métodos del Padre } ESPOCH FIE - Ing. Jorge Huilca Palacios Página 14 Aplicaciones Empresariales en Java – Programación en Java public class Hijo extends Padre { //Propiedades del Hijo //Métodos del Hijo } Los métodos generales deben ir en el padre. Los más específicos en los hijos. Es posible invalidar los métodos del padre (Override - Sobreescritura). Se puede utilizar el constructor del padre con la palabra super. No se puede eliminar propiedades y métodos heredados. CLASES FINALES En ocasiones es necesario impedir que un método sea invalidado. Se puede evitar la herencia utilizando la palabra final. Este mecanismo asegura que no se pueda invalidar los métodos de la clase padre. public final class Padre { //Propiedades de la clase final //Métodos de la clase final } CLASES ABSTRACTAS Algunas clases son muy generales que resulta innecesario crear objetos. Para bloquear la creación de instancias, se utiliza la palabra abstract. Las clases abstractas deben tener propiedades y métodos concretos. Se puede crear métodos abstractos. Estos no deben ser implementados. Toda clase que posea uno o más métodos abstractos, tiene que declararse como abstracta. Actúan como reserva de espacio. Si no se implementa estos métodos en la subclase, entonces es abstracta. public abstract class Padre { //Propiedades de la clase abstracta //Métodos de la clase abstracta } INTERFACES Una característica adicional de la orientación a objetos es el uso de plantillas de implementación de clases, llamadas contratos o interfaces. En las interfaces se define los métodos con sus respectivos parámetros pero no se implementa. El código correspondiente al método se lo hará en la clase que quiera implementar la interfaz. Es decir en la definición de la clase que quiera cumplir el contrato se deberá indicar que interfaz implementará. Esta clase deberá implementar todo los métodos que correspondan al contrato. ESPOCH FIE - Ing. Jorge Huilca Palacios Página 15 Aplicaciones Empresariales en Java – Programación en Java public interface Animal { public void Dormir(); public int Comer(int cantidad); } public class Gato implements Animal { public void Dormir() { //Cuerpo del Programa Dormir } public int Comer(int cantidad) { //Cuerpo del Programa Comer } } COLECCIONES A menudo nos encontramos que necesitamos funciones para manipular datos más sofisticados que las que puede ofrecer las matrices. Las matrices tienen longitud fija. Las colecciones se encuentran dentro del paquete java.util, y nos permiten organizar mejor nuestros datos. Una colección es un objeto que representa a un grupo de objetos. Contiene un marco de trabajo de colecciones, el mismo es una arquitectura estándar de manipulación. Reemplazo de las Estructuras de Datos. Existen distintos tipos de colecciones: Conjuntos (java.util.Set) Listas (java.util.List) Mapas (java.util.Map) CONJUNTOS Es la colección más simple. Es un grupo de objetos agrupados, sin ningún orden particular. Las clases de colección que implementan esta interfaz son: HashSet y TreeSet LISTAS ESPOCH FIE - Ing. Jorge Huilca Palacios Página 16 Aplicaciones Empresariales en Java – Programación en Java Es una colección en la que los objetos se organizan secuencialmente, con un principio y un final. Es una colección ordenada. Una matriz es una lista fija. Las listas pueden aumentar y disminuir su tamaño libremente. Las listas incluyen las pilas y colas. Las pilas son listas en las que los nuevos objetos se incluyen e eliminan al final de la lista LIFO (last in first out). Las colas llevan un mecanismo FIFO (first in first out), es decir los nuevos objetos se anaden al final de la lista, mientras que los objetos que tienen que eliminarse de la lista se toman siempre al principio de ésta. Las clases de colección que implementan esta interfaz son: Vector, Stack, ArrayList y LinkedList. MAPAS Los objetos se almacenan de dos en dos. Uno de los objetos del par contiene la información que queremos almacenar en la colección y el otro objeto se denomina keys. El valor de la clave únicamente identifica al par, de forma muy parecida a cómo el índice de un elemento de una matriz únicamente identifica al elemento. A diferencia de un índice, una clave no tiene por qué ser un número entero; puede ser cualquier tipo de objeto. No puede haber claves repetidas en el mapa. Cuando queremos recuperar información almacenada en un par de objetos, ubicaremos dicho par buscando el valor apropiado de la key. Las clases de colección que implementan esta interfaz son: HashTable, TreeMap, HashMap y WeakHashMap. EJERCICIOS PROPUESTOS No.4 Realice el modelado del siguiente escenario e implemente orientado a objetos: En una empresa existen tres tipos de funcionarios: Directivos, Empleados y Trabajadores. Los datos de los funcionarios son: Cedula, Nombres, Apellidos, Dirección y Edad. Los funcionarios adicionalmente poseen el sueldo básico definido por el gobierno nacional y que este puede variar. Los Directivos adicionalmente a su sueldo perciben un bono de responsabilidad dependiendo de su jerarquía. Los Empleados se les pagan un valor fijo por cada carga familiar, hasta 6 cargas en total. Los Trabajadores, reciben un valor fijo por cada año de antigüedad en la empresa. Es necesario modelar el sistema tomando en cuenta criterios de orientación a objetos y calcular el sueldo total a recibir mensualmente por el funcionario. ESPOCH FIE - Ing. Jorge Huilca Palacios Página 17