Professional Documents
Culture Documents
Lo anterior produce programas que son difíciles de escribir y actualizar por la simple razón
que el problema espacial dista en grandes proporciones del mapeo maquinal; frente a estas
deficiencias han surgido lenguajes más apegados al problema real tales como: PROLOG
donde todo problema es mapeado a una cadena de decisiones o LISP donde todo problema
es convertido a listas.
Aquí es donde los lenguajes orientados a objetos salen a relucirÔ esto se debe a que
permiten llevar acabo un mapeo más directo con el problema espacial(real). Allan KayÔ
describió las 5 principales características de SmalltalkÔ uno de los primeros lenguajes
orientados a objetos y uno de los lenguajes en los cuales esta basado Java:
R !
: Considere un objeto una variable especialÔ no solamente guarda
datosÔ sino también se pueden hacer solicitudes a este Objeto en sí. En teoríaÔ
cualquier elemento en el problema espacial(real) (edificiosÔ serviciosÔ automóvilesÔ
u otra entidad) puede ser representado como un objeto en un programa.
R D
: Para
realizar una solicitud a un Objeto es necesario enviarle un mensaje. Concretamente
se puede pensar que un mensaje es una solicitud para llamar una función que
pertenece a cierto objeto.
R
: En otras
palabrasÔ es posible generar un tipo de Objeto nuevo agrupando Objetos existentes.
De esta manera se pueden armar estructuras complejas en un programaÔ escondidas
detrás de la simplicidad de Objetos.
R !
!
: En este sentido Tipo se refiere a ClaseÔ donde cada
Objeto es una ÷ ÷ de una Clase en cuestión.La característica más importante
de una Clase es el tipo de mensajes que pueden ser enviados a ella.
R !
: Esto implica
que si un Objeto es del tipo CirculoÔ un Objeto del tipo Figura será capaz de recibir
mensajes de CirculoÔ puesto que un Circulo es una Figura. Este concepto forma
parte medular de todo lenguaje orientado a Objetos y será explorado en una sección
especifica de este curso.
En la gráfica anterior se puede observar una Clase conformada por una Lampara (problema
espacial real) a la cual pueden ser enviados distintos mensajes tales como: á
á y
; para crear un Objeto de esta Clase y ser utilizado dentro de un
programa es necesario generar una ÷ ÷ del mismoÔ esto se demuestra a continuación:
L
á
L
á
á
El primer renglón genera una ÷ ÷ de la Clase Lampara la cual es asignada a la
÷ candil; en la segunda lineaÔ a través de esta ÷ se manda llamar el
método á definido en la misma Clase; a través de ÷ es posible generar
distintos Objetos del mismo tipo cada uno con su propio comportamiento:
L
á
L
á
L
á
L
á
L
á
L
á
á
á
á
á
Entre los lenguajes orientados a Objetos hoy en día èava figura entre los más utilizados
comparado con sus homólogosÔ pre-aparición de Java el lenguaje C++ se encontraba en la
cúspide para desarrollos de Software con orientación a ObjetosÔ sin embargoÔ èava ha
venido suplantando su uso debido a dos características muy especificas que C++ no ofrece.
u
Esta característica forma parte del lema Java: "Write onceÔ run everywhere" (Escribalo una
vezÔ ejecutelo en todos lados)Ô a continuación se ilustra este concepto.
El proceso de creación es muy similar a la de otros lenguajes: una vez creado el Código
Fuente es necesario compilarlo para generar un binarioÔ este binario denominado Byte-Code
en Java lleva por extensión Ô sin embargoÔ a diferencia de otros lenguajes este
binario (Byte-Code) puede ser ejecutado en diversas plataformas obteniéndose el mismo
resultado final.Esta interoperabilidad de ejecución se debe a que el Byte-Code es ejecutado
en una maquina virtual llamada "èava Virtual Machine"Ô es a través de este componente
que se logra una ejecución idéntica en distintos ambientes.
Hoy en díaÔ existen diversos èVM("èava Virtual Machines") para distintas plataformas y
ambientes que oscilan desde los Sistemas Operativos Linux,Solaris,Windows,HP-UX hasta
productos como Bases de Datos Oracle y Servidores de Aplicaciones BEA; esto permite
que código escrito en Java pueda ser ejecutado en cualquier ambiente produciéndose los
mismos resultados.
En la sección anterior se pudo observar como son generadas distintas ÷ ÷ de Objetos
a través de una ÷Ô sin embargoÔ el uso de esta metodología trae consigo otro
pregunta : Que se hace con estas ÷ ÷ una vez que ya no son utilizadas ? La
importancia de este concepto se debe al uso de memoria en una computadoraÔ es lógico que
estas ÷ ÷ de Objetos requieren memoria ("RAM") para mantener su informaciónÔ
ahora bienÔ también tiene sentido asumir que la memoria ("RAM") es limitada en todo
sistemaÔ esto trae consigo el problema denominado "fuga de memoria" ("memory leak").
Si alguna vez ha programado en el lenguaje C++ debe estar familiarizado con este
conceptoÔ el cual significa que los recursos de memoria ("RAM") han sido agotados en el
sistema. Suponga que ha diseñado un programa que invoca la creación de miles de
÷ ÷ Ô eventualmente su memoria ("RAM") puede fugarse si no ha tomado las
precauciones necesarias para deshacerse/destruir estas ÷ ÷ de Objetos.
è èc
JDK ("Java Development Kit") y J2SE ("Java 2 Standard Edition") son nombres para el
mismo componente utilizado en ambientes JavaÔ el cual agrupa las diversas funcionalidades
necesarias para desarrollar programas Java.
Hoy en díaÔ existen JDK's/J2SE para diversos ambientes y plataformasÔ los cuales ofrecen
lo siguiente:
Para este curso se hace uso del JDK/J2SE de Sun Microsystems Ô aunque claro estaÔ
cualquier programa generado en este JDK puede ser ejecutado otros ambientesÔ al igual que
programas compilados en otros JDK's/J2SE pueden ser ejecutados en este ambiente. El
conjunto de Clases base proporcionadas por el JDK/J2SE incluyen clases de uso común
tales como : Manipulación de String'sÔ Fechas y Números así como todas las
funcionalidades base esperadas de un lenguaje computacional como: Ordenamiento y
manipulación de ArreglosÔ Operaciones matemáticas complejas (Trigonométricas y
Exponenciales) y escritura/lectura de "Streams".
Además de estas Clases baseÔ el JDK/J2SE posee otra serie de Clases especializadas que
también ofrecen la base para la creación de otros componentes Java que incluyen : AppletsÔ
Objetos CORBA Ô Fragmentos AuditivosÔ Soporte de Criptografía (Seguridad) y
Manipulación de XML entre otras funcionalidades.
Aunado a las Clases baseÔ el JDK/J2SE incluye una serie de ejecutables utilizados para
diversas tareas como : Creación de ejecutables (Byte-Code)Ô generación de documentaciónÔ
creación de "Stubs" y "Skeletons" a través de IDL e inclusive una implementación de un
ORB ("Object Request Broker") para interactuar con ambientes CORBAÔ entre otros
ejecutables.
!!
á
"
! # $%&'áá
(!
" )*
)*
!