0% encontró este documento útil (0 votos)
324 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. Otra característica clave es que es orientado a objetos.

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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
324 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. Otra característica clave es que es orientado a objetos.

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 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