Está en la página 1de 15

MÓDULO 1.

INTRODUCCIÓN A JAVA (JSE)


Ediciones
Existen tres ediciones de Java:
• JSE 8: Forman parte de este grupo los paquetes de clases de uso general, es decir,
aquellos que se utilizan en cualquier tipo de aplicación (tratamiento de cadenas,
colecciones, acceso a datos, etc.…), además de los paquetes para la creación de
entornos gráficos y aplicaciones para navegadores Internet (applets).
• JEE 7: En esta edición encontramos las clases e interfaces que posibilitan la
creación de aplicaciones Empresariales de tres capas, entre otros, las aplicaciones
para la Web.
• JME 7: Orientado a pequeños dispositivos móviles (teléfonos, tabletas, etc.).
El siguiente diagrama conceptual ilustra los componentes de los productos de Oracle Java
SE:

Funcionamiento
En el lenguaje de programación Java, el código fuente se escribe en archivos con extensión
“.java”. El compilador “javac” convierte los códigos fuentes en código binario con
extensión “.class”, si no hay ningún error ni léxico, ni sintáctico, ni semántico en el código
fuente. Veamos en la siguiente imagen como es el proceso:

 
Los programas en Java pasan por dos fases de compilación:
 En la propia compilación (javac) código fuente se traduce a “bytecodes”, para tener
portabilidad a través de las diferentes JVMs de los distintos procesadores y sistemas
operativos.
 En la ejecución (java), los “bytecodes” se traducen en lenguaje máquina nativo para el
procesador en el que se ejecuta el programa.
En la imagen siguiente, se muestra como en la segunda fase se genera el código nativo por
el compilador “en ejecución” JIT:

Compilar y ejecutar programas en Java


Para poder escribir el código fuente de un programa en Java, no se necesita nada más que
un editor de texto, como en Windows puede ser “Notepad.exe”. Pero es normal que, en vez
de utilizar esta herramienta tan básica, se utilicen entornos de desarrollo que incorporan e
integran funcionalidades y utilidades que mejoran el rendimiento en la creación y
actualización de los códigos Java de las aplicaciones, porque permiten editar, compilar,
ejecutar, depurar y chequear todos los elementos que en Java forman parte de una
aplicación.
La imagen siguiente muestra cómo se llega a ejecutar el programa Java, empezando con su
edición.

ENTORNOS DEL PROYECTO

Administradores de archivos y proyectos

Permiten trabajar diferentes tipos de proyectos no solo java

MÓDULO 2. ORIENTACIÓN A OBJETOS.


Clases, datos y métodos
Clases
Las clases definen la estructura y el comportamiento de los objetos de un tipo particular.
Podemos decir que las clases son en realidad modelos de objetos del mismo tipo.
En Java las clases se implementan con la palabra reservada class. Una class es un bloque
({ }) en el que se definen las propiedades o atributos (variables) y los métodos o
funcionalidades (funciones).

Variables
Las variables miembro dentro de la definición de una clase son de dos tipos:
 de instancia: son los atributos que tendrá cada objeto, son espacios de memoria
en los que se almacenan los datos de cada objeto. Se crean cuando se crea el objeto
y se liberan cuando se liberan los objetos.
 de clase: son atributos que comparten todos los objetos de una clase, no
pertenecen a ningún objeto son de la clase. Se definen utilizando la palabra static.
La definición de cualquiera de los dos tipos es casi como se ha visto hasta este momento
para la definición de variables dentro de la función main, añadiendo el modificador de
acceso a dicha variable, que se define con las palabras clave private, protected, public o
sin ninguna de ellas, tal y como sigue: 

Métodos
Los métodos son las funciones miembros de la clase que van a definir el comportamiento
de los objetos y como la variables son de dos tipos:
 de instancia: son las funciones miembros que definen realmente el
comportamiento de los objetos. Son llamadas para un objeto en concreto y en su
código pueden acceder a las variables (atributos) del objeto implementando la
funcionalidad que las corresponda.
 de clase: son funciones de las clases, no de los objetos y por tanto sólo pueden
acceder a sus variables de clase. Se definen como las funciones anteriores, pero
utilizando la palabra static.

 
En Java existen cuatro modificadores de acceso para definir el ámbito desde el que puede
ser usadas las clases, las variables y los métodos, tal y como se indica en la tabla siguiente:
Crear objetos
Para poder crear objetos de una clase se utiliza el operador new. Este operador devuelve
una referencia al objeto instanciado.
Las variables de instancia no hace falta inicializarlas, cuando se crea un objeto, el valor que
se almacene en el espacio de dicha variable es 0 para los números, false para los booleanos
y null si son referencias a otros tipos de objetos (por ejemplo, String).
Cuando se crea el objeto se invoca a una de sus funciones constructoras. El objetivo de
estas funciones es inicializar con valores determinados las variables miembro de la clase.
Si en una clase no se ha definido ningún constructor, es como si Java pusiese uno que no
hace nada. Esto es así, porque a la derecha del operador new siempre hay especificar el
nombre de la clase y entre paréntesis la lista de parámetros de uno de los constructores
definidos, al no tener ninguno hay que especificar el nombre de la clase y los paréntesis, tal
y como se aprecia en la figura anterior.
El formato genérico de utilización del operador new es el siguiente:

