0% encontró este documento útil (0 votos)
141 vistas21 páginas

Historia Del Lenguaje Java

Java fue desarrollado inicialmente en 1991 por James Gosling y es tanto un lenguaje de programación como una plataforma de software. Java es multiplataforma y puede ejecutarse en la mayoría de sistemas operativos y dispositivos gracias a su máquina virtual, lo que permite escribir el código una sola vez y ejecutarlo en cualquier lugar.

Cargado por

luis herrera
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
141 vistas21 páginas

Historia Del Lenguaje Java

Java fue desarrollado inicialmente en 1991 por James Gosling y es tanto un lenguaje de programación como una plataforma de software. Java es multiplataforma y puede ejecutarse en la mayoría de sistemas operativos y dispositivos gracias a su máquina virtual, lo que permite escribir el código una sola vez y ejecutarlo en cualquier lugar.

Cargado por

luis herrera
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

HISTORIA DEL LENGUAJE JAVA

El lenguaje Java fue desarrollado en sus inicios por James Gosling, en el


año 1991. Inicialmente Java era conocido como Oak o Green.

Java es un tipo de lenguaje de programación y una plataforma informática


(En informática, plataforma es un sistema que sirve como base para hacer
funcionar determinados módulos de hardware o de software con los que es
compatible.), creada y comercializada por Sun Microsystems en el año
1995.

La idea inicial del lenguaje era aplicar una sintaxis similar a C++, pero que
permitiese la ejecución del código mediante una máquina virtual.

Se constituye como un lenguaje orientado a objetos, su intención es


permitir que los desarrolladores de aplicaciones escriban el programa una
sola vez y lo ejecuten en cualquier dispositivo.

La filosofía, innovadora en aquella época, era la de "Escribe una vez


y ejecuta donde quieras". Bajo ese prisma, se podría ejecutar Java en
cualquier tipo de ordenador, independientemente de la plataforma. Para ello
se creó la JVM (Java Virtual Machine) como un complemento gratuito para
los sistemas más habituales.

A partir de su puesta en marcha Java dotó a los desarrolladores de un


JDK (Java Development Kit) que fue evolucionando rápidamente e
incrementando sus posibilidades gracias a un enorme conjunto de clases
para realizar prácticamente todo tipo de programas y aplicaciones.

Java es multiplataforma, capaz de ejecutarse en la mayoría de


sistemas operativos y dispositivos, con una única base de código. Esto lo
consigue gracias a una máquina virtual que existe en cada sistema que es
capaz de ejecutar Java y hacer de puente entre el lenguaje de programación
y el dispositivo. Eso quiere decir que, si hacemos un programa en Java
podrá funcionar en cualquier ordenador, dispositivo o cualquier tipo de
máquina que soporte Java.

El hecho de ser multiplataforma es una ventaja significativa para los


desarrolladores de software, pues anteriormente era necesario hacer un
programa para cada sistema operativo, por ejemplo Windows, Linux,
MacOS, etc. Esto lo consigue porque se ha creado una Máquina virtual de
Java para cada plataforma, que hace de puente entre el sistema operativo y
el programa de Java y posibilita que este último se entienda perfectamente.
Hoy hay muchos lenguajes multiplataforma, pero Java fue de los primeros
en ofrecer esta posibilidad.

Con Java podemos hacer todo tipo de proyectos, desde aplicaciones web a
servicios web basados en SOAP o REST, aplicaciones de escritorio de
consola o interfaz gráfica. Además Java es el lenguaje de programación que
se usa para el desarrollo nativo para Android, lo que ha llevado a esta
tecnología a un nivel de popularidad todavía mayor y con alta demanda
profesional.

Máquina virtual
Java es pionero entre los lenguajes multiplataforma, llevando en la
práctica el lenguaje no solo a distintos sistemas operativos de escritorio,
como muchos lenguajes actuales, sino a cualquier tipo de máquina.

Para ello Java incorpora una importante innovación llamada JVM, Java
Virtual Machine. La máquina virtual de Java permite ejecutar el código
de este lenguaje, de modo que Java es soportado en cualquier sistema
que incorpore su propia máquina virtual.

Cuando se compila un programa realizado en Java se genera un archivo


con lo que se llama bytecodes. Ese archivo puede ser entendido por la
correspondiente máquina virtual y procesado tal como el sistema
operativo real requiera.

