Overblog Seguir este blog
Edit post Administration Create my blog
29 marzo 2009 7 29 /03 /marzo /2009 19:25

1.      Programación Orientada a Objetos

Clases y Objetos.

            Una clase es una entidad auto contenida que provee una plantilla (framework) para definir atributos y comportamiento encontrados comúnmente en objetos de software pertenecientes a un tipo en particular. Los atributos se presentan como variables y el comportamiento como métodos en una clase java.

            Cualquier instancia creada a partir de la plantilla se denomina un objeto. El proceso a través del cual una instancia (objeto) se crea se llama instanciación.

            Por ejemplo se puede modelar un Estudiante, en clases y objetos de software.

            Se tendrá una clase Estudiante que define atributos como: genero, nombre, cedula de identidad, número de estudiante, carrera, estatus, nombre, edad, cursos registrados, calificaciones obtenidas y otros.

2.      Orientación a Objeto en Java.

Se sabe que Java brinda soporte a la programación orientada a objetos. En la programación orientada a objetos. En la programación orientada a objetos, los programadores crean objetos de software, que son modelados como los objetos del mundo real. Se describen los objetos del mundo real usando sus atributos y comportamiento. Similarmente se describen los objetos de software usando variable y métodos. Se tiene un prototipo a partir del cual se crean objetos del mismo tipo del mundo real. Similarmente, se tiene un prototipo llamado clase, de la cual se pueden crear muchos objetos de software del mismo tipo. Java implementa la orientación a objetos a través de tres importantes propiedades que son:

- Encapsulación.

La capacidad de presentación de información dentro de un objeto se divide en dos partes bien diferenciadas:

Interna. La información que necesita el objeto para operar y que es innecesaria para los demás objetos de la aplicación. Estos atributos se denominan privados tienen como marco de aplicación únicamente a las operaciones asociadas al objeto.

Externa. La que necesitan el resto de los objetos para interactuar con el objeto que definimos. Estas propiedades se denominan publicas y corresponde a la información que necesitan conocer los restantes objetos de la aplicación respecto del objeto definido para poder operar.

El termino encapsulación indica la capacidad que tienen los objetos de construir una capsula a su alrededor, ocultando información que contienen (aquella que es necesaria para su funcionamiento interno, pero innecesaria para los demás objetos) a las otras clases que componen la aplicación.

Tomando el ejemplo de un Telecajero. Se puede ir aun Telecajero a retirar dinero, revisar el saldo de una cuenta y depositar dinero. Estas son las funcionalidades proporcionadas a los usuarios. Ellos no saben como estas funcionalidades están implementadas, y no están preocupados por la implementación. Los usuarios pueden acceder a la información pertinente solo a sus cuentas. Ellos no pueden acceder a la información de otros usuarios, a los usuarios no se les da acceso a saber cómo trabajar el Telecajero.

-Herencia.

Considere el ejemplo de un profesor de física y uno de matematicas. Ambos pertenecen a una categoría general llamada profesores. Ellos tienen ciertos atributos y comportamientos que son comunes a todos los profesores. Adicionalmente, ellos tiene ciertos atributos especiales que son comunes a todos los profesores de física y matemáticas.

Cuando se modela este ejemplo usando objetos de software, se puede tener una clase llamada Profesor que defina todos los atributos y comportamientos comunes a todos los profesores. Subsecuentemente, se pueden definir dos clases ProfesorFisica y ProfesorMatematica, que heredan los atributos y comportamiento comunes  a todos los profesores, desde la clase Profesor. En este caso, la clase profesor será la superclase de las clases ProfesorFisica y ProfesorMatematica y estas serán subclases de la clase Profesor.

En Java, una clase solo puede tener una superclase. Esto significa que una clase en Java no puede derivar de varias clases. Sin embargo, Java soporta herencia múltiple indirectamente usando interfaces.

-Polimorfismo.

La palabra polimorfismo, proviene de dos raíces griegas Poly y Morphus. La palabra Poly significa Muchos y Morphus significa Formas.

En programación orientada a objetos, polimorfismo significa una sola interfaz y múltiples implementaciones. En otras palabras, los nombres de métodos son los mismos, pero tienen diferentes implementaciones basadas en los parámetros que le son pasados, o en los objetos sobre los cuales son invocados.

Suponga que se desea implementar a la clase mamíferos, suponga también que uno de los métodos que se desea implementar para esta clase, es el que permita a tales mamíferos desplazarse de forma natural, a este método se le llamara desplazar(). Se encontrara entonces con que para algunos mamíferos el desplazamiento se realizara por medio de caminar, como es el caso de las personas, para otros el desplazamiento natural será nadar, como en el caso de los delfines e inclusive para otros, el desplazamiento se lograra por medio de volar, como sucede con los murciélagos. Se usa el mismo nombre del método para invocar sus diferentes implementaciones.