Concepto de herencia
En Java la herencia se implementa con la palabra reservada extends, quizás la elección de
esta palabra fue con el propósito de enfatizar que las subclases (clases que heredan) son una
extensión u especialización de las superclases (clases de las que se hereda).
Las superclases son una generalización y las subclases una especialización.
Una subclase sólo puede tener una superclase y una superclase puede tener varias
subclases, porque Java sólo implementa la herencia simple.
La herencia es la implementación de la jerarquía de clases.
En Java la clase raíz de todas las clases es la clase Object y cuando una clase no hereda
explícitamente de ninguna otra, lo está haciendo de Object.
Cuando se instala JDK 8, se pueden utilizar todas las clases de la jerarquía de clases JSE 8,
cuya documentación se puede consultar en: https://docs.oracle.com/javase/8/docs/api/
Palabra “super”
Cuando se crea un objeto de una subclase, el objeto se tiene que construir como un objeto
de la superclase.
Esto se implementa utilizando la palabra super dentro de los constructores de las subclases
invocando a uno de los constructores de la superclase.
Por tanto, el orden de construcción de los objetos de subclases es primero el constructor de
la superclase, después el de la subclase.
En la jerarquía de las imágenes anteriores las clases con sus datos y un constructor por cada
una de ellas se muestra en el código siguiente:
Clases abstractas y polimorfismo
Clases abstractas
Si de una clase nunca se van a instanciar objetos, se denomina abstracta. Esto significa
que dicha clase define una representación (datos) y un comportamiento (métodos) comunes
a las clases que hereden de ella, los objetos serán instanciados de dichas clases, las cuales
podrán especializar las funcionalidades, sobrepasando los métodos y podrán añadir más
atributos incorporando más variables miembro.
En java las clases abstractas se implementan utilizando el modificador abstract.
Polimorfismo
El polimorfismo se implementa cuando con un identificador de tipo superclase se referencia
a un objeto instanciado de una subclase y se invoca a una función que dicha subclase
sobrepasa.
En el código siguiente:

Se invoca la función vender con una referencia a la superclase Pieza, pero en tiempo de
compilación no se puede saber que vender será el que se ejecute.
La forma pieza.vender(cantidad) es polimórfica, independientemente de que la clase Pieza
sea abstracta o no. El código del ejemplo siguiente muestra una aplicación del
polimorfismo con esta jerarquía de clases.

Paquetes de librerías
En Java el paquete es un elemento de organización, que permite agrupar clases, interfaces,
enumeraciones y otros paquetes, que tienen propósitos comunes.

La palabra reservada para designar en un fichero de código fuente el paquete en el que esta
la clase o clases o enumeraciones definidas en dicho fichero es package. Su sintaxis es la
del formato siguiente:

En el siguiente vídeo vamos a ver diferentes características relacionadas con las librerías de
JSE.
ava.lang
Java.util
Math

Interfaces
Una interfaz es un conjunto de declaraciones de funciones. Sólo se declara la "firma" de las
funciones, el tipo que retorna, el identificador con el que debe ser invocada y la lista de
parámetros de la llamada. El código de las funciones se implementará en clases.
La palabra reservada para definir una interfaz es interface.
Esto se parece a las clases abstractas y las funciones abstractas. Pero las diferencias son:
 Las funciones abstractas de las clases abstractas deben ser implementadas en
las subclases. Una subclase sólo puede tener una superclase.
 Todas las funciones de una interface tienen que ser implementadas en una
clase. Una clase puede implementar varias interfaces.
 En una clase abstracta puede haber funciones que no lo sean y por tanto este
implementado su código.
 Una clase sólo puede tener una subclase pero puede implementar varias
interfaces.
Veamos un ejemplo de definición de interfaces.

Trabajando con interfaces


Implementación:
Cuando una clase tiene que implementar una interface debe utilizar la palabra reservada
implements.
Una clase que implementa una interface esta obligada a definir todas las funciones de dicha
interface.
El formato general de una clase que implementa una interfaz es el siguiente:

Método default:
A partir de la versión 8 de JDK, se pueden definir en una interface funciones que
implementen su código. Dichas funciones tienen que estar calificadas como default.
Los propósitos de la utilización de estos métodos predeterminados son:
 Ampliación de una interfaz: Si a una interface se le añade una función, hay
que escribir su código en todas las funciones que implementen dicha interfaz,
aunque el cambio no las afecte. Si la función que se añade es default, no hace
falta definirla en ninguna clase excepto en las que se vean afectadas por el
cambio.
 Métodos opcionales: Como las funciones default tienen código, su definición
en las clases que implementan su interface es opcional y dependiente del uso
de la misma.

Variables en interfaces:
En las interfaces se pueden declarar variables de cualquier tipo, pero son implícitamente
public, static y final. Son constantes públicas a las que se puede acceder desde las clases
que las implementan.
Referencias a interfaces:
Cuando una clase implementa una interface, los objetos instanciados de dicha clase pueden
ser utilizados por referencias a la interface implementada.
Con dicha referencia a interfaz sólo se podrán invocar al objeto las funciones declaradas a
la interfaz. Es un mecanismo parecido a utilizar una referencia a superclase para acceder a
objetos instanciados de subclase.

También podría gustarte