JAVA VS C++
La sintaxis de Java se deriva en gran medida de C++. Pero a diferencia de
este, que combina la sintaxis para programación genérica, estructurada y
orientada a objetos, Java fue construido desde el principio para ser
completamente orientado a objetos. Todo en Java es un objeto (salvo
algunas excepciones), y todo en Java reside en alguna clase (recordemos
que una clase es un molde a partir del cual pueden crearse varios objetos).
A diferencia de C++, Java no tiene sobrecarga de operadores o herencia
múltiple para clases, aunque la herencia múltiple está disponible para
interfaces.
JAVA
-Es tanto un lenguaje de programación como una
plataforma de Software:

 ¿Qué es un lenguaje de programación?: Es un lenguaje formal


que, mediante una serie de instrucciones, le permite a un
programador escribir un conjunto de órdenes, acciones consecutivas,
datos y algoritmos para, de esa forma, crear programas que controlen
el comportamiento físico y lógico de una máquina.
 Las plataformas de software: Las plataformas de software puede
ser un sistema operativo o entorno de programación, aunque más
comúnmente se trata de una combinación de ambos. Una notable
excepción a esto es Java, que utiliza un sistema operativo
independiente de la máquina virtual para cada código compilado,
conocido en el mundo de Java como bytecode.
 El código binario de Java para esta máquina virtual recibe el nombre
de Bytecode. Este código binario de Java es transformado
a código binario de la máquina real por la máquina virtua a través de
su compilador JIT (Just in Time) en el momento de la ejecución.
JVM bytecode es el formato binario de código ejecutable por la máquina
virtual de java. Algo así como el famoso lenguaje máquina "assembler",
pero para la VM de java.
 Bytecode: Es un lenguaje intermedio. El programador, durante el
proceso de desarrollo escribe el código fuente en Java y lo pasa por
un compilador, que da lugar a los bytecodes.
 Plataforma Java: Como ya se ha señalado, la plataforma Java es
una excepción a la regla general de que un sistema operativo es una
plataforma de software. El lenguaje Java requiere de una máquina
virtual, o un "CPU virtual" en el que se ejecuta todo el código que se
escribe en el lenguaje. Esto permite que el mismo ejecutable binario
pueda ejecutarse en todos los sistemas, apoyado por el software Java,
a través del uso de una máquina virtual Java (JVM). Ejecutables de
Java no se ejecutan de forma nativa en el sistema operativo, es decir,
ni de Windows, ni Linux ejecutan programas Java directamente.
CARACTERISTICAS DE JAVA
 SIMPLE:

Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las


características menos usadas y más confusas de éstos. C++ es un lenguaje
que adolece de falta de seguridad, pero C y C++ son lenguajes más
difundidos, por ello Java se diseñó para ser parecido a C++ y así facilitar
un rápido y fácil aprendizaje.

Java elimina muchas de las características de otros lenguajes como C++,


para mantener reducidas las especificaciones del lenguaje y añadir
características muy útiles como el garbage collector (reciclador de
memoria dinámica). No es necesario preocuparse de liberar memoria, el
reciclador se encarga de ello y como es un thread de baja prioridad, cuando
entra en acción, permite liberar bloques de memoria muy grandes, lo que
reduce la fragmentación de la memoria.
Java reduce en un 50% los errores más comunes de programación con
lenguajes como C y C++ al eliminar muchas de las características de éstos

 ORIENTADO A OBJETOS:

Java trabaja con sus datos como objetos y con interfaces a esos objetos.
Soporta las tres características propias del paradigma de la orientación a
objetos: encapsulación, 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.

 DISTRIBUIDO:

Java se ha construido con extensas capacidades de interconexión TCP/IP.


Existen librerías de rutinas para acceder e interactuar con protocolos como
http y ftp. Esto permite a los programadores acceder a la información a
través de la red con tanta facilidad como a los ficheros locales.

 ROBUSTO

