Download Apuntes Unidades 1 y 2
Document related concepts
no text concepts found
Transcript
Introducción a la Programación en Java Unidad I Conceptos Básicos de la Programación Orientada a Objetos 1.1 Paradigma de la Programación Orientada a Objetos Paradigma. Según el Diccionario de la Real Academia de la Lengua Española, paradigma se define como “Cada uno de los esquemas formales en que se organizan las palabras nominales y verbales para sus respectivas flexiones.” . En el ámbito de la programación paradigma es una técnica de programación. Paradigma de la Programación Estructurada En los años sesenta, Edsger Dijkstra demostró que todo programa podía escribirse correctamente combinando tres bloques de control: bloques secuenciales, el bloque de selección if y el bloque de repetición. En la programación estructurada un problema se divide en tareas más pequeñas llamadas procesos, los cuales se pueden distribuir varios programadores para llegar a una solución de forma rápida y eficiente. La programación estructurada es un mecanismo para hacer programas más comprensibles, evitando hacer saltos de una parte del programa a otra, lo que facilita la lectura del código en forma continua. Entrada de Datos Datos parciales Datos Parciales La Programación estructurada se concentra en las acciones que controlan el flujo de datos. Paradigma de la Programación Orientada a Objetos Es un modelo de programación cuya idea principal es mediante descomponer un problema en entidades de software llamadas objetos. La Programación Orientada a Objetos trata de aproximar la programación a la vida real. Nombre Linea Atributos Tamaño Orientación Tipo Color Grosor Métodos Dibujar Borrar Rotar Mover La POO se centra en la interrelación que existe entre los datos y las acciones. Comparación entre Programación Estructurada y Programación Orientada a Objetos Tradicionalmente el código y los datos se han mantenido separados. Por ejemplo, en lenguaje C, a los bloques de código se le conoce como funciones, mientras a las unidades de datos se les conoce como estructuras; en C, las funciones y las estructuras no están formalmente conectadas. Una función en C puede operar sobre más de un tipo de estructura y más de una función puede operar sobre la misma estructura. En la programación orientada a objetos el código y los datos estan fusionadas en algo indivisible: un objeto. En la POO los datos son tratados como elementos críticos y no fluyen libremente, sino que se limitan a las funciones donde operan, lo que los protege de una modificación accidental. Ing. Alma Leticia Palacios Guerrero 3 Introducción a la Programación en Java Ventajas de la Programación Orientada a Objetos. • Los datos estan encapsulados y no pueden ser accesados por funciones externas al objeto. • Los objetos pueden comunicarse entre sí a través de funciones. • Pueden agregarse nuevos datos y funciones fáilmente cuando se requiera. 1.2 Conceptos Básicos de Programación Orientada a Objetos. Clase: Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables y métodos o funciones miembro. La clase es el patrón o modelo para crear objetos. Objeto: Es un paquete de variables y métodos relacionados. Los objetos en software frecuentemente son la abstracción de las propiedades y comportamientos de una entidad del mundo real. Mensaje: Los mensajes son simples llamadas a las funciones o métodos del objeto con el se quiere comunicar para decirle que haga cualquier cosa. Herencia: La herencia permite que se pueden definir nuevas clases basadas en clases existentes, lo cual facilita reutilizar código previamente desarrollado. Si una clase deriva de otra (extends) hereda todas sus variables y métodos. La clase derivada puede añadir nuevas variables y métodos y/o redefinir las variables y métodos heredados. En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólo puede derivar de una única clase, con lo cual no es posible realizar herencia múltiple en base a clases. Encapsulación: Es el proceso de ocultar todos los detalles de un objeto que no contribuyen a sus características esenciales. Esto significa que aquello que está en interior de la clase está oculto, solo las [1] interfaces externas pueden ver otros objetos. Polimorfismo: Es una propiedad que permite enviar el mismo mensaje a objetos de diferentes clases, de forma que cada uno de ellos responde a ese mismo mensaje de modo distinto dependiendo de su [1] implementación. Interface: Una interface es un conjunto de declaraciones de funciones. Si una clase implementa una interface, debe definir todas las funciones especificadas por la interface. Una clase puede implementar más de una interface, representando una forma alternativa de la herencia múltiple. A su vez, una interface puede derivar de otra o incluso de varias interfaces, en cuyo caso incorpora todos los métodos de las interfaces de las que deriva. Package: Un package (paquete) es una agrupación de clases Ing. Alma Leticia Palacios Guerrero 4 Introducción a la Programación en Java Unidad 2. Introducción a Java 2.1 Historia de Java Java inició su vida bajo un nombre y un propósito diferente a los actuales. El lenguaje de programación original fue escrito para aparatos electrodomésticos como tostadores, hornos de microondas, etc. A principios de los 90’s la incorporación de los microprocesadores a los objetos de la vida diaria, fue vista como el inicio de una nueva era. En 1991 Sun MicroSystems fundó un proyecto de investigación interno llamado “Green”. El equipo de Green, encabezado por James Gosling, rápidamente se dio cuenta de que lenguajes como C y C++ no eran adecuados para la gama de tareas que los dispositivos necesitaban ejecutar. Uno de los problemas anticipados por “Green” era la dificultad de proveer software para nuevos dispositivos ya que cada vez que aparecía un nuevo chip, se tenía que recompilar el programa escrito en C o C++ para el chip en particular. A mediados de 1991, James Gosling empezó a trabajar en un nuevo lenguaje apropiado, el nombró al lenguaje “Oak” (Roble) por un roble que veía desde su oficina en Sun. Gosling diseñó el nuevo lenguaje para ser pequeño, confiable e independiente de arquitectura. El equipo de desarrollo fue incorporado a la nueva compañía FirstPerson. Desafortunadamente, FirstPerson, se vió en una serie de dificultades principalmente porque el mercado para el consumo de dispositivos electrónicos inteligentes no estaba desarrollado como lo había anticipado Sun La liberación de NCSA Mosaic y la explosión de la World Wide Web en 1993 salvaron el proyecto. Los desarrolladores de OAK vieron que un lenguaje de arquitectura neutral sería ideal para programar en Internet porque el programa podría correr en cualquier parte. Los desarrolladores hicieron cambios menores al diseño y cambiaron el nombre a “Java”. Habiendo desarrollado Java para productos electrónicos de consumo este resultó ser un lenguaje robusto. Cuando el equipo de Java decidió que sería particularmente apropiado para Internet debido a su independencia de plataforma, agregaron funciones para el manejo de red. Así fue como Java se convirtió en la nueva elección de lenguaje para desarrollar aplicaciones cliente/servidor o de red. Sun anunció formalmente Java en la conferencia SunWorld en mayo de 1995. Inmediatamente generó interés porque no era un lenguaje académico como Pascal ni diseñado por un pequeño grupo para uso local como C o C++. Ing. Alma Leticia Palacios Guerrero 5 Introducción a la Programación en Java 2.2. Características de Java Sun describe Java como un lenguaje simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutral, portable, de alto desempeño y multihilos. Cada una de estas palabras es una característica del lenguaje Java. Mientras muchas de estas características pueden usarse para describir otros lenguajes, esta combinación en particular es única en Java y su ambiente. Simple: Se dice que Java es simple porque aunque tiene todas las características de un lenguaje potente, descarta las características menos usadas y más confusas de éstos. C y C++ son lenguajes muy conocidos, por eso Java se diseñó para ser parecido a C++ y así facilitar su aprendizaje. En Java no es necesario liberar memoria, no se usan la aritmética de punteros, las referencias, registros, definición de tipos (typedef) ni macros. Orientado a objetos: Desde el punto de vista del usuario la orientación a objetos no cambia nada. Al correr un programa no importa si está escrito en programación convencional o en lenguaje orientado a objetos. Pero si se está acostumbrado a programar en lenguajes convencionales como Pascal y C, entonces “orientado a objetos” significa que serán necesarios mayores ajustes en la planeación e implementación de las aplicaciones. Este ajuste es probablemente la parte más díficil en el aprendizaje de Java. Distribuido: Java viene con una completa biblioteca de aplicaciones de red que facilita al programador el trabajar con protocolos desde bajo nivel como TCP/IP (Transport Control Protocol and Internet Protocol) o alto nivel como HTTP (Hyper Text Transfert Protocol) y FTP (File Transfer Protocol). Interpretado. La ejecución de un programa en Java pasa a través de dos fases. 1. El compilador de java convierte el código fuente en un tipo de lenguaje de bajo nivel llamado bytecode. 2. Para correr el programa se usa un interprete que ejecuta el bytecode compilado. Este interprete es conocido como la JVM (Java Virtual Machine). Compilador Intérprete Robusto: Java no solo verifica el código para encontrar problemas en tiempo de compilación, también busca errores que se puedan presentar en tiempo de ejecución. La comprobación de tipos en Java ayuda a detectar errores, lo antes posible, en el ciclo de desarrollo. Entre otras cosas proporciona la comprobación de punteros, límites de arreglos, y manejo de excepciones, etc. Seguro: Debido a que Java fue diseñado para correr en un ambiente de red tienes restricciones de seguridad. Además durante la ejecución el intérprete usa un mecanismo para verificar que el bytecode cargado a través de la red no viola ninguna restricción del lenguaje Java. Ing. Alma Leticia Palacios Guerrero 6 Introducción a la Programación en Java Multihilos: En la actualidad muchas aplicaciones permiten al usuario realizar múltiples tareas en forma simultánea. La capacidad para ejecutar varios procesos al mismo tiempo se conoce como multihilo. Java proporciona paquetes para implementar y aplicaciones multihilo. Dinámico. Java es un lenguaje dinámico porque puede adaptarse a un ambiente cambiante y en desarrollo. Java no intenta conectar todos los módulos que conforman una aplicación hasta el tiempo de ejecución. Las librerías nuevas o actualizadas no paralizarán las aplicaciones actuales Arquitectura Neutral : La internet es la composición de muchas computadoras interconectadas con procesadores y sistemas operativos diferentes. Java fue desarrollado con la meta de ser capaz de correr en cualquier tipo de computadora sin tener que recompilar el código. Por esta razón, cuando se compila un programa fuente de Java, el resultado no es un código nativo sino un bytecode de arquitectura neutral de bajo nivel que representa los datos en un formato independiente de la máquina objeto. El interprete de Java puede más tarde, leer este bytecode y traducirlo a llamadas de sistema dependientes de máquina. Esta combinación de características es la razón por la que las aplicaciones de Java pueden correr en cualquier computadora que implementa la Java Virtual Machine. Compilador Intérprete Intérprete Intérprete Portable: Ser de arquitectura neutral es sólo una parte de ser portable. Java además implementa otros estándares de portabilidad para facilitar el desarrollo, por ejemplo los enteros son siempre de 32 bits, la construcción de interfaces de usuarios se realiza utilizando las clases del paquete awt (abstract window toolkit) de forma que las ventanas puedan ser implantadas en cualquier entorno. . Ing. Alma Leticia Palacios Guerrero 7 Introducción a la Programación en Java 2.3. Componentes de Java La plataforma de Java tiene dos componentes: La máquina virtual de Java y el API de Java. El API (Application Programming Interface) es un conjunto de componentes de software, está agrupado en paquetes o librerías de clases. programa.java API de Java Máquina Virtual de Java Plataforma de Hardware 2.4 Tipos de Programas en Java Los tipos de programas más comunes en Java son los applets y las aplicaciones standalone. Applet: Es un programa que se apega a ciertas convenciones que le permiten correr en un browser habilitado para Java. Aplicación Standalone: Es un programa independiente que corre directamente en plataforma Java. Ing. Alma Leticia Palacios Guerrero 8