Está en la página 1de 40

Clases, atributos, Herencia y

Polimorfismo
Magister Víctor Andrade Soto
Logro
Al finalizar la sesión el estudiante crear clases con métodos de
definición y retorno de datos de una clase asociada a la clase
principal. Esta definición puede hacerse de forma manual o
usando el asistente como herramienta para los getter and
setter. Además se introducirá en los conceptos de herencia y
polimorfismo.
Utilidad
A que le llamamos clase comúnmente?
De que manera hombres y mujeres se diferencian?
Que es la herencia desde el punto de vista legal?
Transformación

Definición de datos gruesos Getter and Setter


Definición de atributos de una clase
Los atributos de una clase son definidos según esta sintaxis:
[modifVisibilidad] [modifAtributo] tipo nombreVariable [=
valorInicial] ;
Donde nombreVariable es el nombre que daremos a la variable, siendo
un nombre válido según las normas del lenguaje:
por convención, en Java, los nombres de las variables empiezan con
una letra minúscula (los nombres de las clases empiezan con una letra
mayúscula).
Un nombre de variable Java: debe ser un identificador legal de Java
comprendido en una serie de caracteres Unicode. Unicode es un
sistema de codificación que soporta texto escrito en distintos lenguajes
humanos. Unicode permite la codificación de 34.168 caracteres. Esto le
permite utilizar en sus programas Java varios alfabetos como el
Japonés, el Griego, el Ruso o el Hebreo. Esto es importante para que los
programadores pueden escribir código en su lenguaje nativo. no puede
ser el mismo que una palabra clave.
No deben tener el mismo nombre que otras variables cuyas
declaraciones aparezcan en el mismo ámbito.
Tipo es el tipo de la variable, pudiendo ser un tipo básico o un objeto
de una clase o de un interfaz. También puede ser una matriz o vector.
modifVisibilidad indica desde que parte del código se puede acceder a la
variable:

public: indica que es un atributo accesible a través de una instancia del


objeto.
private: indica que a través de una instancia no es accesible el atributo. Al
heredar el atributo se convierte en inaccesible.
protected: indica que a través de una instancia no es accesible el atributo. Al
heredar si se puede usar desde la clase derivada.
Sin especificar: indica visibilidad de paquete, se puede acceder a través de
una instancia, pero sólo desde clases que se encuentren en el mismo
paquete.
valorInicial permite inicializar la variable con un valor.
Se permite definir más de una variable, separándolas por coma, por ejemplo:

public int a = 5, b, c = 4;
modifAtributos son características específicas del atributo, son:

static: El atributo pertenece a la clase, no a los objetos creados a partir de


ella.
final: El atributo es una constante, en ese caso debe de tener valor inicial
obligatoriamente. Por convenio en java las constantes se escriben en
mayúsculas.
transient: Marca al atributo como transitorio, para no ser serializado. Lo
emplearemos en java beans.
volatile: es un atributo accedido de forma asíncrona mediante hilos, con este
atributo se lo notificamos a java.
En java definir un atributo de un tipo básico o tipo String significa que
podemos acceder a dichas variables de forma directa.

int a = 25;
a = 34;
Ejemplos con clases y atributos
Getter and Setter
Clase Ejemplo
Clase que usa a Estudiante
Generación automática
La clase
O también