Java verifica su código al mismo tiempo que lo escribe, y una vez más
antes de ejecutarse, de manera que se consigue un alto margen de
codificación sin errores. Se realiza un descubrimiento de la mayor parte de
los errores durante el tiempo de compilación, ya que Java es estricto en
cuanto a tipos y declaraciones, y así lo que es rigidez y falta de flexibilidad
se convierte en eficacia. Respecto a la gestión de memoria, Java libera al
programador del compromiso de tener que controlar especialmente la
asignación que de ésta hace a sus necesidades específicas. Este lenguaje
posee una gestión avanzada de memoria llamada gestión de basura, y un
manejo de excepciones orientado a objetos integrados. Estos elementos
realizarán muchas tareas antes tediosas a la vez que obligadas para el
programador.

 ARQUITECTURA NEUTRAL
Java está diseñado para que un programa escrito en este lenguaje sea
ejecutado correctamente independientemente de la plataforma en la que se
esté actuando (Macintosh, PC, UNIX...). Para conseguir esto utiliza una
compilación en una representación intermedia que recibe el nombre de
códigos de byte (bytecodes), que pueden interpretarse en cualquier sistema
operativo con un intérprete de Java. La desventaja de un sistema de este
tipo es el rendimiento; sin embargo, el hecho de que Java fuese diseñado
para funcionar razonablemente bien en microprocesadores de escasa
potencia, unido a la sencillez de traducción a código máquina hacen que
Java supere esa desventaja sin problemas.
 SEGURO
Existe una preocupación lógica en Internet por el tema de la seguridad:
virus, caballos de Troya, y programas similares navegan de forma usual por
la red, constituyendo una amenaza palpable. Java ha sido diseñado
poniendo un énfasis especial en el tema de la seguridad, y se ha conseguido
lograr cierta inmunidad en el aspecto de que un programa realizado en Java
no puede realizar llamadas a funciones globales ni acceder a recursos
arbitrarios del sistema, por lo que el control sobre los programas
ejecutables no es equiparable a otros lenguajes.
Los niveles de seguridad que presenta son:
 Fuertes restricciones al acceso a memoria, como son la eliminación
de punteros aritméticos y de operadores ilegales de transmisión.
 Rutina de verificación de los códigos de byte que asegura que no se
viole ninguna construcción del lenguaje.
 Verificación del nombre de clase y de restricciones de acceso
durante la carga.
 Sistema de seguridad de la interfaz que refuerza las medidas de
seguridad en muchos niveles.
En futuras versiones se prevé contar también con encriptación y técnicas
similares.
 PORTABLE
Más allá de la portabilidad básica por ser de arquitectura independiente,
Java implementa otros estándares de portabilidad para facilitar el
desarrollo. Los enteros son siempre enteros y además, enteros de 32 bits en
complemento a 2. Además, Java construye sus interfaces de usuario a
través de un sistema abstracto de ventanas de forma que las ventanas
puedan ser implantadas en entornos Unix, Pc o Mac.

 INTERPRETADO:

El intérprete Java (sistema run-time) puede ejecutar directamente el código


objeto. Enlazar (linkar) un programa, normalmente, consume menos recursos
que compilarlo, por lo que los desarrolladores con Java pasarán más tiempo
desarrollando y menos esperando por el ordenador. No obstante, el
compilador actual del JDK es bastante lento. Por ahora, que todavía no hay
compiladores específicos de Java para las diversas plataformas, Java es más
lento que otros lenguajes de programación, como C++, ya que debe ser
interpretado y no ejecutado como sucede en cualquier programa tradicional.

 MULTITHREADED

Al ser multithreaded (multihilvanado, en mala traducción), Java permite


muchas actividades simultáneas en un programa. Los threads (a veces
llamados, procesos ligeros), son básicamente pequeños procesos o piezas
independientes de un gran proceso. Al estar los threads contruidos en el
lenguaje, son más fáciles de usar y más robustos que sus homólogos en C o
C++.

El beneficio de ser miltithreaded consiste en un mejor rendimiento interactivo


y mejor comportamiento en tiempo real. Aunque el comportamiento en
tiempo real está limitado a las capacidades del sistema operativo subyacente
(Unix, Windows, etc.), aún supera a los entornos de flujo único de programa
(single-threaded) tanto en facilidad de desarrollo como en rendimiento.

Java logra llevar a cabo varias tareas simultáneamente dentro del mismo
programa. Esto permite mejorar el rendimiento y la velocidad de ejecución.

 DINAMICO

Java se beneficia todo lo posible de la tecnología orientada a objetos. Java no


