lunes, 20 de julio de 2009

email

link a www.gmail.com

Mapa Mental

Este mapa conceptual presenta los conceptos fundamentales de la Programación Orientada a Objetos 

Programación Orientada a Objetos

Introducción

El análisis y diseño Orientado a Objetos, es un paradigma desarrollado con la intención de resolver un sin número de problemas, inclusive la programación de sistemas computacionales. Es un concepto relativamente nuevo que emplea lo mejor de la programación estructurada clásica y le añade una funcionalidad mayor, dado que divide la complejidad de un sistema entero en pequeños módulos manejables y reutilizables gracias a un método conocido como abstracción. Muchos lenguajes modernos como el C++ y Java toman ventaja del OOP.

El OOP modela a los sistemas (sean basados en software o no) tratándolos como una serie de objetos que interactúan entre sí, de forma muy similar a como la gente común ve su medio ambiente.

Supongamos el siguiente ejemplo: Un programador de camino a su trabajo entra a una cafetería, ordena un café, se sienta, se lo toma y continúa su camino. La cafetería, el café, la mesa, la silla, el programador, etc., son ejemplos de posibles objetos. Más aún, cada uno de ellos poseen características que los identifican: La cafetería puede estar abierta o cerrada, el café puede ser pequeño, mediano o grande y tener un precio específico, las mesas pueden estar disponibles o no disponibles, etc.

Ciclo de elaboración de programas en Java

El ciclo de creación de un programa en Java comprende los siguientes pasos:

  • Generación el código fuente: Los códigos fuente Java pueden capturarse usando el editor de texto de su preferencia (como el Bloc de Notas de Windows). Su extensión deberá ser .java y su nombre tendrá que coincidir exactamente con el de la clase que esté conteniendo.

  • Compilación del código fuente: Para compilar un código Java basta con posicionarse en la ruta en donde se encuentra el compilador e invocarlo mediante la sentencia: javac nombredearchivo.java. El resultado será un archivo binario altamente optimizado interpretable por la JVM (conocido popularmente como bytecode) con extensión .class.

  • Ejecución del bytecode: Para ejecutar un programa de Java se necesita invocar a la JVM mediante la sentencia: java nombredearchivoclase. Dado que el resultado de la compilación de un programa en Java no es un código ejecutable directamente por la plataforma de nuestro equipo, se dice que Java es un lenguaje interpretable.

Componentes del J2SDK Estandar Edition

Sun microsystems provee una versión gratuita de su kit de desarrollo estándar de Java para plataformas Solaris, Linux y Windows conocida como J2SDK SE que incluye principalmente:

  • El ambiente en tiempo de ejecución Java (Java Runtime Environment), constituido de la Máquina Virtual de Java (Java Virtual Machine) para la plataforma elegida y la Librería de Clases de Java (Java Class Library) o API (Application Program Interface).

  • El compilador de Java.

Entorno de desarrollo de Java

Existen distintos programas comerciales que permiten desarrollar código Java. La compañía Sun,

creadora de Java, distribuye gratuitamente el Java(tm) Development Kit (JDK). Se trata de un conjunto de programas y librerías que permiten desarrollar, compilar y ejecutar programas en Java. Incorpora además la posibilidad de ejecutar parcialmente el programa, deteniendo la ejecución en el punto deseado y estudiando en cada momento el valor de cada una de las variables (con el denominado Debugger). Cualquier programador con un mínimo de experiencia sabe que una parte muy importante (muchas veces la mayor parte) del tiempo destinado a la elaboración de un programa se destina a la detección y corrección de errores. Existe también una versión reducida del JDK, denominada JRE (Java Runtime Environment) destinada únicamente a ejecutar código Java (no permite compilar).


Los IDEs (Integrated Development Environment), tal y como su nombre indica, son entornos de desarrollo integrados. En un mismo programa es posible escribir el código Java, compilarlo y ejecutarlo sin tener que cambiar de aplicación. Algunos incluyen una herramienta para realizar Debug gráficamente, frente a la versión que incorpora el JDK basada en la utilización de una consola (denominada habitualmente ventana de comandos de MS-DOS, en Windows NT/95/98) bastante difícil y pesada de utilizar. Estos entornos integrados permiten desarrollar las aplicaciones de forma mucho más rápida, incorporando en muchos casos librerías con componentes ya desarrollados, los cuales se incorporan al proyecto o programa. Como inconvenientes se pueden señalar algunos fallos de compatibilidad entre plataformas, y ficheros resultantes de mayor tamaño que los basados en clases estándar.


El compilador de Java


Se trata de una de las herramientas de desarrollo incluidas en el JDK. Realiza un análisis de sintaxis del código escrito en los ficheros fuente de Java (con extensión *.java). Si no encuentra errores en el código genera los ficheros compilados (con extensión *.class). En otro caso muestra la línea o líneas erróneas. En el JDK de Sun dicho compilador se llama javac.exe. Tiene numerosas opciones, algunas de las cuales varían de una versión a otra. Se aconseja consultar la documentación de la versión del JDK utilizada para obtener una información detallada de las distintas posibilidades.


La Java Virtual Machine