ALT+INSERT
Ejercicio
Haga una interface Visual que permita enviar los datos a la clase
alumno y se añadan en un jTable.
Suba el ejercicio resuelto como práctica de la semana.
Fundamentos de Herencia y
polimorfismo
Magister Víctor Andrade Soto
Herencia
La herencia es un pilar importante de OOP (Programación Orientada a
Objetos). Es el mecanismo en Java por el cual una clase permite
heredar las características (atributos y métodos) de otra clase. Aprenda
más a continuación.
En el lenguaje de Java, una clase que se hereda se
denomina superclase. La clase que hereda se llama subclase. Por lo
tanto, una subclase es una versión especializada de una superclase.
Hereda todas las variables y métodos definidos por la superclase y
agrega sus propios elementos únicos.
Terminología importante
Superclase: la clase cuyas características se heredan se conoce como
superclase (o una clase base o una clase principal).
Subclase: la clase que hereda la otra clase se conoce como subclase (o
una clase derivada, clase extendida o clase hija). La subclase puede
agregar sus propios campos y métodos además de los campos y
métodos de la superclase.
Reutilización: la herencia respalda el concepto de “reutilización”, es
decir, cuando queremos crear una clase nueva y ya hay una clase que
incluye parte del código que queremos, podemos derivar nuestra
nueva clase de la clase existente. Al hacer esto, estamos reutilizando
los campos/atributos y métodos de la clase existente.
Polimorfismo
En programación orientada a objetos, polimorfismo es la capacidad que
tienen los objetos de una clase en ofrecer respuesta distinta e
independiente en función de los parámetros (diferentes
implementaciones) utilizados durante su invocación. Dicho de otro
modo el objeto como entidad puede contener valores de diferentes
tipos durante la ejecución del programa.
Herencia y polimorfismo
Para facilitar el diseño de una aplicación, se debe usar la herencia de la
programación orientada a objetos. Para explicar este término, haremos
otro Hola Mundo que usará una ventana, que contendrá una etiqueta;
esto requiere tres clases de la librería swing: JFrame, JPanel y JLabel.
Veamos la primera versión, sin orientación a objetos ni herencia, en la
que las clases colaboran para lograr los objetivos:
Cada una de las clases que estamos usando pertenece a tres
ámbitos distintos: JFrame es una ventana que sirve como
contenedor principal; JPanel es un contenedor de propósito
general que se usará para albergar a los componentes
como JLabel, o los botones, los campos de texto, etc. Todas
están colaborando con la clase que acabamos de compilar (de
ahí su nombre) para lograr el objetivo de mostrar en la
etiqueta la cadena “Hola mundo”. Es posible continuar en este
camino y agregar otros componentes al panel, más paneles a
la ventana y, por supuesto, más componentes a cada uno de
éstos nuevos contenedores. No obstante, esto es una mala
práctica.
Muy frecuentemente, es conveniente crear clases que al
momento de declararlas obtengan todos los métodos y las
propiedades de otra; a esto se le conoce como ‘herencia’ en la
POO. De hecho, todas las clases (aun las que creamos
nosotros) heredan de la clase Object si no se indica otra cosa;
dicha clase tiene casi una docena de métodos que están
disponibles incluso antes de que escribamos miembros con
nuestra propia programación. Una de las ventajas de la
herencia es que las clases se pueden ir especializando. Como
ejemplo, presentamos enseguida todo el linaje de la clase
JFrame:
JFrame
De tal manera que esta clase tiene todos los métodos de las que le
anteceden, además de los propios (que, en total, resultan ser cientos).
Este beneficio lo tienen todas las instancias de JFrame (incluida la que
colabora en el programa anterior). Pero las ventajas de la herencia van
más lejos. Sucede que si yo quiero tratar al
objeto ventana como Object lo puede hacer, como se muestra en el
siguiente código:
Este programa usa los métodos de la clase Object para obtener el
nombre de la clase a la que pertenece el objeto ventana. Lo anterior
significa que la herencia vuelve polimórficas a las clases: se les puede
tratar como si fueran cualquiera de aquellas que están en su linaje (y
de hecho son cada una de ellas).
Muy frecuentemente será conveniente hacer clases que hereden de
otra. En un buen diseño, si necesitamos usar una ventana, conviene
que la clase sea un JFrame. La herencia se logra con la palabra
reservada extends escrita a reglón seguido después del nombre de la
clase y sólo se puede heredar de otra. El código siguiente es nuestro
tan traído Hola Mundo pero ahora usando los conceptos que estamos
explicando.
En este caso hemos encapsulado la tarea de agregar los componentes
de la ventana en un método para mostrar que, en términos de sintaxis,
los métodos propios de las clases se portan igual que los heredados.
Por otro lado, al haber extendido los alcances de nuestra clase para
heredar los de JFrame, se convierte en parte su linaje; ahora es
polimórfica porque es cada una de las que presentamos a
continuación:
NuestraClase
Práctica de la semana
Modifique la aplicación de manera que se haga arrastrando controles.
Puede usar jDialog o jInternalFrame

También podría gustarte