intenta conectar todos los módulos que comprenden una aplicación hasta el
tiempo de ejecución. Las librerías nuevas o actualizadas no paralizarán las
aplicaciones actuales (siempre que mantengan el API anterior).

 TIPIFICADO
Un lenguaje de programación es fuertemente tipado si no se permiten
violaciones de los tipos de datos, es decir, dado el valor de una variable de
un tipo concreto, no se puede usar como si fuera de otro tipo distinto a
menos que se haga una conversión.

JDK
El JDK es el Java Development Kit, que traducido al español
significa, Herramientas de desarrollo para Java, en cortas palabras es un
conjunto de herramientas (librerías y programas) que permiten desarrollar
en lenguaje Java. Cuando hablamos de desarrollar esto incluye compilar,
ejecutar, generar documentación, etc.
Las variables de entorno más importantes que se incluyen son:
o Javac: es el compilador de JAVA. Convierte nuestro código fuente
(.java) en bytecode (.class) el cual posteriormente sera interpretado y
ejecutado con la JVM, Java Virtual Machine por sus siglas en ingles,
que nuevamente al español es La Maquina Virtual de Java 
o Java: es el intérprete de JAVA.
o Javadoc: genera la documentación de las clases java de un
programa.
o Appletviewer: es un visor de applet para generar sus vistas
previas,ya que un applet carece de método main y no se puede
ejecutar con el programa java.
o Jar: para manipular ficheros .jar(un fichero .jar es una colección de
clases Java y otros ficheros empaquetados en uno solo).
o Javah: que es un fichero de cabecera para escribir metodos nativos.
o Javap: para descompilar ficheros compilados.
o Extcheck: para detectar conflictos jar.

Es necesario distinguir claramente entre dos partes muy diferenciadas dentro


de la plataforma Java:

 JRE (Java Runtime Environment): su objeto es aportar el entorno


necesario para ejecutar una aplicación Java. Forman parte del JRE
la máquina virtual Java o JVM (Java Virtual Machine), encargada de
ejecutar el bytecode Java, así como las bibliotecas que ofrecen los
servicios definidos en la plataforma.
 JDK (Java Development Kit): es el paquete de herramientas precisas para
llevar a cabo el desarrollo de dicha aplicación.  Este JDK es un
superconjunto del JRE, al que agrega herramientas como el compilador
Java. Este toma el código fuente Java y genera como resultado bytecode,
un formato de código objeto independiente del sistema operativo y el
hardware.

JRE
El JRE es el Java Runtime Environment, en español significa Entorno
de Ejecución de Java, en pocas palabras es la implementación de la
Máquina virtual de Java que realmente ejecuta los programas de
Java conocida como JVM, un conjunto de Java y otros componentes
innecesarios para que una aplicación escrita en lenguaje c++ pueda ser
ejecutada. El JRE actúa como un «intermediario» entre el sistema y Java.
 
Este ambiente de ejecución para aplicaciones Java (JRE) está compuesto
por dos importantes áreas, la primera son las clases que conforman el API
de java y la segunda es la JVM.
 
 El API son todas las clases que componen el ambiente Java y que al
momento de ser utilizadas desde la aplicación podrán ser ejecutadas
y/o interpretadas por la JVM.
 La JVM es un componente de software que actúa justamente como
una máquina virtual o un espacio virtual de memoria donde se
ejecutan las aplicaciones Java.
 
La JVM es el programa que interpreta el código Java mientras que las
librerías de clases estándar son las que implementan el API de Java. Ambas
JVM y API deben ser consistentes entre sí, de ahí que sean distribuidas de
modo conjunto.
 
Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas
en lenguaje Java, mientras que para desarrollar nuevas aplicaciones en
dicho lenguaje es necesario un entorno de desarrollo, denominado JDK,
que además del JRE (mínimo imprescindible) incluye, entre otros, un
compilador para Java.

Qué es una API


El término API es una abreviatura de Application Programming Interfaces,
que en español significa interfaz de programación de aplicaciones. Se trata
de un conjunto de definiciones y protocolos que se utiliza para desarrollar e
integrar el software de las aplicaciones, permitiendo la comunicación
entre dos aplicaciones de software a través de un conjunto de reglas.

Así pues, podemos hablar de una API como una especificación formal
que establece cómo un módulo de un software se comunica o interactúa
con otro para cumplir una o muchas funciones. Todo dependiendo de las
aplicaciones que las vayan a utilizar, y de los permisos que les dé el
propietario de la API a los desarrolladores de terceros.