3. Historia de Java.

            Patrick Naughton, Mike Sheridan, y James Gosling de SUN Microsystems iniciaron un proyecto secreto llamado Proyecto Verde (Green Project) a finales de 1990. El objetivo de este proyecto era anticiparse a la revolución en el mundo de la computación que estaba por llegar. El equipo decidió intentar introducirse en el mercado de la electrónica de consumo y desarrollar programas para pequeños dispositivos electrónicos  desarrollaron un dispositivo llamado StarSeven (*7) , este dispositivo era capaz de controlar una variedad de plataformas de entretenimiento y dispositivos de uso domestico, además de mostrar animaciones simultáneamente.  *7 usaba un procesador independiente del lenguaje llamado Oak para adaptarse a una variedad de plataformas y dispositivos de uso domestico. Tras unos comienzos dudosos, Sun decidió crear una filial, denominada FirstPerson Inc., para dar margen de maniobra al equipo responsable del proyecto. Este grupo intento mercadear el *7 a la industria de la Televisión por Cable, pero la tecnología usada para desarrollar el *7 estaba adelantada a la tecnología existente en la industria de la Televisión por Cable y por este no fue aceptado.

            Afortunadamente para el grupo creador del *7, internet se estaba volviendo popular en ese momento. La internet tenía una configuración de red similar al *7, y estaba siendo usada cada vez más para la trasferencia de texto, gráficos y video, esencialmente datos estáticos. El equipo FirtsPerson amplio Oak, transformándolo en un lenguaje que permitía al programador escribir programas que corrían en una gran variedad de dispositivos, a un lenguaje que permitía escribir código ejecutable que podía ser distribuido en Internet.

            En el año de 1995, este nuevo lenguaje evolucionado fue llamado Java. Java permitía a los usuarios de Internet trasferir contenido estático a través de la misma. Adicionalmente, permitía transferir pequeñas aplicaciones dinamicas a través de la red en la  forma de applets de java. Algunos de los miembros del grupo FirstPerson mostraron el lenguaje y sus nuevas características, incluyendo la transferencia de animaciones a través del internet, en la Conferencia de Diseño, Tecnología y Entretenimiento en Monterrey. Sus características y funcionalidades asombraron a los participantes, ya que la tecnología proveía un método más sencillo para transferir datos en la internet. El equipo pronto construyo el navegador HotJava, y publico el código fuente Java gratuitamente en Internet. En poco tiempo, el número de usuarios de la tecnología Java se incremento rápidamente.

4.      Comparación entre Java y C++

            Java simplifica muchas de las ambigüedades encontradas en C++, y es, al mismo tiempo, un lenguaje de programación igualmente poderoso. Existen algunas deficiencias en C++, por el hecho de que permite programación estructurada. Esto ha sido eliminado en Java, que es un lenguaje puramente orientado a objetos.

            Las principales diferencias entre C++ y Java son:

Java

C++

Es tanto un lenguaje de programación como una plataforma de software

Es solo un Lenguaje de Programación.

Es un lenguaje puramente orientado a objetos.

Da soporte tanto a la programación estructurada como a la programación orientada a objetos.

Todas las declaraciones de variables y métodos deben estar dentro de la definición de la clase.

Las declaraciones de variables y funciones pueden estar presentes fuera de las definiciones de las clases. No es necesario para un programa en C++ tener una clase.

El lenguaje es independiente de la plataforma. El código Java, una vez escrito, puede ser ejecutado en cualquier plataforma.

El código C++, una vez escrito para una plataforma, necesita ser compilado de nuevo, y el código objeto reenlazado para ser ejecutado en otra plataforma diferente.

Maneja la memoria automáticamente

Los programadores tienen que hacerse cargo de liberar la memoria no utilizada.

No se soporta características como sobrecarga de operadores y conversiones automáticas en ambos sentidos.

Da soporte a características como sobrecarga de operadores y conversiones automáticas en ambos sentidos.

Una clase no puede heredar directamente de más de una clase. Se da soporte a la herencia múltiple usando interfaces.

Una clase puede heredar directamente de más de una clase

Tiene rutinas de librerías extensibles.

Sus rutinas de librerías no son extensibles.

La programación de redes es más fácil. Los objetos pueden ser accedidos a través usando URLs.

La programación para redes es compleja, a menos que se usen APIs de Terceros. C++, es un lenguaje, que no brinda soporte incorporado para programación de redes.

Los programadores no pueden usar apuntadores. Los apuntadores se usan internamente.

Los programadores pueden usar apuntadores.

Implementa arreglos verdaderos.

