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: Independencia de la plataforma Implantar refinamientos y mejoras a la programación: POO e Internet 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) que es interpretado por la máquina virtual de Java (JVM) 4 El intérprete plataforma. se implementa en cada 2
JAVA: Lenguaje de Programación Robusto Fuertemente tipado y hace validaciones en tiempo de compilación y de ejecución 5 Manejo Basura) de Manejo de (excepciones) memoria condiciones Simple No maneja apuntadores No herencia múltiple. (Recolector No hay sobrecarga de operadores de excepcionales 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. Escribir métodos en C/C++ u otros lenguajes Llamar métodos JAVA desde otro lenguaje 6 3
Aplicaciones y Applets Aplicación: Programa que se ejecuta en el computador utilizando el Sistema Operacional de ese computador Applet: Aplicación diseñada para ser transmitida por internet y ejecutada en un navegador compatible con JAVA. Reacciona ante eventos producidos por 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 9 JAVA: Lenguaje de Programación CLASSPATH (continuación) Ej. Si tiene como valores: C:/jdk/lib;C:/misclases y necesitamos buscar el archivo POO.class en el paquete javeriana.sistemas.pregrado la búsqueda que se hace es: C:/jdk/lib/javeriana/sistemas/pregrado/POO.class C:/misclases/javeriana/sistemas/pregrado/POO.classclass./javeriana/sistemas/pregrado/POO.class 10 5
Máquina Virtual de JAVA (JVM) DOS Código Fuente Compilado r Linker Archivo Ejecutable 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 Código Fuente Compilado r de Java javac Archivo de Clase 01010101 01010101 11111000 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 HTML Navegado r WEB Clases Applet 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, html, sonido u otros componentes de applets o aplicaciones en un paquete simple que puede ser bajado en una sola transferencia al cliente. <applet code= = archivo.class archive= arch.jar, arch2.jar width = 100 height= 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. Proporciona polimorfismo Una clase que implemente una interface debe implementar todos sus métodos (deben ser públicos). De lo contrario se convierte en clase 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