JVM
Los programas Java se compilan a un formato binario .class que contiene
instrucciones en un lenguaje de bajo nivel especial independiente de la
plataforma, llamado Byte Code. Existe un componente de Java que debe estar
instalado en cada sistema operativo que se llama Java Virtual Machine o JVM. La
JVM es capaz de entender el Byte Code y ejecutarlo con las instrucciones
equivalentes que haya en el sistema operativo y procesador actuales en el que
estemos ejecutándolo. Esto es una gran ventaja porque nos permite ejecutar
código Java en cualquier plataforma para la que exista una JVM (en la práctica,
casi cualquiera).

POO
La programación orientada a objetos (POO, u OOP según sus siglas
en inglés) es un paradigma (modelo) de programación que viene a innovar
la forma de obtener resultados. Los objetos manipulan los datos de entrada
para la obtención de datos de salida específicos, donde cada objeto ofrece
una funcionalidad especial.

La programación orienta a objetos es una forma especial de pensar,


nos permite modelar nuestra realidad dentro de un entorno de
programación, partiendo de la primicia de que todo en esta vida es un
objeto programable.

UML, lenguaje de modelado GRÁFICO


El lenguaje de modelado unificado (UML) es un estándar para la
representación visual de objetos, estados y procesos dentro de un sistema.
Por un lado, el lenguaje de modelado puede servir de modelo para un
proyecto y garantizar así una arquitectura de información estructurada; por
el otro, ayuda a los desarrolladores a presentar la descripción del sistema de
una manera que sea comprensible para quienes están fuera del campo.
UML se utiliza principalmente en el desarrollo de software orientado a
objetos

VENTAJAS DE LA PROGRAMACION ORIENTADA A OBJETO

 Reusabilidad. Cuando hemos diseñado adecuadamente las clases, se


pueden usar en distintas partes del programa y en numerosos
proyectos.
 Mantenibilidad. Debido a las sencillez para abstraer el problema, los
programas orientados a objetos son más sencillos de leer y
comprender, pues nos permiten ocultar detalles de implementación
dejando visibles sólo aquellos detalles más relevantes.
 Modificabilidad. La facilidad de añadir, suprimir o modificar nuevos
objetos nos permite hacer modificaciones de una forma muy sencilla.
 Fiabilidad. Al dividir el problema en partes más pequeñas podemos
probarlas de manera independiente y aislar mucho más fácilmente
los posibles errores que puedan surgir.

La programación orientada a objeto beneficia tanto a los programadores


como a todos aquellos que contribuyen en el proyecto. Durante la etapa de
análisis, cuando se emplea este paradigma de programación se emite una
serie de beneficios, estas ventajas son aplicadas en todas las fases del ciclo
de vida de un proyecto software.

El modelado orientado a objetos tiende al refinamiento sucesivo de


manera que se llega a la etapa de implementación con un diseño lo
suficientemente explícito para que no existan casos inesperados y todo
independientemente del lenguaje de programación (salvo en etapas muy
próximas a la implementación donde no hay más remedio que contar con el
soporte que se recibe del lenguaje elegido).

CONCEPTOS BÁSICOS DE LA ORIENTACIÓN A OBJETO


 CLASE
Descripción de objeto. Consta de una serie de métodos y datos que resumen
las características de este objeto. Definir clases permite trabajar con código
reutilizable. Puesto que desde una clase se puede crear una instancia y así
reutilizar el código escrito para esta si tener que volver a escribir el código
para la instancia. La instancia toma el patrón de la clase padre. Sin embargo,
las variables son idependientes. Una clase es una plantilla. Define de manera
genérica cómo van a ser los objetos de determinado tipo. Por ejemplo, en un
juego, una clase para representar a personas puede llamarse Persona y tener
una serie de atributos como Nombre, Apellidos o Edad (que normalmente
son propiedades), y una serie de comportamientos que pueden tener,
como Hablar(), Caminar() o Comer() y que se implementan
como métodos de la clase (funciones).
Una clase por sí sola no sirve de nada, pues no es más que un concepto, sin
entidad real. Para poder utilizar una clase en un programa lo que hay que hacer
es instanciarla. Instanciar una clase consiste en crear un nuevo objeto concreto
de la misma. Es decir, un objeto es ya una entidad concreta que se crea a partir
de la plantilla que es la clase. Este nuevo objeto tiene ya "existencia" real,
puesto que ocupa memoria y se puede utilizar en el programa. Así un objeto
puede ser una persona que se llama Cristina López, de 37 años y que en
nuestro programa podría hablar, caminar o comer, que son los
comportamientos que están definidos en la clase.
Podemos definir informalmente una clase como una plantilla (o
esqueleto o plano) a partir de la cual se crean los objetos.

 OBJETO