La existencia de distintos tipos de procesadores y ordenadores llevó a los ingenieros de Sun a la conclusión de que era muy importante conseguir un software que no dependiera del tipo de procesador utilizado. Se planteó la necesidad de conseguir un código capaz de ejecutarse en cualquier tipo de máquina. Una vez compilado no debería ser necesaria ninguna modificación por el hecho de cambiar de procesador o de ejecutarlo en otra máquina. La clave consistió en desarrollar un código “neutro” el cual estuviera preparado para ser ejecutado sobre una “máquina hipotética o virtual”, denominada Java Virtual Machine (JVM). Es esta JVM quien interpreta este código neutro convirtiéndolo a código particular de la CPU utilizada. Se evita tener que realizar un programa diferente para cada CPU o plataforma.


La JVM es el intérprete de Java. Ejecuta los “bytecodes” (ficheros compilados con extensión *.class) creados por el compilador de Java (javac.exe). Tiene numerosas opciones entre las que destaca la posibilidad de utilizar el denominado JIT (Just-In-Time Compiler), que puede mejorar entre 10 y 20 veces la velocidad de ejecución de un programa.

Las variables PATH y CLASSPATH

El desarrollo y ejecución de aplicaciones en Java exige que las herramientas para compilar (javac.exe) y ejecutar (java.exe) se encuentren accesibles. El ordenador, desde una ventana de comandos de MS-DOS, sólo es capaz de ejecutar los programas que se encuentran en los directorios indicados en la variable PATH del ordenador (o en el directorio activo). Si se desea compilar o ejecutar código en Java, el directorio donde se encuentran estos programas (java.exe y javac.exe) deberá encontrarse en el PATH. Tecleando PATH en una ventana de comandos de MS-DOS se muestran los nombres de directorios incluidos en dicha variable de entorno.


Java utiliza además una nueva variable de entorno denominada CLASSPATH, la cual determina dónde buscar tanto las clases o librerías de Java (el API de Java) como otras clases de usuario. A partir de la versión 1.1.4 del JDK no es necesario indicar esta variable, salvo que se desee añadir conjuntos de clases de usuario que no vengan con dicho JDK. La variable CLASSPATH puede incluir la ruta de directorios o ficheros *.zip o *.jar en los que se encuentren los ficheros *.class. En el caso de los ficheros *.zip hay que observar que los ficheros en él incluidos no deben estar comprimidos. En el caso de archivos *.jar existe una herramienta (jar.exe), incorporada en el JDK, que permite generar estos ficheros a partir de los archivos compilados *.class. Los ficheros *.jar son archivos comprimidos y por lo tanto ocupan menos espacio que los archivos *.class por separado o que el fichero *.zip equivalente.


Los productos de la tecnología Java

Sun Microsystems provee una línea completa de productos para crear programas con tecnología Java:

  • J2SE (Java 2 Platform, Standard Edition): Usada para desarrollar applets, aplicaciones orientadas a Web y programas de usuario final.

  • J2EE (Java 2 Platform, Enterprise Edition): Usada en empresas grandes para desarrollar aplicaciones de cómputo distribuido como el eComerce.

  • J2ME (Java 2 Platform, Micro Edition): Usada en la creación de aplicaciones para dispositivos con recursos limitados; actualmente es empleada en Palm Computers y teléfonos celulares.

Historia

Java surgió en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de diseñar un nuevo lenguaje de programación destinado a electrodomésticos. La reducida potencia de cálculo y memoria de los electrodomésticos llevó a desarrollar un lenguaje sencillo capaz de generar código de tamaño muy reducido.


Debido a la existencia de distintos tipos de CPUs y a los continuos cambios, era importante conseguir una herramienta independiente del tipo de CPU utilizada. Desarrollaron un código “neutro” que no dependía del tipo de electrodoméstico, el cual se ejecutaba sobre una “máquina hipotética o virtual” denominada Java Virtual Machine (JVM). Era la JVM quien interpretaba el

código neutro convirtiéndolo a código particular de la CPU utilizada. Esto permitía lo que luego se ha convertido en el principal lema del lenguaje: “Write Once, Run Everywhere”. A pesar de los esfuerzos realizados por sus creadores, ninguna empresa de electrodomésticos se interesó por el nuevo lenguaje.


Como lenguaje de programación para computadores, Java se introdujo a finales de 1995. La clave fue la incorporación de un intérprete Java en la versión 2.0 del programa Netscape Navigator, produciendo una verdadera revolución en Internet. Java 1.1 apareció a principios de 1997, mejorando sustancialmente la primera versión del lenguaje. Java 1.2, más tarde rebautizado como Java 2, nació a finales de 1998.


Al programar en Java no se parte de cero. Cualquier aplicación que se desarrolle “cuelga” (o se apoya, según como se quiera ver) en un gran número de clases preexistentes. Algunas de ellas las

ha podido hacer el propio usuario, otras pueden ser comerciales, pero siempre hay un número muy importante de clases que forman parte del propio lenguaje (el API o Application Programming Interface de Java). Java incorpora en el propio lenguaje muchos aspectos que en cualquier otro lenguaje son extensiones propiedad de empresas de software o fabricantes de ordenadores (threads, ejecución remota, componentes, seguridad, acceso a bases de datos, etc.). Por eso muchos expertos opinan que Java es el lenguaje ideal para aprender la informática moderna, porque incorpora todos estos conceptos de un modo estándar, mucho más sencillo y claro que con las citadas extensiones de otros lenguajes. Esto es consecuencia de haber sido diseñado más recientemente y por un único equipo.


El principal objetivo del lenguaje Java es llegar a ser el “nexo universal” que conecte a los usuarios con la información, esté ésta situada en el ordenador local, en un servidor de Web, en una base de datos o en cualquier otro lugar.


La compañía Sun describe el lenguaje Java como “simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinámico”.