Se implementan los arreglos con aritmética de punteros.

 

5.      Características de Java.

            Java puede usarse para desarrollar dos tipos de programas:

            Aplicaciones.

            Las aplicaciones son programas independientes que pueden correr en una computadora, usando la plataforma Java con el soporte del sistema operativo de la computadora.

            Applets.

            Los applets son programas especiales Java, que pueden usarse para transmitir información en Internet.

            Los applets pueden ser incrustados  en una página HTML usando la etiqueta Applet, y pueden ejecutarse en un navegador web con soporte Java. Los applets pueden adaptarse a la entrada del usuario inteligentemente. Las aplicaciones Java y los applets pueden ser compilados y ejecutados usando el Kit de Desarrollo de Java (Java Development Kit JDK).

 

Diferentes Características de Java.

a)      Simple de Usar.

            El estilo de programación en Java esta basado en C++, y soporta la mayoría de las características ofrecidas por C++. De aquí que, los programadores no encontraran Java muy difícil de entender y usar.

b)     Seguridad.

            Inicialmente, cuando la Internet comenzó y Java no era tan conocido, los usuarios de Internet temían descargar programas ejecutables debido al daño alarmante causado por la difusión de virus. Las personas descargaban archivos eran muy cautelosas de revisar estos archivos cuidadosamente antes de usarlos. Había programas maliciosos que recababan información acerca de tarjetas de crédito, palabras claves, etc., del sistema de archivo local. Esto, fue, por supuesto, desastroso para las personas que navegan por internet. Java proporciono un modelo de seguridad, que previene el acceso a los recursos del sistema, y así bloquear cualquier intento malicioso.

c)      Portabilidad.

            Existen muchas ocasiones en donde los usuarios de Internet pueden querer descargar programas y ejecutarlos dinámicamente. Los usuarios pueden estar usando diferentes tipos de plataformas, para permitirles descargar programas y ejecutarlos dinámicamente, se necesita de un mecanismo para crear código ejecutable que sea portable entre varias plataformas.

            Java solventa este inconveniente de portabilidad con el uso de bytecodes. El compilador java (javac) primero convierte el código fuente archivo con extensión .java) a bytecodes (archivo con extensión .class), que puede entender el sistema de tiempo de ejecución de java o la Maquina Virtual de java (Java Virtual Machine JVM); estos bytecodes son interpretados por el interprete de Java, y convertidos a una forma ejecutable que la entienda la plataforma en la cual el sistema de tiempo de ejecución de java se esta ejecutando.

d)     Distribuido.

             La computación distribuida es muy útil en el ambiente del internet, donde los módulos de los programas pueden estar presentes en diferentes computadoras alrededor del mundo. Java fue diseñado para brindar soporte TCP/IP. El soporte a redes de Java permite construir aplicaciones cliente/servidor, adicionalmente Java tiene el paquete de Invocación de Métodos Remota (Remote Method Invocation RMI). Este permite a programas que se ejecutan en una JVM invocar un método en una clase Java ejecutándose en otra JVM.

e)      Orientado a Objetos.

            C++ tenía que mantener las características y ser compatible con C. cuando Java estaba siendo diseñado, sus diseñadores y desarrolladores no quisieron que java fuera compatible al nivel de código fuente con ningún otro lenguaje. Por lo tanto, los desarrolladores crearon a Java como un lenguaje orientado a objetos. Java, hace uso de un modelo de objetos simple, y usa tipos de datos simples no objetos, asegurando un alto rendimiento.

f)       Robusto.

            El diseño de java hace posible que los programadores identifiquen errores en la misma etapa de desarrollo. El código puede ser revisado para asegurar confiabilidad colocando restricciones en ciertas áreas clave de la programación y teniendo un diseño para evitar errores más comunes de programación. Java está diseñado para ser un lenguaje estrictamente tipado, por lo tanto verifica errores de codificación tanto en tiempo de compilación como en tiempo de ejecución.

            Java provee manejo de excepciones para ocuparse de los errores de una manera sofisticada. La robustez del manejo de excepciones de Java ayuda a construir programas confiables. Funciones como la recolección automática de basura en java hace que los programas sean menos propensos a errores relacionados con la memoria. Esto a su vez da seguridad a los programadores para predecir el comportamiento del programa en diversas situaciones.

g)      Dinámico.

            Java enlaza el código dinámicamente. Java fue implementado para usar los datos disponibles en los archivos class en tiempo de ejecución. Los objetos que se crean y usan en un programa son verificados y resueltos en tiempo de ejecución. Esta característica es útil cuando se quiere actualizar el bytecode en un sistema de ejecución.

