20241203 POO-Clases_6 - 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:
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