Saltar navegación

20241203 POO-Clases_6 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 5 de diciembre de 2024 por Raquel G.

14 visualizaciones

Descargar la transcripción

vale 00:00:00
aquí en nuestro ejemplo de 00:00:03
para verlo 00:00:05
incorporarlo aquí, en este de las 00:00:07
profesores 00:00:09
vale, vamos a ponerlo en otro main 00:00:10
para que no esté liado 00:00:13
vale 00:00:15
lo que dice este 00:00:24
enunciado es esto mismo, en lugar de 00:00:26
persona, con profesor, esto mismo 00:00:27
a ver 00:00:30
hacemos un profesor 00:00:31
Aquí no hay ningún objeto creado 00:00:33
Hay solo una dirección de memoria 00:00:40
Que apunta a null 00:00:42
Ahora vamos a crear un objeto 00:00:43
Ahora ya si hay un objeto creado 00:00:45
Tiene valores ahora mismo 00:00:49
Todavía no tiene ningún valor 00:00:51
Bueno, vamos a ponérselo 00:00:53
Pues prof1.nombre 00:00:54
.nif 00:00:57
Joder, que ha hecho esto 00:00:58
Igual a lo que sea 00:00:59
Prof1.nombre 00:01:03
¿Por qué me hace esto cosa tan rara 00:01:10
Cuando yo le doy al enter? 00:01:15
Da igual 00:01:16
Me ha salido así 00:01:18
Y prof1.sueldo 00:01:22
Fíjate 00:01:26
No sé por qué me hace eso 00:01:27
Bueno, da igual 00:01:30
1000 00:01:32
Vale, entonces ahora mismo hay un único objeto creado 00:01:34
Porque hemos hecho un new 00:01:37
Vale, pues lo que me estaba diciendo 00:01:39
El otro anunciado 00:01:41
Imagínate que ahora haces esto 00:01:42
Profesor aux 00:01:43
Sigue habiendo un único objeto creado 00:01:45
aux es una dirección de memoria que apunta a null 00:01:48
pero ahora decimos, oye 00:01:50
haz esto 00:01:52
pues sigue habiendo 00:01:54
un único objeto creado, que es este 00:01:56
pero ese objeto creado está apuntado 00:01:58
tanto por aux como por prof 00:02:01
ambas son 00:02:03
dos variables que tienen la misma dirección de memoria 00:02:03
la variable aux tiene esta dirección de memoria 00:02:07
que me lleva aquí, y la variable prof 00:02:09
tiene la misma dirección de memoria 00:02:10
una copia de esta, la misma, una copia 00:02:12
que me lleva aquí, o sea 00:02:14
prof1 y aux 00:02:16
son dos direcciones 00:02:18
lo que tendríamos en memoria sería esto 00:02:19
tendríamos 00:02:24
la variable 00:02:25
prof1 00:02:27
con una dirección de memoria 00:02:34
que me lleva al objeto 00:02:36
que acabamos de crear con el new 00:02:40
hemos hecho el new, pues aquí apareció este objeto 00:02:41
porque hemos hecho el new 00:02:44
vale, al hacer el new 00:02:45
y ahora hemos hecho una variable aux 00:02:54
pues venga, una variable aux 00:02:56
ahí se ha quedado la variable aux 00:02:57
y a esta variable aux 00:03:00
¿qué le hemos asignado? 00:03:03
le hemos asignado lo que tenía prof1 00:03:05
esto que tuviera aquí 00:03:06
fuera lo que fuera 00:03:08
lo hemos copiado aquí 00:03:09
al hacer esta sentencia 00:03:11
en aux copia lo que hay en prof1 00:03:13
bueno pues efectivamente 00:03:17
en aux hemos copiado lo que hay aquí 00:03:19
que hemos conseguido 00:03:22
que esta dirección de memoria 00:03:23
me lleve al mismo objeto 00:03:24
luego en esta situación de aquí 00:03:26
tenemos dos 00:03:29
variables 00:03:32
que me llevan al mismo objeto, solo hay uno 00:03:33
creado, para que hubiera otro 00:03:36
objeto creado, pues podríamos hacer 00:03:40
aux igual 00:03:42
a new 00:03:44
profesor, ahora 00:03:45
ya si hemos creado otro objeto 00:03:52
y la dirección donde está la hemos guardado en aux 00:03:53
ahora ya si hemos creado otro 00:03:56
luego después de haber hecho esto 00:03:57
¿qué hemos hecho? hemos creado 00:03:59
otro objeto 00:04:01
y en la variable aux 00:04:02
hemos guardado su dirección 00:04:05
luego esta dirección desaparece 00:04:07
o sea, este puntero 00:04:10
ya no está 00:04:12
y ahora aux ha empezado a apuntar 00:04:13
aquí 00:04:19
al haber hecho esta sentencia 00:04:19
de aquí, aux ya no tiene 00:04:25
lo que tenía antes, que era la dirección de prof1 00:04:27
y tiene la dirección de un 00:04:29
nuevo objeto que acabo de crear 00:04:31
¿vale? bueno, pues 00:04:32
el primer ejercicio es solo, pues eso 00:04:35
para acabar de entender exactamente 00:04:36
en memoria, ¿qué es un objeto 00:04:38
en memoria? Una dirección de 00:04:41
memoria que lleva un 00:04:43
espacio para guardar 00:04:44
todos y cada uno de los valores de las propiedades 00:04:46
de ese objeto. Aquí tendría dos 00:04:49
profesores, cada uno con su copia, etc. 00:04:50
Vale. 00:04:54
¿Cómo podríamos conseguir 00:04:56
que... A ver, 00:04:57
estábamos aquí, ¿no? ¿Cuántos objetos 00:04:59
habría? Habría dos, los mismos que 00:05:01
había, el Pepe y el Ana que hemos hecho. 00:05:03
Vale, ¿qué ocurriría si añadimos las siguientes líneas de código al final? Vale, pues ¿qué situación está representando esto de aquí? Vámonos nosotros aquí a nuestro código otra vez, donde teníamos profesor1, vamos a hacer un profesor2, o no hace falta. 00:05:04
vamos ahora a hacer esto 00:05:24
profesor1 igual a aux 00:05:28
es la situación que me está diciendo el ejercicio 00:05:32
similar a esta 00:05:35
¿qué pasa si ahora hacemos esta asignación? 00:05:37
profesor1 lo dejamos pisado completamente 00:05:40
por la dirección que tenga aux 00:05:43
luego esto en memoria se está traduciendo a esto 00:05:45
profesor1 la dirección que tenía 00:05:48
que era esta 00:05:51
desaparece 00:05:52
y ahora en profesor1 guardamos lo que tiene aux 00:05:54
y aux que tiene este otro 00:05:59
pues esto se ha quedado apuntando ahí 00:06:01
entonces 00:06:04
esto es lo que hemos hecho con esta sentencia 00:06:05
¿verdad? prof1 igual a aux 00:06:07
lo que hemos hecho es 00:06:09
prof1 00:06:11
recibe lo que tiene aux 00:06:13
aux que tiene la dirección de este 00:06:15
otro que hemos hecho 00:06:17
pues entonces prof1 se queda apuntando a este otro 00:06:18
¿y qué ha pasado con el primer 00:06:21
profesor1, aquí sigue 00:06:23
existiendo, no hay 00:06:25
una sentencia, no hay nada que 00:06:27
lo haga desaparecer 00:06:29
pero este profesor1 00:06:31
en este punto de aquí en el que estamos 00:06:33
este objeto de aquí 00:06:35
este que yo creé aquí 00:06:38
este new profesor, este new 00:06:39
que yo hice, que era este 00:06:42
se ha quedado sin nadie 00:06:43
que lo apunte, nadie lo apunta 00:06:46
porque tanto prof1 00:06:48
como aux, que son las únicas dos variables 00:06:50
que tengo, prof1 00:06:52
y aux, las únicas dos variables 00:06:53
objeto que tengo, esta y esta 00:06:56
pues con esto que he hecho 00:06:57
lo que he conseguido con esto 00:06:59
que he hecho es que las dos variables 00:07:02
profesor que tengo, esta y esta, las dos se hayan 00:07:03
quedado apuntando abajo 00:07:06
con lo cual este primer objeto que creamos 00:07:06
aquí, este primer objeto 00:07:10
que creamos aquí, ahí sigue 00:07:11
pero nadie lo está apuntando 00:07:13
luego es imposible ya acceder a él 00:07:16
y nunca jamás, jamás de los 00:07:17
jamases, nadie va a poder 00:07:20
volver a acceder a esta porción 00:07:22
de memoria. Nunca jamás. 00:07:24
Pero entonces, ¿crearás uno nuevo? 00:07:28
Lo que hay aquí se perdió para siempre. 00:07:30
Para siempre. 00:07:33
Fíjate. Entonces, ¿qué ocurre? 00:07:34
Pues que sale el demonio. 00:07:36
¿Vale? 00:07:38
Sí, sale el demonio. 00:07:40
Sabéis lo que es un demonio, ¿no? 00:07:42
¿Cómo va a salir el demonio, profesor? 00:07:43
A no ser que ponga un 666, 00:07:46
no me lo creo. Bueno, pues un demonio 00:07:48
es un proceso que está ahí en el background. 00:07:49
ejecutándose, ocupándose 00:07:52
de tareas del sistema operativo 00:07:54
que no interacciona con el usuario 00:07:55
claro, los procesos en general 00:07:57
pues demonios, vuestro ordenador 00:08:00
está lleno de demonios 00:08:04
a ver, si sabéis 00:08:05
lo que es un proceso 00:08:08
un proceso es un programa en ejecución 00:08:09
que cuando un programa empieza a ejecutarse 00:08:11
ya coge su espacio de memoria para sus variables 00:08:13
para todo el propio sistema operativo 00:08:15
es un programa en ejecución, vale 00:08:18
bueno, pues los sistemas operativos necesitan procesos 00:08:19
en ejecución que se 00:08:21
lanzan pero que no tienen interacción 00:08:23
con el usuario porque hacen tareas 00:08:25
internas de la aplicación que sea. 00:08:27
Entonces es un proceso que se está 00:08:30
todo el rato ejecutando y haciendo 00:08:31
tareas y el usuario no se entera. 00:08:33
Bueno, pues la máquina virtual 00:08:36
de Java tiene un demonio 00:08:37
dentro. 00:08:40
Sí, un proceso 00:08:42
con el que, ya, pero con la 00:08:44
particularidad de que no es un proceso que tú lances 00:08:45
o sea que interaccione con el usuario. 00:08:48
Que tú veas, justo, que tú veas. 00:08:49
porque en un programa Java lo vemos 00:08:51
cuando vemos el sistema, entonces no es un demonio 00:08:53
vale, entonces la máquina virtual 00:08:56
tiene un demonio dentro 00:08:57
que está continuamente mirando 00:08:59
a ver si hay objetos 00:09:01
que les ha pasado lo que a este 00:09:03
que se han quedado sin nadie 00:09:05
que los apunte 00:09:07
para decir, fuera, libero 00:09:08
este espacio de memoria, para que voy a tener esa memoria 00:09:11
ahí ocupada por alguien que nunca jamás 00:09:13
va a ser accesible 00:09:15
es un angelito 00:09:17
entonces, esa memoria 00:09:20
se queda disponible 00:09:21
bueno, no, ni siquiera, este sí que se va a la tierra 00:09:24
y se lo comen los gusanos, porque su espacio 00:09:26
se queda ya disponible para el 00:09:28
bueno, es la vida misma 00:09:30
entonces, ¿qué ha ocurrido aquí? 00:09:33
¿y cómo han hecho ese demonio? 00:09:38
hombre, pues 00:09:41
es un programa más, el que hizo la máquina 00:09:42
virtual de Java, pues programó todas las 00:09:44
es un programa más, como el que programa un sistema 00:09:46
operativo, todos son programas que hacen los programadores 00:09:48
o los demonios también 00:09:50
Si hacemos esto 00:09:52
El primer objeto 00:09:57
Creado se queda sin referencia 00:09:59
Vale 00:10:02
¿Y cómo se llama ese demonio? 00:10:09
Se queda sin referencia 00:10:12
O sea inaccesible 00:10:14
Inaccesible 00:10:15
Vale 00:10:18
Pues ese demonio 00:10:19
Se llama el recolector de basura 00:10:20
¿Vale? 00:10:23
O garbage collector, como lo queráis 00:10:25
Llamar 00:10:27
Eh, basura 00:10:28
Se escribe así en inglés, creo que sí, ¿no? 00:10:33
Vale 00:10:37
Libera 00:10:38
Su espacio 00:10:42
Vale, pues ya está, si hacemos esto 00:10:43
Este primer objeto new 00:10:46
Con las cosas que le pusimos 00:10:48
El 1, 1, 1, el bla, bla, bla 00:10:50
El 1000, este primer objeto new con esas cosas 00:10:52
se ha quedado sin referencia, porque la que tenía 00:10:54
que era prof1, la que tenía 00:10:57
se ha visto pisada 00:10:59
por otra, luego se ha quedado 00:11:01
sin referencia, inaccesible 00:11:03
y se libera el espacio y ya está, nada más 00:11:05
vale 00:11:07
¿y por qué me sale aquí error de compilación 00:11:08
todo el rato? 00:11:11
debo tener algo ahí al final 00:11:14
variable declare to complete 00:11:15
local variable declaration 00:11:20
no sé por qué me sale un error de compilación 00:11:21
pero bueno, da igual 00:11:26
Vale, a ver 00:11:27
Díselo 00:11:31
A la AUS 00:11:41
Vale 00:11:44
A la 00:11:45
Bueno 00:11:57
Y ya este no tiene más interés 00:12:07
¿Cómo podríamos conseguir 00:12:13
Que Ana volviera a saludar en este caso 00:12:15
Que ese profesor 00:12:17
Pues no podemos 00:12:18
O sea 00:12:19
No podemos 00:12:21
Venga pues este 00:12:23
Solo tiene una clase 00:12:25
Con lo cual todavía no nos afectan las relaciones 00:12:28
Cuenta dos atributos y unos métodos 00:12:30
¿Lo habéis hecho? 00:12:36
Pues hacedlo ya mismito 00:12:38
Venga 00:12:39
En tres minutos 00:12:39
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
14
Fecha:
5 de diciembre de 2024 - 18:31
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
12′ 44″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
52.28 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid