Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Construccin de prototipos
Clases
La clase es un modelo o prototipo que define las variables y mtodos comunes a todos los
objetos de cierta clase. Tambin se puede decir que una clase es una plantilla genrica para un
conjunto de objetos de similares caractersticas.
Herencia
La herencia es uno de los conceptos ms cruciales en la POO. La herencia bsicamente
consiste en que una clase puede heredar sus variables y mtodos a varias subclases (la clase que
hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos
y mtodos propios, tiene incorporados los atributos y mtodos heredados de la superclase. De esta
manera se crea una jerarqua de herencia.
Envo de Mensajes
Un objeto es intil si est aislado. El medio empleado para que un objeto interacte con otro
son los mensajes. Los mensajes son invocaciones a los mtodos de los objetos.
Caractersticas asociadas al POO
Abstraccin
La abstraccin consiste en captar las caractersticas esenciales de un objeto, as como su
comportamiento. En los lenguajes de programacin orientada a objetos, el concepto de Clase es la
representacin y el mecanismo por el cual se gestionan las abstracciones.
Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar
trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar
cmo se implementan estas caractersticas. Los procesos, las funciones o los mtodos pueden
tambin ser abstrados y cuando lo estn, una variedad de tcnicas son requeridas para ampliar una
abstraccin.
Encapsulamiento
El encapsulamiento consiste en unir en la Clase las caractersticas y comportamientos, esto
es, las variables y mtodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados
esto era imposible.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que
tendremos a las Clases como cajas negras donde slo se conoce el comportamiento pero no los
detalles internos.
Ocultamiento
Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer
slo los detalles que sean necesarios para el resto del sistema.
El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir porque
habr cierto comportamiento privado de la Clase que no podr ser accedido por otras Clases. Y
controlar porque daremos ciertos mecanismos para modificar el estado de nuestra Clase y es en
estos mecanismos dnde se validarn que algunas condiciones se cumplan.
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo
nombre, al llamarlos por ese nombre se utilizar el comportamiento correspondiente al objeto que
se est usando.
El polimorfismo es una nueva caracterstica aportada por la POO. Esta propiedad indica la
posibilidad de definir varias operaciones con el mismo nombre, diferencindolas nicamente en los
parmetros de entrada. Dependiendo del objeto que se introduzca como parmetro de entrada, se
elegir automticamente cual de las operaciones se va a realizar.
Manejo de memoria
Los POO son lenguajes que utilizan de manera intensiva la memoria de la computadora.
Hay dos tipos de aproximacin a la gestin de memoria.
El sistema en tiempo de ejecucin libera la memoria automticamente a medida que los
objetos dejan de utilizarse.
El sistema tiene instrucciones concretas para liberar la memoria explcitamente. Este el
enfoque adoptado por lenguajes como C++, que aportan dos operadores: crear y destruir. El
primero reserva automticamente memoria, mientras que el segundo la libera.
Lenguajes de Programacin Orientado a Objetos
En 1985, E. Stroustrup extendi el lenguaje de programacin C a C++, es decir C con
conceptos de clases y objetos, tambin por esas fechas se creo desde sus bases el lenguaje EIFFEL.
En 1995 apareci el ms reciente lenguaje OO, Java desarrollado por SUN, que hereda
conceptos de C++.
El lenguaje de desarrollo ms extendido para aplicaciones Web, el PHP 5, trae todas las
caractersticas necesarias para desarrollar software orientado a objetos.
Adems de otros lenguajes que fueron evolucionando, como el Pascal a Delphi.
Finalmente tambin otros lenguajes script como el ActionScript que si bien no es totalmente
orientado a objetos pero s posee las caractersticas.
Caractersticas principales de JAVA
Simple
Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las caractersticas menos
usadas y ms confusas de stos. Java se dise para ser parecido a C++ y as facilitar un rpido y
fcil aprendizaje.
Java elimina muchas de las caractersticas de otros lenguajes como C++, para mantener
reducidas las especificaciones del lenguaje y aadir caractersticas muy tiles como el garbage
collector (reciclador de memoria dinmica). El reciclador se encarga de liberar memoria y como es
de baja prioridad, cuando entra en accin, permite liberar bloques de memoria muy grandes, lo que
limita en mucho la fragmentacin de la memoria.
Orientado a Objetos
Java implementa la tecnologa bsica de C++ con algunas mejoras y elimina algunas cosas
para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y
con interfaces a esos objetos. Soporta las tres caractersticas propias del paradigma de la orientacin
a objetos: encapsulacin, herencia y polimorfismo. Las plantillas de objetos son llamadas, como
en C++, clases y sus copias, instancias. Estas instancias, como en C++, necesitan ser construidas y
destruidas en espacios de memoria.
Java incorpora funcionalidades inexistentes en C++ como por ejemplo, la resolucin
dinmica de mtodos. En C++ se suele trabajar con libreras dinmicas (DLLs) que obligan a
recompilar la aplicacin cuando se retocan las funciones de su interior.
Este inconveniente es resuelto por Java mediante una interfaz especfica llamada RTTI
(RunTime Type Identification) que define la interaccin entre objetos excluyendo variables de
instancias o implementacin de mtodos
Distribuido
Comprobacin de punteros
Excepciones
Verificacin de ByteCodes
Arquitectura Neutral
Para establecer Java como parte integral de la red, el compilador Java compila su cdigo a
un fichero objeto de formato independiente de la arquitectura de la mquina en que se ejecutar.
Cualquier mquina que tenga el sistema de ejecucin (run-time) puede ejecutar ese cdigo objeto,
sin importar en modo alguno la mquina en que ha sido generado.
El cdigo fuente Java se "compila" a un cdigo de bytes de alto nivel independiente de la
mquina. Este cdigo (ByteCode) est diseado para ejecutarse en una mquina hipottica que es
implementada por un sistema run-time, que s es dependiente de la mquina.
Seguro
La seguridad en Java tiene dos facetas. En el lenguaje, caractersticas como los punteros o el
casting implcito que hace el compilador de C y C++ se eliminan para prevenir el acceso ilegal a la
memoria. Cuando se usa Java para crear un navegador, se combinan las caractersticas del lenguaje
con protecciones de sentido comn aplicadas al propio navegador.
El cdigo Java pasa muchos tests antes de ejecutarse en una mquina. El cdigo se pasa a
travs de un verificador de ByteCode que comprueba el formato de los fragmentos de cdigo y
aplica un probador de teoremas para detectar fragmentos de cdigo ilegal -cdigo que falsea
punteros, viola derechos de acceso sobre objetos o intenta cambiar el tipo o clase de un objeto.
Las aplicaciones de Java resultan extremadamente seguras, ya que no acceden a zonas
delicadas de memoria o de sistema, con lo cual evitan la interaccin de ciertos virus.
Portable
Ms all de la portabilidad bsica por ser de arquitectura independiente, Java implementa
otros estndares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y
adems, enteros de 32 bits en complemento a 2. Adems, Java construye sus interfaces de usuario a
travs de un sistema abstracto de ventanas de forma que las ventanas puedan ser implantadas en
entornos Unix, Pc o Mac.
Interpretado
El intrprete Java (sistema run-time) puede ejecutar directamente el cdigo objeto. Enlazar
(linkar) un programa normalmente consume menos recursos que compilarlo, por lo que los
desarrolladores con Java pasarn ms tiempo desarrollando y menos esperando por el ordenador. No
obstante, el compilador actual del JDK es bastante lento. Por ahora, que todava no hay
compiladores especficos de Java para las diversas plataformas, Java es ms lento que otros
lenguajes de programacin, como C++, ya que debe ser interpretado y no ejecutado como sucede en
cualquier programa tradicional.
La verdad es que Java para conseguir ser un lenguaje independiente del sistema operativo y
del procesador que incorpore la mquina utilizada, es tanto interpretado como compilado. El cdigo
fuente escrito con cualquier editor se compila generando el ByteCode. El ByteCode corresponde al
80% de las instrucciones de la aplicacin. Ese mismo cdigo es el que se puede ejecutar sobre
cualquier plataforma. Para ello hace falta el runtime, que s es completamente dependiente de la
mquina y del sistema operativo que interpreta dinmicamente el ByteCode y aade el 20% de
instrucciones que faltaban para su ejecucin. Con este sistema es fcil crear aplicaciones
multiplataforma, pero para ejecutarlas es necesario que exista el runtime correspondiente al sistema
operativo utilizado.
Multithreaded.
Un lenguaje que soporta mltiples threads (a veces llamados procesos ligeros) es un
lenguaje que puede ejecutar diferentes lneas de cdigo al mismo tiempo. Dicho de otra forma,
permite que el usuario pueda acceder a la informacin en la pgina sin tener que esperar por el
navegador.
Dinmico
Java se beneficia todo lo posible de la tecnologa orientada a objetos. Java no intenta
conectar todos los mdulos que comprenden una aplicacin hasta el mismo tiempo de ejecucin.
Las librera nuevas o actualizadas no paralizarn la ejecucin de las aplicaciones actuales -siempre
que mantengan el API anterior.
Java tambin simplifica el uso de protocolos nuevos o actualizados. Si su sistema ejecuta una
aplicacin Java sobre la red y encuentra una pieza de la aplicacin que no sabe manejar, Java es
capaz de traer automticamente cualquier pieza que el sistema necesite para funcionar.
2.
Indique los rangos y la memoria que ocupan los diferentes tipos de datos primitivos
de Java
Existen dos categorias de datos principales en el lenguaje Java: los tipos primitivos y los
tipos referenciados.
Tipos primitivos:
Se llaman primitivos porque estn integrados en el sistema y no son objetos en realidad, lo
cual hace su uso ms eficiente.
Los tipos primitivos contienen un slo valor e incluyen los tipos como los enteros, coma
flotante, los caracteres, etc.
Java cuenta con ocho tipos de datos primitivos para almacenar distintos rangos de valores
Tipo
Lo que almacena
Rango
byte
de -128 a 127
short
de -32768 a 32767
int
de -2147483648 a 2147483647
long
de -2-63 a 263 - 1
float
double
char
Boolean
false y true
En la construccin de programas los tipos primitivos ms usados son : int, double, char y boolean.
3.
(p
q)
(p
q)
a) x y : x y ) ( y - x 0 )
x / y / x y ) ( y - x 0 ) Se cambian los cuantificadores universales en
existenciales y se niega la proposicin
siendo P ( x ) = ( x y ) , Q ( x ) = ( y - x 0 )
(P ( x ) Q ( x ) ) ( P ( x ) Q ( x ) ) (Ley de negacin de una implicacin)
x / y / x y ) ( y - x 0 ) aplico la Ley de negacin de una implicacin
x/y/xy) (y-x0)
b) xy:xy)z/(xzy)
x / y / x y ) z / ( x z y )
siendo P ( x ) = x y ) , Q ( x ) = z / ( x z y )
x / y / x y ) z / ( x z y ) aplico la Ley de negacin de una implicacin
x/y/xy) z: (xzy)
x/y/xy) z:(xzy)