Un objeto en POO representa alguna entidad de la vida real, es decir,


alguno de los objetos únicos que pertenecen al problema con el que nos
estamos enfrentando, y con el que podemos interactuar.

Cada objeto, de igual modo que la entidad de la vida real a la que


representa, tiene un estado (es decir, unos atributos con unos valores
concretos) y un comportamiento (es decir, tiene funcionalidades o sabe
hacer unas acciones concretas). Informalmente, podemos decir que un
objeto es cualquier elemento único del mundo real con el que se pueda
interactuar.

 ATRIBUTO

Es una característica de un objeto, que ayuda a definir su estructura y


permite diferenciarlo de otros objetos. Se define con un identificador y un
tipo, el cual indica los valores que puede almacenar. El conjunto de valores
de los campos definen el estado del objeto.

 MÉTODOS

Los métodos son los comportamientos o conductas de un objeto y permite


identificar la forma en que actúa respecto a su entorno o respecto a otros
objetos. Además, representa una operación o función que un objeto realiza.
El conjunto de los métodos de un objeto determinan el comportamiento
general del objeto.

 INSTANCIA

Se llama instancia a todo objeto que derive de algún otro. De esta forma,
todos los objetos son instancias de algún otro, menos la clase Object que es
la madre de todas.
El proceso de crear un objeto a partir de una clase se llama Instanciar y
cada objeto creado también se le puede llamar Instancia.Con una sola clase
podemos crear cientos de usuarios (Instancias) sin tener que escribir código
para cada uno de ellos.
El proceso de crear un objeto a partir de una clase se llama Instanciar y
cada objeto creado también se le puede llamar Instancia. Con una sola clase
podemos crear cientos de usuarios (Instancias) sin tener que escribir código
para cada uno de ellos.
 HERENCIA
La herencia es específica de la programación orientada a objetos, donde
una clase nueva se crea a partir de una clase existente. La herencia (a la que
habitualmente se denomina subclase) proviene del hecho de que la subclase
(la nueva clase creada) contiene los atributos y métodos de la clase
primaria. La principal ventaja de la herencia es la capacidad para definir
atributos y métodos nuevos para la subclase, que luego se aplican a los
atributos y métodos heredados.
Es una propiedad que permite crear clases a partir de otras ya existentes,
obteniendo características (métodos y atributos) similares a los ya
existentes.En otras palabras la nueva clase (subclase o clase derivada)
puede utilizar la misma implementación de su superclase (clase base) o
especificar
una nueva implementación.
 POLIMORFISMO
