Java
Introducción
Principales razones de su éxito:
- Es totalmente Orientado al Objeto
- Es independiente de la plataforma
- Sus capacidades para desarrollar programas distribuidos
La programación orientada al objeto (OOP) hace que
los programas seam más fáciles de construir, modificar, y
reusar. Ojo no es para tanto! Se pueden escribir programas FORTRAN en cualquier
lenguaje de programación.
La independencia de la plataforma: Una vez compilados,
los programas Java producen código byte Java (Java bytecode
) que corre en cualquier computador con interprete Java o una Máquina
Virtual Java (JVM).
Algunos proveedores incluyen compilación "justo a
tiempo" (just-in-time compilation) del código byte en código
nativo de máquina. Así se incrementa la velocidad de ejecución.
Componentes de Java
- Lenguaje de programación Java: OOP, clases
para manejo de I/O, strings, Multi hilos, soporte para programación
de interfaces gráficas, y manejo de excepciones.
- Compilador Java: Transforma programas Java en
código byte (bytecode).
- Máquina Virtual Java: Interpreta y ejecuta
código byte.
- Clase Java Applet: Facilita la creación
de applets.
- Visualizador Applet: Prueba y muestra Java applets.
- Generador de documentación Java: Produce
automáticamente, desde código fuente Java, documentación
de las APIs en formato HTML.
- JAR (Java Archive): Empaqueta y desempaqueta archivos
para fácil y eficiente tranferencia a través de una red.
- RMI (Remote Method Invocation) Permite el acceso
a objetos Java residentes en un computador remoto a través de la red.
- JNI (Java Native Interface) Provee una forma de
mezclar programas Java con código C y C++.
- Otros ....
Qué es OOP?
La idea central es construir programas usando objetos
de software. Un objeto es una entidad autocontenida con su propios datos
y programación propia. Ej. menu, ventana, carpeta de archivos.
También: un registro de cuenta de agua, cuenta bancaria, motor de un
auto.
"Cada programa es en realidad una simulación de alguna
parte del mundo real"
Un lenguage es OOPL si:
- Soporta objetos que son datos abstractos con una
interfaz de operaciones y con un estado local oculto.
- Los objetos tienen asociado un tipo (class).
- Los tipos pueden heredar atributos de otros tipos.
Los objetos poseen datos (mienbros datos del objeto ) que
describen el estado del objeto y código (miembros de función
también llamados métodos o mensajes) que gobierna cómo
el objeto trabaja internamente y cómo interactúa con los otros
objetos.
¿Qué es un Objeto?
Un objeto se caracteriza por:
- Una Identidad: Propiedad que lo distingue de otros.
Ej: nombres Eduardo, x,y; referencias este, ese, *p.
- Un estado: los atributos de un objeto y su valor
actual.
Ej: struct book {
string titulo;
Autor autor;
ISBN isbn;
int edicion;
int year;
Publisher editorial;
};
Tiene estado? - Comportamiento:
es cómo el objeto actúa y reacciona ante operaciones sobre
él. Éste es descrito en términos de mensajes y métodos.
Objetos diferentes pueden responder al mismo mensaje con
diferentes métodos. Ej.Yo envío del mensaje "Envíe
flores a mi madre" a un florista, mi esposa, una secretaria.
¿Qué es una Clase?
Todos los objetos son instancias de una clase.
- El método empleado por un objeto en respuesta
a un mensaje está determinado por su clase.
- Todos los objetos de la misma clase usan el mismo
método.
Clases y objetos son familiares a conceptos de programación
tradicionales
OOPL |
Lenguages tradicionales |
objeto
identidad
estado
clase
mensaje
método
enviar un mensaje |
variable, constante
nombre, dirección,
valor
tipo
declaración de función
cuerpo de la función
invocación de función |
Clases versus tipos
En lenguajes de programación tradicionales
cada variabe (objeto) es una instancia de exactamente un tipo
(clase). En OOPL, cada objeto (variable) puede ser una instancia de
varias clases (tipos) relacionadas.
Éste ocurre porque las clases
pueden estar relacionadas vía herencia. La herencia captura
una relación del tipo "es un".
Ejemplo Programa Java simple:
/////// Lowercase.java ///////
import java.io.*; // Use java.io package
// basic ASCII character I/O
class Lowercase
{
public static void main(String[] args)
throws IOException
{ int i;
while ( (i = System.in.read()) != -1
) // input char
{ i = Character.toLowerCase(
(char) i);
System.out.write(i);
}
}
}
Material Java