h)     Fuertemente Tipificado.

            Java es fuertemente tipificado. Java fue diseñado de forma que si se comete cualquier error en una invocación de método, se mostrara un mensaje de error al programador en tiempo de compilación. Por esta razón, los programadores no necesitan preocuparse de cometer errores no detectables en las invocaciones de métodos.

i)        Interpretado.

            Los bytecodes de java son interpretados por la JVM en el lenguaje nativo de la plataforma subyacente. Los lenguajes interpretados tienen limitaciones de rendimiento comparados con los lenguajes que son compilados. Java combina las ventajas de la compilación e interpretación. El compilador java JIT (Just In Time), puede ayudar a superar las limitaciones de rendimiento asociadas a la JVM.

j)        Arquitectura Neutral.

            Al compilar un programa en Java, el código resultante es un tipo de código viario conocido como bytecode. Este código es interpretado por diferentes computadoras de igual manera, solamente hay que implementar un intérprete para cada plataforma. De esa manera Java logra ser un lenguaje que no depende de una arquitectura computacional definida.

k)      Ambiente Multihilos.

            Java brinda soporte a la programación Multihilos, que permite que un único programa llave a cabo varias tareas concurrentemente. Los programadores pueden hacer uso de esto para crear aplicaciones de red interactivas. El sistema en tiempo de ejecución de java (JVM) se implemento de forma eficiente, para permitir la fácil sincronización de hilos, que a su vez facilitan la programación interactiva.

           

6.      La Plataforma Java.

Una plataforma es el entorno sobre el cual se ejecutan los programas. Una plataforma puede ser una plataforma de software, una plataforma de hardware o una combinación de ambos. La plataforma Java es una plataforma de solo software, la cual se puede ejecutar en varias plataformas de hardware así como en varios sistemas operativos. La plataforma Java está conformada por dos componentes, llamados la JVM el API de Java.

  

   Componentes de la Plataforma Java.

            JVM

            La JVM es una aplicación ejecutable que representa a un procesador genérico en el cual corren los bytecodes de Java. Una implementación particular de esta máquina virtual, que es escrita para operar en un entorno particular, aun brindara soporte al API general de Java. Esto es lo que hace a java independiente de la plataforma.

            La JVM consta de los siguientes tres aspectos:

-          Especificacion abstracta.

-          Implementacion concreta

-          Instancia en tiempo de ejecución.

 

El API de Java.

El API (Aplication Programming Interface) de Java es una muy buena colección de componentes de software apropiadas para el desarrollo de programas Java. En Java hay diferentes tipos de programas tales como aplicaciones, applets y Servlets. El API de Java ayuda al desarrollo y ejecución de estos diferentes tipos de programas mediante una amplia librería. El soporte de las diversas características de Java se realiza a través del API. Estas son básicamente librerías o paquetes de componentes relacionados.

 

Archivos .java y .class

Para entender la diferencia entre ambos, se debe revisar el flujo de un programa en Java:

a)      El código fuente Java se ingresa usando un editor

b)      El comando javac se usa para iniciar el compilador Java, que compila el código fuente java (archivo .java) a bytecodes, suponiendo que no hay errores en tiempo de compilación. Si existe un error, el programador debe regresar al editor, corregir los problemas, y ejecutar nuevamente javac hasta que todos los errores sean solucionados y se obtenga una compilación limpia.

c)      Una vez compilado, se produce un archivo .class que podrá ser usado con cualquier JVM ejecutándose en cualquier plataforma.

d)      El comando java se usa para iniciar el intérprete Java, y para ejecutar el archivo .class.

.

Compartir este post

Repost 0
Published by Prof. Luis E. Aponte I.
Comenta este artículo

Comentarios

ceilia moreno 07/03/2010 19:14


buen dia,me parece muy explicita la informacion suministrada aqui y la verdad si la hubiese leido con anterioridad a la evaluacion,hubiese tenido resultados aun mejores.me gustaria profundizara la
diagramacion UML,ya que,se me ha complicado un poco la resolución de los ejercicios.de ante mano gracias.


cesar 08/23/2009 17:08

Antetodo me presento soy Cruzado Nolazco Cesar estudiante de Sistemas de trujillo, y justo buscaba un comcepto es pecicfico al muy bien redactado y lo encontre exelente la informacion lo que si megustaria que realizara es que mencione los diferentes programas donde podemos programar es es todo my agradecido con usted. Adios

Prof. Luis E. Aponte I. 08/24/2009 02:15


Buenas Noches, gracias por mostrar interes en el contenido presentado en tal blog.

Para su solicitud, estare agregando las diferentes plataformas para programar bajo Java, a su vez tambien colocare otras informaciones de interes sobre este gran lenguaje de programacion.

Estamos en Contacto..

Prof/Lic. Luis E. Aponte I.