En POO, el concepto de polimorfismo se refiere al hecho de que varios
objetos de diferentes clases, pero con una base común, se pueden usar de
manera indistinta, sin tener que saber de qué clase exacta son para poder
hacerlo.
Supongamos que en nuestro juego tenemos un montón de personajes que
están juntos en un mismo escenario. Hay varios piratas, algunos estrategas
y un montón de otros tipos de personas. En un momento dado necesitamos
que todos se pongan a hablar. Cada uno lo hace de una forma diferente, ya
que son tipos de personajes distintos. Sería algo bastante tedioso tener que
localizar primero a los de un tipo y hacerlos hablar, lo luego a los de otro y
así sucesivamente. La idea es que puedas tratarlos a todos como personas,
independientemente del tipo específico de persona que sean y simplemente
decirles que hablen.
Al derivar todos de la clase Persona todos pueden hablar, y al llamar al
método Hablar() de cada uno de ellos se utilizará el proceso adecuado
según el tipo (los piratas meterán sus expresiones adicionales que hemos
visto, los pilotos dirán "Entrando en pista" o lo que sea, y los estrategas
añadirán a todo "Déjame que lo piense bien"). Todo esto de manera
transparente para el programador. Esto es el polimorfismo.
De hecho, el polimorfismo puede ser más complicado que eso ya que se
puede dar también mediante la sobrecarga de métodos y, sobre todo, a
través del uso de interfaces, pero el concepto es el que acabo de explicar.
El polimorfismo nos permite utilizar a los objetos de manera genérica,
aunque internamente se comporten según su variedad específica.
Ejemplo de Polimorfismo
Un ejemplo clásico de poliformismo es el siguiente. Podemos crear dos
clases distintas: Gato y Perro, que heredan de la superclase Animal. La
clase Animal tiene el método abstracto makesound() que se implementa de
forma distinta en cada una de las subclases (gatos y perros suenan de forma
distinta). Entonces, un tercer objeto puede enviar el mensaje de hacer
sonido a un grupo de objetos Gato y Perro por medio de una variable de
referencia de clase Animal, haciendo así un uso polimórfico de dichos
objetos respecto del mensaje mover.
ABSTRACCIÓN
La abstracción es un proceso de interpretación y diseño que implica
reconocer y enfocarse en las características importantes de una situación u
objeto, y filtrar o ignorar todas las particularidades no esenciales.
 Dejar a un lado los detalles de un objeto y definir las características
específicas de éste, aquellas que lo distingan de los demás tipos de
objetos.
 Hay que centrarse en lo que es y lo que hace un objeto, antes de
decidir cómo debería ser implementado.
 Se hace énfasis en el qué hace más que en el cómo lo hace
Abstracción

De acuerdo a la RAE, una de las acepciones de abstraer es:

“Hacer caso omiso de algo, o dejarlo a un lado.” Y ofrece como


ejemplo: “Centremos la atención en lo esencial abstrayendo DE
consideraciones marginales.”

El ejemplo dado captura la esencia del concepto de abstraer.


Cuando hacemos una abstracción, queremos omitir detalles que
no son necesarios para nosotros, y queremos solamente mostrar lo
que sí es relevante.

Desde el punto de vista del desarrollo de software, podemos ver


que con una clase podemos realizar una abstracción de una
entidad del mundo real. Tomemos por ejemplo la clase carro que
hicimos, esta tiene la posibilidad de guardar datos relacionados a
la marca y al año de salida al mercado del carro, pero, ¿Por qué
solamente estas dos informaciones? Un carro del mundo real tiene
más propiedades, como el color y el modelo. Sin embargo,
debemos preguntarnos, ¿Son estas informaciones relevantes para
nuestro software?

Nuestra clase abstrae todo lo que representa un carro, tomando


solamente lo que nos interesa, descartando todo lo demás.

 ENCAPSULAMIENTO
 Es la propiedad que permite asegurar que la información de un
objeto está oculta del mundo exterior.
 El encapsulamiento consiste en agrupar en una Clase las
características (atributos) con un acceso privado y los
comportamientos (métodos) con un acceso público.
 Acceder o modificar los miembros de una clase a través de sus
métodos.
Ya sabes que puedes utilizar clases para modelar entidades las cuales son
relevantes para tu aplicación, sabes además que puedes guardar datos
dentro de objetos, y también ejecutar funcionalidad. La pregunta que
debemos hacernos es, ¿Debe cualquiera poder modificar de manera directa
estos datos? ¿Debe cualquiera ejecutar cualquier funcionalidad de nuestros
objetos en cualquier momento? Normalmente esto no es algo que
queremos, nosotros queremos poder controlar la manera en que se asignen
los datos, queremos poder controlar quién ve la data interna de nuestros
objetos, e incluso quizás queramos controlar la ejecución de funcionalidad
de nuestros objetos. Para esto tenemos el concepto de encapsulamiento.
El encapsulamiento nos permite controlar quien puede ver y utilizar los
distintos módulos internos de nuestro sistema. En términos de clases, con el
encapsulamiento definimos el acceso a los miembros de la clase.
TIPOS DE DATOS EN JAVA
Los tipos de datos primitivos se usan para definir variables en Java- El tipo
de dato especificado junto con un identificador en el momento de la
declaración de la variable define el rango de valores que puede ser
almacenado en esta variable. Java provee ocho tipos de datos primitivos.
Tipo primitivo.

Una variable de tipo primitivo contiene un solo valor del tamaño y


