Programación Orientada a Objetos Introducción a Java Angela Carrillo Ramos Java: Lenguaje de Programación ¿Por qué surge un lenguaje? Para adaptarse a los cambios de entorno y usos: usos: Independencia de la plataforma Implantar refinamientos y mejoras a la programación:: POO e Internet programación 2 1 JAVA: Lenguaje de Programación •Lenguaje Orientado por Objetos •Simple, Poderoso y Fácil de aprender •Robusto •Interactivo •Arquitectura neutral •Interpretado y de alto desempeño •Distribuido (concurrencia) y Dinámico •Admite el modelo cliente/Servidor 3 JAVA: Lenguaje de Programación Seguro Tiene el Java Security Manager el cual limita el programa Java a un entorno de ejecución Java Portabilidad La compilación produce Código Binario (bytecode) bytecode) que es interpretado por la máquina virtual de Java (JVM) El intérprete se implementa en cada plataforma.. plataforma 4 2 JAVA: Lenguaje de Programación Robusto Fuertemente tipado y hace validaciones en tiempo de compilación y de ejecución Manejo de memoria (Recolector de Basura) Manejo de condiciones excepcionales (excepciones) Simple No maneja apuntadores No herencia múltiple. múltiple. No hay sobrecarga de operadores 5 JAVA: Lenguaje de Programación O.O Todo es objeto (excepto tipos básicos) Superclase Object JNI (Java Native Interface) Es un API que permite a la JVM llamar aplicaciones y librerías escritas en otros lenguajes.. Se crean DLL. lenguajes DLL. Escribir métodos en C/C++ u otros lenguajes Llamar métodos JAVA desde otro lenguaje 6 3 Aplicaciones y Applets Aplicación:: Aplicación Programa que se ejecuta en el computador utilizando el Sistema Operacional de ese computador Applet:: Applet Aplicación diseñada para ser transmitida por internet y ejecutada en un navegador compatible con JAVA. JAVA. Reacciona ante eventos producidos por usuarios.. usuarios 7 JDK: Java Development Kit •CLASSPATH •Directorios: bin, demo, docs, include, lib, src •Compilador de Java javac •Intérprete de Java java, appletviewer •Depurador de código dbx, jdb •Generación de documentación javadoc /** */ 8 4 JDK: Java Development Kit CLASSPATH Especifica dónde buscar las clases de JAVA durante tiempo de compilación y ejecución Se coloca como una variable más del autoexec..bat autoexec 9 JAVA: Lenguaje de Programación CLASSPATH (continuación) Ej Ej.. Si tiene como valores: valores: C:/jdk/lib /jdk/lib;;C:/misclases y necesitamos buscar el archivo POO POO..class en el paquete javeriana javeriana..sistemas. sistemas.pregrado la búsqueda que se hace es: es: C:/jdk/lib/javeriana/sistemas/pregrado/POO. /jdk/lib/javeriana/sistemas/pregrado/POO.class C:/misclases/javeriana/sistemas/pregrado/POO. /misclases/javeriana/sistemas/pregrado/POO.class ./javeriana/sistemas/pregrado/POO /javeriana/sistemas/pregrado/POO..class 10 5 Máquina Virtual de JAVA (JVM) DOS Archivo Ejecutable Código Fuente Compilado r Linker 01010101 01010101 11111000 Programa en ejecución UNIX Programa en ejecución WINDOWS Librerías Otros Lenguajes de Programación 11 Máquina Virtual de JAVA (JVM) DOS Archivo de Clase Código Fuente 01010101 01010101 11111000 Compilado r de Java javac Programa en ejecución UNIX Programa en ejecución WINDOWS Otros archivos de clase Máquina virtual de JAVA 12 6 Máquina Virtual de JAVA (JVM) Problemas de Seguridad Negación del servicio Invasión de privacidad Robo de datos Modificación del sistema ... 13 Máquina Virtual de JAVA (JVM) •Seguridad •Protecciones a nivel de Lenguaje •A nivel de JVM •SandBox (para Applets) •Cargador de Clase (Java Class Loader) •Verificador del código de Byte (Java Class Verifier) 14 7 Máquina Virtual de JAVA (JVM) INTERNET Clases Applet HTML Navegado r WEB Cargador de Clase Verificador de código byte Máquina Virtual de JAVA Administrador de Seguridad 15 Archivo JAR Formas independientes de la plataforma para empaquetar archivos .class, class, html, html, sonido u otros componentes de applets o aplicaciones en un paquete simple que puede ser bajado en una sola transferencia al cliente. cliente. <applet code=“ code=“archivo archivo..class” class” archive=“arch. archive=“arch.jar, arch2 arch 2.jar” width = 100 height= height= 150> 150> 16 8 Archivo JAR •Forma eficaz de distribuir applets así como aplicaciones y JavaBeans •Archivo manifest (contenido del archivo JAR) •Ventajas •Mejoran la eficacia de las descargas •Mejoran el almacenamiento de archivos •Mejoran la seguridad •Son independientes de la plataforma (pkzip) •Son compatibles con versiones antiguas •Son extensibles 17 Archivo JAR •Creación: Utilidad jar jar <opciones> <archivo.jar><archivos> 18 9 Paquetes •Colección de clases relacionadas •Agrupación lógica de un conjunto de clases. •Son almacenados de manera jerárquica. •Para utilizar parcial o totalmente las clases de un paquete se utiliza: import nompaquete; •Para asociar una clase a un paquete: package nompaquete; 19 Paquetes del núcleo de Java •java.applet Clase applet de JAVA •java.awt Componentes de GUI •java.io Servicios generales de Comunicaciones •java.lang Clases integradas de JAVA •java.math Matemática •java.net Servicios de red •java.rmi Invocación de métodos remotos •java.security Mecanismos de seguridad •java.sql Manejo de Bases de Datos •java.text Manejo de Texto •java.util Clases de servicio 20 10 Interfaces Mecanismo mediante el cual se puede definir la forma general de una clase garantizando que todas las versiones específicas de esa clase amplíen el mismo conjunto de Reglas Reglas.. Proporciona polimorfismo Una clase que implemente una interface debe implementar todos sus métodos (deben ser públicos). públicos). De lo contrario se convierte en clase abstracta. abstracta. 21 Comparación con C++ •Aprovecha los puntos fuertes de C++ •Utilización de tipos estrictos •Conversión de tipos hacia arriba •Conversión de tipos hacia abajo •Orientación a objetos •Constructores •Familiaridad de la sintaxis •Especificadores de acceso (public, protected, private) •Declaración de constantes •Verificación de tipos durante ejecución •Control de errores mediante excepciones 22 11 Comparación con C++ •Superación de la limitaciones de C++ •Inicialización predeterminada (NULL) •Unicode nativo •Utilización de nombres globales (todo es objeto) •Verificación de los límites de un arreglo en ejecución •Paquete genérico de contenedoras •Uso de paquetes •Multi-hilos •Clase Object 23 Comparación con C++ Lo que no tiene de C++ Destructores Sobrecarga de operadores Herencia Múltiple Apuntadores Clases amigas Templates (a partir de la 1.5) 24 12