Programación orientada a Objetos Java (Parte 2) - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
En este segundo vídeo de programación orientada a objetos vamos a ver la parte de la implementación del ejemplo que habíamos estado viendo en el vídeo anterior.
00:00:06
Si recordáis lo que habíamos visto es que teníamos una clase figura de la cual van a extender o van a heredar las clases cubo, esfera y paralelepípedo y cada una de estas va a tener una implementación.
00:00:18
Para hacer este desarrollo en Java nosotros hemos planteado el desarrollo mediante cinco clases.
00:00:33
Una clase que va a ser la principal, después vamos a tener la clase figura que va a contener solamente la implementación de esta clase padre
00:00:41
y después las clases hija, cubo, esfera y parálide de epípedo que también va a tener una implementación cada una de ellas.
00:00:51
Empezamos con la clase figura y dentro de la clase figura, si os fijáis, tenemos el nombre y el color
00:00:59
que eran los atributos que va a compartir con el resto de las clases
00:01:15
y los métodos área y volumen que los tengo por aquí abajo
00:01:19
Cosas interesantes que tiene una clase, pues bueno, en primer lugar tiene un constructor
00:01:23
el constructor es digamos un elemento que tiene que tener el mismo nombre que la clase
00:01:29
veis que aquí se llama CLS figura y aquí aparece CLS figura
00:01:36
y tiene pues los datos de inicialización de esta clase
00:01:40
en este caso como la clase figura tiene un nombre y un color
00:01:46
pues como parámetros se le pasan ese nombre y ese color
00:01:51
para hacer referencia a los atributos de la clase se utiliza el operador dis
00:01:54
así que al hacer por ejemplo esta asignación dis.nombre
00:01:59
está haciendo referencia a este nombre de aquí
00:02:05
y este nombre de aquí está haciendo referencia al valor que le pasamos
00:02:07
lo mismo ocurre con dis.color
00:02:11
este dis.color hace referencia al atributo de la clase
00:02:14
y este color hace referencia al valor que le pase el usuario
00:02:17
que esté usando la aplicación a este valor de aquí, así que aquí lo que está haciendo este constructor
00:02:23
y lo que hacen en general todos los constructores es una inicialización de la clase que estamos instanciando
00:02:29
ese constructor es llamado desde el programa principal cuando se haga la operación new
00:02:37
que es para crear un nuevo objeto de una clase o una nueva instancia de una clase
00:02:44
adicionalmente tenemos estos dos tipos de métodos
00:02:49
esto es un método getter y esto es un método
00:02:53
bueno en este caso son los dos métodos getter
00:02:58
lo que hacen este es obtener el nombre y este obtener el color
00:03:02
cuando hacemos un método getter lo que estamos haciendo
00:03:06
es obtener el valor de alguno o de varios atributos de la clase
00:03:10
en este caso obtener nombre está haciendo un getter
00:03:16
de this.nombre, es decir, del valor que tenga nombre para ese objeto
00:03:18
y this.color para el valor que tenga el color para ese objeto
00:03:23
estos de aquí se llaman métodos getter porque lo que hacen es obtener el valor de una clase
00:03:28
si lo que hiciesen fuese establecer el valor de estos atributos
00:03:34
pues serían métodos setter
00:03:40
Bien, alguien se podrá preguntar para qué se utilizan métodos setter, si ya tenemos aquí un inicializador o un constructor. Pues bien, eso se hace porque el constructor permite inicializar los objetos en el momento de su creación, estos atributos en el momento en el que se crean.
00:03:44
Una vez que el objeto ya está creado, la única forma de poder modificar los valores de sus atributos es mediante métodos getter, ¿vale?
00:04:03
Lo veremos en los ejemplos que tenemos a continuación.
00:04:12
La segunda clase que vamos a implementar es la clase cubo.
00:04:16
Hay que tener en cuenta que en la clase anterior, si vamos a la clase anterior, la clase figura, fijaos que la sintaxis es public class CLS figura.
00:04:22
Sin embargo, en la clase cubo, la sintaxis es public class CLS cubo extend figura, que significa que hereda de la clase figura.
00:04:32
Al hacer esto en la sintaxis, automáticamente los métodos y los atributos de la clase padre son heredados.
00:04:44
De tal forma que si veis aquí ni siquiera se tienen que declarar ya el método nombre, las propiedades nombre y color
00:04:53
Porque ya al hacer el extend de figura se supone que están heredados
00:05:01
Y esto se demuestra en el siguiente constructor
00:05:08
Si veis el constructor de la clase cubo, lo que se le pasa es el lado, que es este de aquí, y el nombre y el color
00:05:10
Y alguien dirá, pero si el nombre y el color no lo tenemos aquí
00:05:18
efectivamente, pero como están heredados de la clase figura
00:05:21
nosotros se lo podemos pasar en la inicialización
00:05:25
para poder inicializar el nombre y el color de la clase de la que hereda
00:05:28
nosotros tenemos que hacer una llamada a super
00:05:33
con super lo que estamos haciendo es llamar al método constructor
00:05:36
de la clase padre, es decir, en esta instrucción de aquí
00:05:41
le pasamos a la clase figura el valor del nombre
00:05:45
y el valor de color que nos pase el usuario en la construcción del cubo, ¿vale? De modo que al hacer aquí este super nombre y color realmente estaremos ejecutando este constructor de la clase figura.
00:05:49
El lado pues funciona ya igual que en la clase figura, se hace dispuntolado, hace referencia a este atributo y lado al valor que proporciona aquí el usuario para la construcción del cubo.
00:06:04
a continuación aquí sí que tenemos métodos getter y setter
00:06:18
en este caso para la obtención o modificación del lado
00:06:22
en el caso de que hagamos un setter
00:06:26
lo que podemos hacer es cambiar el lado del cubo
00:06:28
porque si el lado del cubo cambia
00:06:31
puedo tener distintos parámetros a la hora del cálculo
00:06:33
así de esta forma al hacer el set lado
00:06:39
le paso el lado y modifico
00:06:43
igual que hace el constructor
00:06:45
modifico el valor del lado como atributo de la clase y en getLado veis que no se le pasan parámetros
00:06:47
porque lo que hace es obtener, es decir envía a la persona que se lo diga o al programa que se lo diga el valor de ese lado
00:06:56
y otras cosas muy importantes son la sobrescritura de los dos métodos área y volumen
00:07:04
Si recordáis, vamos a ir otra vez a la clase figura, estos dos métodos, el área y el volumen, pertenecen a la clase figura, pero como el cubo extiende de esta clase, pues estos métodos son heredados.
00:07:13
¿Qué pasa? Que estos métodos en sí mismos devolverían un valor cero, pero como aquí están sobrescritos, cuando nosotros hagamos referencia al área de la clase cubo, el método que se ejecutará es el cálculo del área del cubo y lo mismo ocurrirá con el cálculo del volumen.
00:07:29
Se ejecutará este método de aquí. La cláusula arroba overwrite es necesaria porque si no, este método no podría ser sobrescrito cuando son invocados desde la clase cubo.
00:07:49
La siguiente clase que vamos a ver es la clase esfera que ya sabiendo un poco la mecánica de la clase cubo pues es muy parecida o similar. En este caso la clase esfera extiende o hereda de la clase figura.
00:08:04
como atributo adicional se le pone el radio
00:08:20
aquí en el constructor de la clase esfera
00:08:25
pues se invoca al super
00:08:29
al padre para pasarle el nombre de la esfera
00:08:33
y el color de la esfera
00:08:38
y el radio que es propio de esta clase
00:08:39
aquí también tendremos métodos setter y getter
00:08:42
para poder establecer un nuevo valor de radio
00:08:45
para obtener el valor de radio que tenga actualmente
00:08:50
y la sobrescritura de los métodos del área y del volumen
00:08:52
para poder realizar esos cálculos
00:08:56
como veis también tienen que estar sobrescritos
00:09:00
para que cuando nosotros hagamos referencia a este método
00:09:03
al método área sea distinto
00:09:07
en el caso de que sea llamado desde un cubo
00:09:10
o desde una esfera
00:09:13
y bueno visto ya la clase esfera pues la clase paralel epípedo es exactamente igual
00:09:18
lo único es que tiene más atributos este también extiende de la clase figura
00:09:25
tiene sus atributos el constructor también llama super con el nombre y el color
00:09:29
y tiene sus métodos setter y getter para la obtención o establecimiento de los atributos o de sus valores
00:09:33
El cálculo del área y el cálculo del volumen es igual, pero estableciendo los parámetros necesarios para la sobrescritura de este método.
00:09:42
Si vamos al código en NetBeans, vamos a ver cómo está realizada esta implementación.
00:09:56
dentro de NetBeans si nos fijamos en las pestañas que tenemos aquí creadas o aquí en la parte izquierda
00:10:05
vemos que tenemos un programa principal, la clase figura, la clase cubo, esfera y para el epípedo
00:10:12
y básicamente están creadas tal y como las hemos explicado en el ejemplo
00:10:19
el programa principal lo vamos a dejar para el final y estas cuatro clases están implementadas tal cual
00:10:23
están en el ejemplo que hemos visto en las diapositivas
00:10:30
si os fijáis, la creación de la clase empieza aquí, public class figura hasta la clase padre con sus atributos
00:10:35
aquí ya tienen tipeados los valores de los atributos de tipo string
00:10:43
aquí tenemos el constructor que veis que se hace exactamente igual a como lo hemos visto en el ejemplo
00:10:49
y los métodos getter para el nombre y el color de la figura geométrica que estemos utilizando
00:10:55
El cálculo del área y del volumen estarán establecidos a cero porque desde aquí nunca van a ser llamados ya que solamente los necesitamos para que las clases hijas los hereden.
00:11:03
La clase cubo, por su parte, lo que hace es extender de la clase figura, declarando el lado y en el constructor vemos aquí la llamada super, que es importante para que el nombre y el color de la figura pasen a la clase padre.
00:11:15
Aquí se inicializa el lado y los métodos setter y getter para obtener o establecer el lado
00:11:36
Por su parte también tenemos la sobrescritura de los métodos área y volumen para poder hacer el cálculo del cubo
00:11:44
Tenemos otro fichero java, como veis cada clase la hemos implementado en un fichero con extensión java
00:11:52
también extiende la clase figura
00:12:01
y es un poco la misma implementación
00:12:05
que se ha hecho con la clase cubo
00:12:09
a excepción de que aquí tenemos el atributo radio
00:12:11
y los cálculos del área y del volumen
00:12:14
son propios de la esfera en lugar del cubo
00:12:17
para la clase paralel epípedo
00:12:21
es exactamente igual
00:12:23
lo único es que tenemos los tres lados necesarios
00:12:25
alto, ancho y largo
00:12:28
y con esos tres lados
00:12:31
y sus métodos getter y setter
00:12:35
que podemos en cualquier momento
00:12:37
con el método setter
00:12:38
veis que se puede cambiar el lado
00:12:41
y poner el que queramos
00:12:42
o con el método getter
00:12:44
para obtener esos datos
00:12:47
en modo de cadena
00:12:48
y también están sobre escritos
00:12:49
sus métodos área y volumen
00:12:53
si vemos ahora el programa principal
00:12:55
para que veáis cómo está construido, pues tiene una clase principal donde tenemos el método main
00:12:59
y este método main, fijaos cómo están construidas las tres primeras líneas, son importantes
00:13:05
porque es donde se ve cómo están creados los objetos.
00:13:11
Si os fijáis aquí hay una clase cubo, que es esta de aquí, que este es el objeto, ¿vale?
00:13:19
Este es el objeto, clase cubo, esta es la clase, este es el objeto, y hacemos un new de esta clase, de modo que al instanciar esta clase con el new estamos llamando al constructor.
00:13:26
¿Qué se le está pasando al constructor? Pues le estamos pasando un 5, un nombre y un color, ¿vale?
00:13:39
Si veis esta llamada en el cubo sería esta de aquí, ¿vale?
00:13:45
Veis que se le pasa el 5 estaría aquí, aquí el nombre del cubo y aquí el color del cubo que creo que hemos puesto color rojo, ¿vale?
00:13:53
Cuando se hace esta llamada a la clase padre se le pasa el color y el nombre y a la clase cubo se le pasa el valor del lado, ¿vale?
00:14:01
De modo que una vez que tengamos esta llamada hecha, ya tenemos construido nuestro primer objeto, que se llama cubo1, con estas características.
00:14:14
Lo mismo ocurre con esfera1. Fijaos que en esfera1 se hace una llamada, a ver si encuentro la clase, aquí al constructor, que es este de aquí, y se le pasa el radio, el nombre y el color.
00:14:23
Funciona exactamente igual que en la clase cubo
00:14:39
Y en la clase paralel epípedo
00:14:42
Como tenemos un constructor con más argumentos
00:14:45
Aquí tenemos el constructor que tiene
00:14:48
Uno, dos, tres, cuatro y cinco argumentos
00:14:51
El lado A, el B, el C, el nombre y el color
00:14:55
Pues obviamente aquí hay que pasarle esos cinco argumentos
00:14:58
Este sería el lado A, lado B, lado C, nombre y color
00:15:00
Y una vez que tenemos los objetos creados con el new
00:15:04
pues ya lo podemos utilizar, ¿vale? Aquí tenemos un ejemplo de, pues aquí nos va a mostrar los datos del cubo 1, ¿vale? Se va a mostrar su nombre, su color, fijaos que aquí en cubo 1, otra cosa curiosa, se está haciendo una llamada a un método que no está en cubo 1, ¿vale?
00:15:09
Fijaos que cubo1 hace una llamada a obtener nombre, si nos vamos a cubo1, aquí no está el método obtener nombre, pero sí que estará en la clase figura, obtener nombre, eso significa que realmente desde la clase hija puede hacer llamadas a métodos públicos de la clase padre.
00:15:31
¿Y qué va a obtener con este, qué va a hacer este método getter? Pues va a obtener el nombre del cubo que nosotros le hemos puesto en la creación del cubo, ¿vale? Entonces, fijaos, el objeto hijo llama a un método del objeto de la clase padre.
00:15:54
Lo mismo ocurre con color y estos ya son métodos de la clase hija, ¿vale?
00:16:10
Lo mismo ocurre con la esfera, ¿vale?
00:16:19
Con distintos métodos, obviamente, excepto el nombre y el color
00:16:22
Y lo mismo ocurre con el paralelepípedo, ¿vale?
00:16:25
Vamos a hacer una ejecución de la aplicación
00:16:29
Y aquí abajo, no sé si lo llegáis a ver bien, pues está esta ejecución
00:16:32
Aquí están los datos del cubo, ¿vale? Cubo 1 de color rojo con el lado 5, ¿vale? Que habíamos puesto y aquí están los cálculos, pues el área y el volumen. Aquí estaría también lo de la esfera, perdón, los datos de la esfera que están por aquí, ¿vale?
00:16:39
a la esfera la habíamos puesto
00:17:00
que se iba a llamar esfera 1
00:17:02
iba a ser de color azul
00:17:04
bueno aquí el azul lo representamos no con un color
00:17:05
sino con un nombre
00:17:08
y el parámetro que le hemos pasado también es un 5
00:17:09
y los cálculos del área y el volumen con esos datos
00:17:12
y del paralel epípedo
00:17:15
que lo tenemos por aquí
00:17:17
pues le hemos pasado
00:17:18
los parámetros que eran
00:17:19
5, 5, 10
00:17:22
para el epípedo 1
00:17:23
bueno aquí le hemos puesto incluso una doble o al 1
00:17:25
y de color verde
00:17:27
Y es lo que aparece aquí. También si os fijáis aparece el área y el volumen y como veis el área y el volumen es distinta en cada una de las figuras geométricas porque realmente si recordáis lo que hacíamos aquí era que esos métodos se van sobre escribiendo con el override en función de que sea una esfera, de que sea un paralelepípedo o en el caso de que sea un cubo.
00:17:29
Bueno, y esto es todo por aquí de la programación orientada a objetos.
00:17:57
- Idioma/s:
- Materias:
- Sistemas Microinformáticos y Redes
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado básico
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado medio
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado básico
- Autor/es:
- Gerardo Ruiz Criado
- Subido por:
- Gerardo R.
- Licencia:
- Reconocimiento - No comercial
- Visualizaciones:
- 2
- Fecha:
- 10 de abril de 2026 - 13:07
- Visibilidad:
- Clave
- Centro:
- IES LA ARBOLEDA
- Duración:
- 18′ 09″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 364.92 MBytes