formato apropiado de su tipo: un número, un carácter, o un valor
booleano.

¿Qué son los tipos de datos primitivos en Java?


Como ya hemos comentado Java es un lenguaje de tipado estático.
Es decir, se define el tipo de dato de la variable a la hora de definir
esta. Es por ello que todas las variables tendrán un tipo de dato
asignado.
El lenguaje Java da de base una serie de tipos de datos primitivos.

 byte
 short
 int
 long
 float
 double
 boolean
 char

Es importante saber que estos son tipos de datos del lenguaje y que
no representan objetos. Cosa que sí sucede con el resto de
elementos del lenguaje Java.
Tipos de datos primitivos en Java
Java cuenta con un pequeño conjunto de tipos de datos primitivos. Podríamos
considerarlos fundamentales, ya que la mayor parte de los demás tipos, los
tipos estructurados o complejos, son composiciones a partir de estos más
básicos. Estos tipos de datos primitivos sirven para gestionar los tipos de
información más básicos, como números de diversas clases o datos de tipo
verdadero/falso (también conocidos como "valores booleanos" o simplemente
"booleanos").
De estos tipos primitivos, ocho en total, seis de ellos están destinados a facilitar
el trabajo con números. Podemos agruparlos en dos categorías: tipos numéricos
enteros y tipos numéricos en punto flotante. Los primeros permiten operar
exclusivamente con números enteros, sin parte decimal, mientras que el
segundo grupo contempla también números racionales o con parte decima

Tipos de datos primitivos en Java


Los datos primitivos son solo valores únicos; ellos no tienen capacidades especiales. Java
soporta 8 tipos de datos primitivos:

Los tipos de datos primitivos se pueden organizar en 4 grupos:

 Numéricos enteros: Son los tipos byte, short, int y long. Los 4 representan


números enteros con signo.
 Carácter: El tipo char representa un carácter codificado en el sistema unicode.
 Numérico decimal: Los tipos float y double representan números decimales en
coma flotante.
 Lógicos: El tipo boolean es el tipo de dato lógico; los dos únicos posibles valores
que puede representar un dato lógico son true y false. true y false son palabras
reservadas de Java.

Pese a que String no es un tipo de dato primitivo, también es utilizado al declarar


variables.

Tipos Referencias

Los arreglos, las clases y las interfaces son del tipo referencia. El
valor de una variable del tipo referencia es una dirección de un
conjunto de valores representados por una variable.
Las referencias en Java no son como en C++, éstas son
identificadores de instancias de alguna clase en particular.

Java es un lenguaje de programación orientado a objetos, y por


esto todo el esfuerzo de programación está enfocado a la creación
de clases. Java también permite la creación de interfaces que son
similares a las clases. Los identificadores usados para identificar a
las clases e identificadores mantienen la dirección de la posición
de la memoria.
CLASES ENVOLVENTES
Java provee clases envolventes para cada uno de los de datos
primitivos. Una clase envolvente da la funcionalidad de una clase
para un tipo de datos primitivo. Estas clases envolventes tienen
métodos que permiten manipular el tipo de dato primitivo
correspondiente que ellos envuelven. Los tipos de datos
primitivos tienen conjuntos de operaciones que se pueden usar
con ellos. Sin embargo, cuando se quiere proveer algunas
funciones utilitarias para un tipo de dato en particular, se usan las
clases envolventes y se proveen funciones primitivas dentro de las
clases envolventes. Ellas son:
 La Clase java.lang.Boolean
 La Clase java.lang.Byte
 La Clase java.lang.Short
 La Clase java.lang.Character
 La Clase java.lang.Long
 La Clase java.lang.Integer
 La Clase java.lang.Float
 La Clase java.lang.Double
VARIABLE
Algunas normas para la declaración de variables y atributos son:
 Los nombres deben empezar con una letra, subrayado o dólar. No
hay límite.
 Los nombres pueden contener letras, números, subrayado y dólar.
 No debe haber espaciado.
 No hay límite de longitud.
 No puede declararse palabras reservadas.
Para declarar o inicializar una variable consta de dos pasos:
 Especificar el tipo de dato de la variable, seguido por el
identificador: int edad;
 Inicializar la variable, donde el valor inicial es especificado. La
inicialización de la variable: edad=18;

También podría gustarte