20241205 POO-Clases_10 - 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, bueno, pues hasta aquí
00:00:00
ya todo lo que hemos visto clarísimo, constructores incluidos.
00:00:07
Pero todo lo que hemos...
00:00:11
Vale, pues todos los ejercicios que hemos hecho hasta ahora
00:00:13
había una sola clase.
00:00:23
¿Verdad, Mario y Daniel?
00:00:27
En todos los ejercicios que hemos hecho hasta ahora había una sola clase. En todos los ejercicios que hemos hecho aquí, los pringados, solo había una clase, ¿vale? Bueno, y con eso hemos aprendido, pues, que es una clase, que son los métodos de una clase, las propiedades de los constructores, estaciar objetos, etc.
00:00:30
Pero, ¿recordáis que toda esta aplicación vino por una gráfica que había dejado Manoli, muy bonita, con profesor, departamento, facultad, etcétera? Vale, pues ahí ya vimos que, obviamente, cuando nosotros hacemos una aplicación para gestionar una situación, pues habrá más de una entidad, normalmente.
00:00:48
nosotros hasta ahora o solamente había una cafetera
00:01:10
o solamente había, pero normalmente hay más
00:01:13
de una entidad
00:01:15
y las entidades
00:01:16
además entre sí
00:01:19
se relacionan
00:01:21
si no se relacionaran
00:01:23
como en la aplicación está
00:01:25
William
00:01:26
por fin que oigo
00:01:29
vuestra voz y me distraigo
00:01:31
por señas
00:01:32
vale, en esta aplicación
00:01:35
había cuatro entidades
00:01:37
había más de una
00:01:38
pero no se relacionaban entre sí.
00:01:40
Los círculos eran independientes
00:01:42
y cuando hacíamos cosas con círculo,
00:01:44
pues hacíamos cosas con círculos.
00:01:45
Los cuadrados también eran independientes.
00:01:46
Cuando hacíamos cosas con cuadrados,
00:01:48
hacíamos cosas con cuadrados.
00:01:49
Eran independientes.
00:01:50
Pero en una aplicación real,
00:01:51
los conceptos con los que trabajo,
00:01:54
lo normal es que se relacionen entre sí.
00:01:56
Y por eso cuando hacéis modelos de entidad-relación,
00:01:57
pues no solo modeláis las entidades con sus campos
00:02:00
o como sea que los llaméis,
00:02:04
sino las relaciones que tienen entre sí.
00:02:05
vale, pues
00:02:07
si volviéramos
00:02:09
a nuestra aplicación
00:02:10
de explicación de origen de toda la vida
00:02:13
la que solamente tenía un pobre profesor
00:02:15
había quitado esta cosa roja
00:02:18
que está aquí, que molesta un poco
00:02:19
eso, perdón
00:02:21
cuando
00:02:26
volvemos a la aplicación esta en la que usamos
00:02:27
para explicar que teníamos una clase
00:02:29
profesor con tres propiedades
00:02:31
porque en esta aplicación
00:02:34
de los profesores solo nos interesaba
00:02:36
el nombre, el NIV y el sueldo, no nos interesaba nada más.
00:02:38
Entonces luego teníamos ya aquí nuestras diferentes
00:02:42
aplicaciones. Pues esta, por ejemplo, que ya es
00:02:45
un instituto de 10 profesores y me sacaba
00:02:48
el que más ganaba, patatín, patatán.
00:02:51
Vale, pues ya está. Aplicación que lo único
00:02:54
que hacía era cosas con profesores. Bueno, pues ahora
00:02:57
resulta que en este instituto también la aplicación nos interesa
00:03:00
gestionar los departamentos, los profesores y los
00:03:03
departamentos. Vale, pues entonces vamos a tener que
00:03:07
incluir otra entidad, departamento. Entonces,
00:03:11
¿qué nos interesa del departamento? Pues, por
00:03:25
ejemplo, nos podría interesar, le quito el public,
00:03:29
nos podría interesar el nombre del departamento, si es de informática,
00:03:33
de educación física, lo que fuera.
00:03:37
Y nos puede interesar del departamento, por ejemplo, dónde está ubicado, porque esta aplicación gestiona dónde vas a situar físicamente los departamentos o te permite cuando alguien te llega por conserjería, busca el departamento de no sé qué, pues el conserje le da la aplicación y te dice, está en la planta tal clase tal.
00:03:43
Pues entonces, dados los requisitos de la aplicación, hemos decidido que esas son las propiedades. Bueno, pero aparte ahora ya de entidad profesor con las propiedades suyas, departamento con las propiedades suyas, las que la aplicación necesita, pues habrá algo que los relacione entre sí y esa relación habrá que modelarla de alguna manera.
00:04:05
en bases de datos
00:04:27
ahora mismo como todavía no estáis haciendo
00:04:29
una base de datos real
00:04:31
sino solamente un diagrama
00:04:32
pues esa relación la hacéis
00:04:35
tirando una rayita
00:04:36
y poniendo pues un N, N1
00:04:38
depende de esa relación como sea
00:04:41
aquí
00:04:43
como hacemos
00:04:45
como reflejamos la idea de relación
00:04:47
entre clases y departamentos
00:04:49
pues no metemos nada
00:04:50
nuevo a lo que ya sabemos, utilizamos
00:04:53
lo que ya sabemos y como lo utilizamos
00:04:55
pues primero habría que entender
00:04:57
la relación como es
00:04:58
Mario, porfa
00:05:00
la relación como es, vale, pues
00:05:03
un profesor
00:05:05
pertenece a un departamento
00:05:07
por ejemplo, llegamos a esa conclusión
00:05:09
que un profesor pertenece a un departamento
00:05:11
pues entonces ahora
00:05:14
nuestro profesor
00:05:15
tendría todo el sentido del mundo
00:05:17
que tuviera otra propiedad dentro
00:05:18
que fuera el objeto
00:05:21
departamento al que pertenece
00:05:23
que tuviera otra propiedad dentro
00:05:25
por ejemplo esta
00:05:27
entonces haciendo esta tontería
00:05:31
ya hemos
00:05:35
simulado esa relación
00:05:36
un profesor tiene
00:05:38
un departamento
00:05:40
y ya está, ya no hace falta en realidad incluir más
00:05:41
nuestra aplicación ya hará
00:05:46
todas sus funcionalidades, sus requisitos
00:05:48
y ya tendrá esta relación
00:05:50
metida dentro
00:05:52
entonces
00:05:53
¿qué es lo que quiero incluir aquí?
00:05:55
Que las propiedades de un objeto no tienen por qué ser solamente de los tipos primitivos que conocemos, números, char, boolean o string, no tienen por qué ser solo de esos tipos.
00:05:58
Una propiedad de un objeto puede ser a su vez otro objeto.
00:06:13
esta relación en programación de entrada de objetos
00:06:17
se llama de composición
00:06:22
pues porque el profesor está compuesto
00:06:25
de un departamento
00:06:29
a ver, está mal en realidad
00:06:30
la palabra no está muy bien usada
00:06:32
porque el profesor no es que tenga dentro el departamento
00:06:36
nosotros como ya sabemos lo que es un objeto
00:06:39
el profesor tiene dentro una referencia
00:06:41
al departamento que es un objeto aparte
00:06:45
Que es un objeto aparte con sus propiedades.
00:06:48
Y el profesor lo que tiene dentro es una referencia al departamento al que pertenece.
00:06:51
Y a ese departamento pueden tener referencia muchos profesores.
00:06:56
Por ejemplo, con que los del departamento de matemáticas cobran un 10% más de sueldo.
00:07:00
Para que se actualice.
00:07:05
Vale, espera.
00:07:06
Ahora, con esto hemos mapeado la relación.
00:07:07
Ahora ya podemos decir, vale, ¿qué funcionalidades le interesan a esta aplicación?
00:07:09
Pues, por ejemplo, la podría ser subir sueldo al profesor dependiendo del departamento al que pertenezca. Si es de mates, pues le subes un 10% y si es de lengua, le subes un 15%.
00:07:13
Por ejemplo, pues, venga, vamos a incluir ese método, ¿vale?
00:07:30
Pero ya todo el mundo más o menos ha entendido que no pasa
00:07:34
nada, que las propiedades pueden ser de tipo objeto.
00:07:37
Porque ahora ya las clases son un tipo más de datos.
00:07:40
Igual que cuando hacíamos el app este, aquí, pues,
00:07:44
efectivamente, cafetera es una variable de tipo cafetera.
00:07:49
Entonces, las clases que hacemos es como si estuviéramos
00:07:54
haciendo tipos de datos nuestros, nuevos, a nuestra medida.
00:07:56
que tienen dentro propiedades sencillas.
00:07:59
¿Vale?
00:08:03
Pues profesor igual es un tipo de dato
00:08:06
que tiene dentro una propiedad
00:08:08
cuyo tipo de dato es departamento.
00:08:10
Es decir, que a su vez tiene dentro cosas.
00:08:12
Bueno, pues entonces el profesor se caracteriza
00:08:15
por nombre, NIF, sueldo y departamento al que pertenece.
00:08:17
Si se caracteriza por eso, lo tengo que meter aquí
00:08:20
como propiedades.
00:08:22
Y ahora ya uno programa lo que sea
00:08:24
que la aplicación quiere hacer.
00:08:25
por ejemplo, vamos a incluir un método
00:08:27
vamos a ponerle primero
00:08:30
el constructor
00:08:32
ahora ya que sabemos hacer constructores y que nos facilitan
00:08:33
la vida
00:08:36
vamos a hacer un constructor y lo voy a generar ya
00:08:36
directamente con el source
00:08:40
genera constructor usando campos
00:08:41
que campos, los marco todos
00:08:43
pues este es
00:08:46
mi constructor, le quito el super y el public
00:08:48
porque no sabemos a cuento de que vienen
00:08:50
ala, ya me ha hecho un constructor que recibe
00:08:52
cuatro parámetros
00:08:56
y uno de ellos es un objeto
00:08:56
claro, uno de ellos es un objeto, no pasa nada
00:09:00
y ese objeto
00:09:02
sirve para inicializar
00:09:03
la propiedad esta de aquí
00:09:05
entonces es lo mismo
00:09:07
es una propiedad igual, lo que pasa es que su tipo
00:09:10
de dato es departamento
00:09:12
vale, pues tenemos el constructor
00:09:13
y ahora vamos a hacer un método
00:09:16
para subir el sueldo, pero ahora
00:09:18
ya este dependiendo del departamento
00:09:22
este lo usaremos cuando quiero subirle
00:09:23
el sueldo, un porcentaje cualquiera, el que sea
00:09:26
y ahora vamos a hacer otro
00:09:28
que sea subir
00:09:29
sueldo en función
00:09:32
del departamento, ¿cómo le podemos
00:09:35
yo llamar a esto?
00:09:37
extra sueldo departamento
00:09:40
extra departamento
00:09:41
venga, pues extra departamento
00:09:44
vale
00:09:46
entonces, a ver
00:09:50
vamos a hacerlo, aquí suponemos
00:09:54
extra departamento y el suministro
00:09:56
vale, entonces vamos a hacerlo
00:09:57
que pues eso, en función de si es
00:10:05
de mates o de lengua, ya está, pues te sube
00:10:07
una cosa, te sube otra, porque es un instituto
00:10:08
que solo tiene mates o lengua
00:10:10
esto claro, me queda una aplicación
00:10:12
una clase, me va a quedar una clase
00:10:15
que solo funciona si realmente tengo un instituto
00:10:17
que tiene mates y lengua
00:10:19
pero bueno, esto pues se podría hacer de forma
00:10:20
que tú le pasas por parámetro el array de departamentos
00:10:22
como sea, pero bueno, no os da igual
00:10:25
¿le pasas el departamento?
00:10:26
la cosa es que pasando el departamento
00:10:29
a una cosa u otra
00:10:31
Sí, bueno, lo podríamos hacer
00:10:31
de muchas versiones, o aquí hay que distinguir
00:10:38
porque claro, si tú le pasas el departamento
00:10:40
al que pertenece, vale, pero es que
00:10:42
el departamento no lo tienes que pasar, pero ya está aquí dentro
00:10:44
Entonces, aquí el sueldo
00:10:45
sería, en función de si el profe
00:10:48
es de mates o es de lengua
00:10:50
le subes una cosa, le subes otra
00:10:52
Entonces, pues vamos a hacer eso
00:10:53
Lo podemos hacer
00:10:56
con un switch case, porque en función
00:10:58
de, bueno, vamos a quitar el switch case
00:11:00
para que veáis más claro a lo que vamos
00:11:04
Aquí, en función de, vamos a suponer, para hacerlo más sencillo, que si es de mates, le subimos 100 euros, un extra de 100 euros, y si es de lengua, le subimos 200.
00:11:05
claro, entonces
00:11:27
vale, pues de qué depende
00:11:32
que le subamos al sueldo 100 a 200
00:11:37
depende del departamento
00:11:38
del nombre del departamento en el que trabaje
00:11:40
¿cuál es el nombre
00:11:43
del departamento en el que trabaje?
00:11:45
claro, lo tenemos aquí dentro
00:11:47
guardado, porque aquí tenemos el departamento
00:11:49
entero, ahí lo tenemos entero
00:11:51
y de ahí yo saco
00:11:52
la información que yo quiera para cada situación
00:11:55
pues para este
00:11:57
método en concreto, para este
00:11:59
en concreto, me interesa sacar el
00:12:01
nombre.
00:12:03
Bueno, pues si departamento
00:12:05
punto nombre
00:12:07
punto equals
00:12:08
mates, pues le subo esto.
00:12:11
Entonces, departamento
00:12:17
punto nombre, ¿qué es?
00:12:18
La propiedad nombre del objeto
00:12:19
departamento, que es
00:12:22
propiedad del profesor.
00:12:24
Que no, que departamento
00:12:30
nombre, ¿vale?
00:12:31
Pues entonces,
00:12:46
todo es lo mismo.
00:12:47
Esta es una propiedad más
00:12:50
con la particularidad de que su tipo
00:12:51
es un tipo de dato objeto.
00:12:53
Y ahora, como es un tipo de dato objeto,
00:12:58
a departamento lo que tiene dentro
00:13:00
en realidad lo tengo que sacar
00:13:02
a través de las propiedades.
00:13:04
Porque departamento en sí,
00:13:05
esto ya sabemos que es una dirección de memoria.
00:13:07
Es una dirección de memoria.
00:13:09
Entonces, lo que a mí me interesa
00:13:10
de esta propiedad es lo que tiene dentro.
00:13:11
Su nombre, su localización, lo que sea.
00:13:14
Lo que sea.
00:13:17
en este caso me interesaba
00:13:18
el nombre del departamento del
00:13:19
profesor
00:13:21
si es mates, pues este
00:13:23
si es lengua, no sé qué
00:13:25
¿Cómo se pasa por parámetro el nombre del departamento
00:13:26
y la localización?
00:13:32
¿Pero para qué querrías pasárselo
00:13:34
por parámetro?
00:13:36
Tú a un método le puedes pasar por parámetro lo que quieras
00:13:38
la pregunta es
00:13:40
si tú le quieres pasar un nombre, ¿le pasas un string?
00:13:41
No, no, perdón, estaba hablando del
00:13:44
Ah, vale, ahora hacemos la aplicación
00:13:45
ahora hacemos una aplicación
00:13:48
fijaos lo que ha pasado, en esta aplicación
00:13:49
profesores, donde tengo varias
00:13:51
versiones, la app
00:13:53
todas las
00:13:54
que tenía, veis se me han puesto
00:13:56
en rojito, buf, todas en rojo
00:13:59
claro, porque yo he añadido
00:14:01
aquí un constructor
00:14:03
que ha pisado el sin parámetros
00:14:04
con lo cual, todas mis
00:14:07
versiones anteriores
00:14:09
no
00:14:10
pongo un sin parámetros en profesor
00:14:12
claro, entonces
00:14:15
todas las versiones que yo tenía
00:14:16
de mi aplicación, las que hacían cosas en pruebas
00:14:19
me dice el compilador, eh, este
00:14:21
constructor no me vale, porque tú has
00:14:23
pisado el constructor vacío
00:14:25
que yo estaba usando y que no se veía
00:14:27
porque estaba oculto, lo has pisado
00:14:29
por uno con parámetros, con lo cual me tienes que
00:14:31
pasar parámetros, vale, para que
00:14:33
las aplicaciones anteriores no tenga que tocarlas todas
00:14:35
vamos a decir, no pasa nada
00:14:36
vamos a poner la clase profesora, aparte de este
00:14:38
vamos a hacer también uno vacío
00:14:41
para que las aplicaciones que lo usaban
00:14:43
no se lo carguen
00:14:45
no las estropee
00:14:46
ala, solucionado
00:14:48
ya se me han quitado todos los rojos
00:14:50
¿vale?
00:14:53
normalmente se hacen varios constructores
00:14:55
en una clase
00:14:57
porque cada aplicación puede querer usar uno
00:14:58
u otro, entonces casi siempre
00:15:01
se hace uno sin parámetros
00:15:03
vacío, para el que quiera instanciar
00:15:05
por las buenas, y otro con
00:15:07
parámetros porque es muy cómodo
00:15:09
instanciar pasando propiedades
00:15:11
¿vale? normalmente se hacen dos
00:15:13
vale, pues vamos a hacer una aplicación
00:15:15
que ahora ya sí que crea
00:15:17
un departamento, unos profesores
00:15:19
y le asigna departamentos a un profesor
00:15:22
y muestra cosas o lo que sea.
00:15:23
Pues venga, vamos a hacernos ahora ya
00:15:26
la versión 5.
00:15:28
Ahora ya tengo un main
00:15:41
haciendo cosas.
00:15:43
Vale, pues esta aplicación
00:15:48
va a
00:15:50
crear un array de
00:15:51
10 profesores.
00:15:53
Este instituto tiene 10 profes.
00:15:56
Vale, ahora
00:16:12
Vamos a este
00:16:16
Vamos a
00:16:21
Vamos a hacer un departamento
00:16:23
Un objeto departamento
00:16:24
Departamento
00:16:27
Un único
00:16:29
Departamento de mates
00:16:34
A departamento no le he puesto constructores
00:16:36
Buf, que rollo
00:16:42
Entonces voy a tener que hacer el de punto no se que
00:16:43
Vamos a hacerle un constructor
00:16:45
Con propiedades al departamento
00:16:47
uno con propiedades
00:16:49
con parámetros
00:16:56
y voy a hacer ya
00:16:57
porque es una buena costumbre
00:17:00
me facilita luego los mains hacerlos como me den la gana
00:17:01
vamos a hacer uno
00:17:04
sin parámetros también
00:17:06
hala
00:17:07
hala ya tengo dos constructores
00:17:10
luego ahora ya me voy a mi aplicación
00:17:16
de profesores
00:17:18
me voy a crear un departamento de mates
00:17:19
un departamento de mates
00:17:21
Que dónde va a estar, en la planta 2
00:17:25
¡Hala! Ya tengo creado un departamento
00:17:28
Cuyo nombre es mates
00:17:32
Porque el constructor ha utilizado
00:17:33
Esto que yo le paso para inicializarlo
00:17:36
Que está en la planta 2
00:17:37
¿Vale?
00:17:39
Si pusiéramos
00:17:42
Aquí esto
00:17:43
Has creado
00:17:46
Un departamento
00:17:50
De nombre
00:17:55
Voy a ponerlo en dos
00:18:01
exista en la una parte para que no se quede tan grande
00:18:04
tan
00:18:06
de punto nombre
00:18:07
oe colega
00:18:12
punto
00:18:22
localización
00:18:27
vale, vamos a poner unos asteriscos
00:18:30
abajo para que
00:18:38
vale, entonces me he limitado
00:18:39
a crear un departamento
00:18:47
y voy a poner esto system out
00:18:48
para ver que efectivamente se ha creado un departamento
00:18:51
con ese nombre y con esa localización
00:18:53
que no he tenido que inicializarlo
00:18:55
porque el constructor ya lo ha hecho
00:18:57
vale, el constructor
00:18:59
ya lo habrá hecho
00:19:01
si
00:19:02
ejecutamos esto
00:19:04
pues aquí está, hemos creado un departamento
00:19:08
de mates que está en la planta 2
00:19:13
está claro, vale
00:19:14
ahora que vamos a hacer
00:19:18
vamos a crear
00:19:19
los profesores que estaban
00:19:22
sin crear y vamos a asignarles
00:19:24
a todos
00:19:26
al departamento de mates
00:19:27
vamos a hacer que estén todos en el departamento de mates
00:19:29
pues vamos a recorrer
00:19:32
la raíz de profesores
00:19:33
cuidado aquí con el for each nunca jamás
00:19:35
por lo que dijimos el otro día que os habéis aprendido ya en memoria
00:19:38
porque el for each
00:19:40
te va haciendo copias de esto
00:19:42
luego si creas el objeto, el objeto lo asocia
00:19:44
a la copia y no a la variable
00:19:46
etcétera, con lo cual aquí tenemos que
00:19:48
hacerlo con este sí o sí
00:19:50
bueno, si vas a consultar, lo otro se escribe muy rápido
00:19:51
por ejemplo
00:20:00
bueno, consultar es coger los datos
00:20:07
también para
00:20:09
para asignar eso a otra variable
00:20:10
eso también es consultar
00:20:14
ahora, ¿qué hacemos con cada
00:20:15
profesor? pues vamos
00:20:20
a crear un profesor, gracias a que
00:20:22
tenemos el constructor, lo podemos
00:20:24
hacer con una única línea, en las versiones
00:20:26
anteriores, teníamos que
00:20:28
instanciarlo y ahora darle
00:20:30
las propiedades
00:20:32
en las versiones anteriores, ahora ya no hace falta
00:20:33
tenemos el constructor, pues llamo
00:20:36
al constructor
00:20:38
profesor
00:20:39
y a través del constructor
00:20:43
ya le doy los valores iniciales
00:20:46
que le vamos a poner pues
00:20:47
el nombre
00:20:49
no sé que iba
00:20:51
primero, si nombre, DNI
00:20:53
nombre, lo que importa es el orden
00:20:55
aquí, primero el nombre, luego
00:20:58
el NIF y luego el sueldo
00:20:59
Sí
00:21:01
El Eclipse te ofrece esa ayuda
00:21:06
Bueno
00:21:09
Lo carga el diablo
00:21:13
Que a Eclipse
00:21:15
Y a cualquier entorno de desarrollo
00:21:18
Lo carga el diablo
00:21:19
Porque le estoy pasando varios parámetros
00:21:20
El primer parámetro es este
00:21:25
El nombre
00:21:27
El segundo parámetro que le paso al constructor
00:21:27
El NIF es este
00:21:30
El tercer parámetro que le paso es el sueldo
00:21:30
que empiecen ganando todos 2.000
00:21:32
y ahora
00:21:34
¿cuál es el tercer parámetro que le tengo
00:21:36
que pasar?
00:21:38
el objeto departamento al que pertenece
00:21:40
le tengo que pasar un objeto
00:21:43
cualquier cosa que yo le pase ahí
00:21:44
que no sea un objeto departamento no vale
00:21:46
le tengo que pasar un objeto
00:21:48
¿y cuál le tengo que pasar? al que yo quiera que pertenezca
00:21:50
ese profesor
00:21:52
bueno pues si hemos dicho que van a pertenecer todos al de mates
00:21:53
pues paso este objeto que acabo de crear
00:21:57
le paso este objeto
00:21:59
Y ya está
00:22:02
Y ya tengo los 10 profesores creados
00:22:04
Todos en el único departamento que hay
00:22:06
El único que hay
00:22:09
Y con esas propiedades
00:22:10
Vamos a
00:22:13
Mostrar a los profesores
00:22:15
Para ver que los ha creado
00:22:18
Bien
00:22:20
Ahora ya para mostrar, pues venga, vamos a hacer un for each
00:22:23
Porque esto es solo
00:22:26
El system out
00:22:27
Como le gusta
00:22:28
Vale
00:22:30
profesores
00:22:32
es un for que recorre
00:22:35
todas las posiciones de la raíz de principio a fin
00:22:44
todas, a menos que metas un break dentro
00:22:46
todas
00:22:47
y en cada iteración
00:22:48
esta variable se va
00:22:50
la crea
00:22:52
esta variable solo existe el tiempo que dure el for
00:22:54
¿pero qué tipo de variable es?
00:22:57
del tipo que pongas tú aquí
00:22:59
y en cada iteración
00:23:00
se queda con una copia
00:23:03
de la
00:23:05
posición en la que estés en el array
00:23:07
y si le pasas ahí una variable de tipo
00:23:09
profesor, la lias
00:23:11
¿cómo si le pasas una variable? ¿dónde?
00:23:12
en el port
00:23:14
aquí tienes que poner siempre
00:23:15
un array
00:23:18
pero en la izquierda si le pasas
00:23:19
una variable de tipo profesor mismo
00:23:22
pero que ya exista
00:23:23
no, no, no, no, es una variable
00:23:25
local porque es que tú la vas modificando
00:23:28
No, no, no, claro
00:23:29
No, es que de hecho
00:23:33
Ni siquiera creo que te deje
00:23:36
Imagínate que
00:23:37
Claro, que yo tengo ahí una variable
00:23:38
Profesor
00:23:41
Y aquí digo
00:23:42
No sé si reutilizaría esa para hacer eso
00:23:45
Y luego
00:23:48
Pero vamos, no creo que el compilador te deje hacer esto
00:23:49
O sea, es una variable suya
00:23:51
Nueva que tú creas solo para ese uso
00:23:53
¿Vale?
00:23:55
Vale, vamos a dejarlo
00:24:01
¿Cómo estaba? Y esto fuera.
00:24:02
Vale, y ahora vamos a mostrar
00:24:05
de cada profesor
00:24:06
p.nombre
00:24:07
y vamos a mostrar el departamento en el que está.
00:24:10
p.
00:24:16
Para mostrar el departamento en el que está,
00:24:18
¿qué hay que mostrar? p.departamento.
00:24:20
Claro, ¿qué es?
00:24:23
p.departamento es el objeto entero.
00:24:24
Esto es una dirección de memoria.
00:24:26
Yo esto no lo puedo mostrar.
00:24:28
Este es el objeto entero.
00:24:29
Poder puedo, pero
00:24:32
me va a mostrar una cosa rara
00:24:33
que ni siquiera es una dirección, es tu string
00:24:35
de object, todo eso también lo veremos
00:24:37
porque me muestra esa arroba y esas cosas
00:24:40
vale, pero esto es un objeto
00:24:41
ya entenderás por qué
00:24:44
porque todo eso tiene que ver con la herencia, muy interesante
00:24:47
y bonito
00:24:50
es que nos quedan millones de miles
00:24:50
de cientos de cosas que dar
00:24:54
entonces, insisto
00:24:55
pero tenemos todo el curso, no pasa nada
00:24:56
pero insisto, ya sé que soy la más pesada
00:24:59
del mundo. Me lo dicen
00:25:02
en casa todo el rato. Entonces,
00:25:03
como ya he asumido que soy la más pesada
00:25:06
del mundo, me da igual, ya, no voy a cambiar.
00:25:08
Claro, sí.
00:25:11
Bueno, me dice mi hija, ¿eh?
00:25:12
Si me lo dijera el resto del mundo, ya.
00:25:14
Vale, entonces, como soy la más
00:25:16
pesada del mundo, ya me da igual, no tengo nada que perder.
00:25:18
Entonces, insisto,
00:25:20
tenéis que aprendéroslo todo.
00:25:22
No vale con que lo entendáis
00:25:24
aquí, no vale.
00:25:26
Luego tenéis que aprendéroslo en casa, porque
00:25:28
nos quedan 200.000 millones de ladrillos.
00:25:30
¿Vale? Y como todo esto no esté
00:25:32
a... Vale, vale, vale.
00:25:33
Se va todo al
00:25:36
garete. Vale, pues entonces,
00:25:37
p.departamento es el objeto departamento
00:25:39
entero. Este.
00:25:41
Este objeto entero. Con ese
00:25:44
objeto entero, yo en el system
00:25:45
no hago nada. Eso es una referencia.
00:25:47
Vale, pero es que yo
00:25:50
quiero mostrar el nombre. Pues entonces
00:25:51
ahora pongo nombre. Y como
00:25:53
veis, se han anidado dos puntitos y no
00:25:55
pasa nada que se hayan anidado.
00:25:57
Claro, a ver, no porque lo haremos a través de métodos
00:26:00
Porque no se hace así en realidad
00:26:04
Pero
00:26:05
Este es el objeto departamento
00:26:05
El objeto departamento tiene una propiedad en nombre
00:26:09
Que el objeto departamento tiene una propiedad
00:26:10
Que es objeto
00:26:14
Pues podríamos poner ese objeto y luego otro punto
00:26:15
Y luego otro punto y podríamos
00:26:17
Anidar hasta el infinito
00:26:19
Si departamento tuviera
00:26:21
Una propiedad que fuera objeto
00:26:23
Y ese objeto a su vez tuviera otro objeto dentro
00:26:25
Y otro dentro
00:26:28
Pero hombre, eso ya sería un diseño
00:26:28
Un poco ágil
00:26:31
Vale, pues entonces
00:26:33
Esto
00:26:35
A nadie le angustia esto, ¿no?
00:26:36
No
00:26:40
Es que, bueno, vais sobrados
00:26:40
Vale, pues ahora vamos a ejecutar esto
00:26:43
A ver si es verdad que los ha metido
00:26:46
A todos en mates
00:26:47
¿Por qué le hemos metido a este departamento?
00:26:48
Pues sí
00:26:52
Pero a Pedro no le funciona, pero a los demás sí
00:26:53
Vale, pues están
00:26:55
los que hemos creado en mates
00:26:57
vale, ahora resulta
00:26:59
bueno
00:27:02
dije que iba a hablar poquito y he mentido
00:27:03
pero bueno, es una mentira más
00:27:05
os he soltado tantas ya, que una más
00:27:07
como cuando dijiste
00:27:09
los chicos, los estudiantes que están rojos no caen en el examen
00:27:11
y no cayeron
00:27:14
a ver, que de 10 cosas
00:27:15
si, de 10 cosas que digo, 8 son mentiras
00:27:18
dadlo por sentado, pero luego lo voy aclarando
00:27:22
luego lo voy aclarando
00:27:24
No, esas son
00:27:25
Las dos de las que son verdad son esas
00:27:28
Cuando digo U0
00:27:30
Esa es la que es verdad
00:27:32
Es verdad, joder
00:27:33
Vamos a entrar aquí en un bucle infinito
00:27:36
Bueno, a ver
00:27:39
Ahora vamos a imaginar que el instituto
00:27:42
Se ha hecho grande y ha aparecido
00:27:45
Un departamento de lengua
00:27:46
Se ha hecho, ha aparecido un departamento de lengua
00:27:48
Pues vamos a hacer un departamento
00:27:51
¿Qué?
00:27:52
Vamos a hacer un nuevo departamento.
00:27:54
Departamento 2.
00:27:56
Otro más.
00:27:58
El instituto se ha hecho muy grande.
00:28:00
El departamento este es de lengua.
00:28:06
¿Y dónde está?
00:28:10
Este está en la planta 1.
00:28:10
Este pobre departamento, pues ya está.
00:28:15
Está aquí creado con su constructor,
00:28:17
pero no tiene ningún profe, ni tiene nada.
00:28:19
Buena señal.
00:28:25
Vale, a mí me pasaba eso de joven.
00:28:27
¿Qué planta está ahí?
00:28:28
en la que tú quieras. ¿Cuál quieres tú?
00:28:29
Que yo te la pongo. La 19.
00:28:32
Pues venga, la 19.
00:28:34
Está en la 19 el departamento de lengua.
00:28:36
¿Y sin ascensor?
00:28:39
Sin ascensor.
00:28:40
Vale, entonces, ahora
00:28:42
de los 10
00:28:44
profes del instituto,
00:28:46
ahora vamos a pasar al departamento de lengua
00:28:48
unos cuantos. Por ejemplo,
00:28:50
vamos a pasar a los 5 primeros
00:28:52
al departamento de lengua.
00:28:54
Yo sabía que se jodan.
00:28:55
Son profes de matemática.
00:28:57
Ahora, vamos a pasar a los cinco primeros profes al departamento de lengua.
00:28:58
Departamento de lengua.
00:29:16
Bueno, pues ¿qué haríais?
00:29:22
Un bucle.
00:29:24
Cualquier pregunta, la respuesta a un bucle siempre suele ser cierta.
00:29:27
Un bucle.
00:29:31
¿Qué más?
00:29:33
No, pues .22 no, los 5
00:29:34
Hasta que valga 5
00:29:38
Bueno, en este caso sería igual
00:29:39
Lo que pasa es que si luego aumentas a 100
00:29:43
Y quieres seguir pasando los 5 primeros
00:29:47
Bueno, bueno, ahí te hemos pillado
00:29:49
Vale, pues haríais algo así, ¿verdad?
00:29:53
Vamos a recorrer los 5 primeros
00:29:56
Desde igual a 0
00:29:58
Esto, por ejemplo, con un for each no podríamos
00:30:01
porque un forage te recorre todo
00:30:03
por
00:30:06
pelotas
00:30:06
porque para los
00:30:08
conjuntos son la única opción
00:30:15
al margen de los tiradores
00:30:18
ya lo sabréis
00:30:19
vale
00:30:22
es un tipo de colección muy útil
00:30:23
que no lo sé
00:30:25
dejad de meterme como que sé cosas
00:30:27
que yo vengo aquí
00:30:30
y sé lo mismo que vos
00:30:31
Pero no las voy a decir
00:30:32
Ya, pero entonces vas a pasar
00:30:35
Siempre a la mitad
00:30:43
Yo he dicho que quiero pasar a los 5 primeros
00:30:44
Si el array tiene 100
00:30:47
Los 5 primeros
00:30:49
Son los 5 primeros
00:30:50
¿Vale? Acordaos de
00:30:53
Que hay que hacer
00:30:55
Lo que te pidan
00:30:56
¿Vale? La iniciativa
00:30:58
en este contexto
00:31:01
mal, lo que te pidan
00:31:02
vale
00:31:05
bueno, pues que hacemos
00:31:06
pues una línea y se acabó
00:31:08
profesores de i
00:31:11
punto
00:31:13
departamento igual a
00:31:15
dev2
00:31:17
ala, ya están pasados
00:31:18
vale
00:31:20
ya están
00:31:23
easy
00:31:24
donde hay un easy, aquí no hay ningún easy
00:31:26
perdona
00:31:29
como que mi hija
00:31:41
seré yo la que tenga que enseñarle
00:31:45
inglés a ella, a ti y a cuantos como tú
00:31:46
que yo tuve
00:31:49
un novio americano que no hablaba español
00:31:51
durante un tiempo largo
00:31:53
norteamericano
00:31:54
perdón
00:31:57
es que no era de ahí
00:31:58
era indio
00:32:03
pero trabajaba
00:32:04
entonces, como comprenderás
00:32:06
hablábamos en inglés
00:32:09
así que no tienes nada que enseñar
00:32:10
hombre, y si para mí es
00:32:12
y si me tiro por la ventana
00:32:16
y si no sé qué, para mí es eso
00:32:18
claro, es el if
00:32:19
para mí el if es el if
00:32:23
y si te tiro a ti por la ventana
00:32:24
Vale, esto está clarísimo, ¿verdad?
00:32:26
Hemos cambiado al profesor
00:32:29
Y si ahora volviéramos a mostrar a los profes
00:32:31
Pues los cinco primeros se han ido a lengua
00:32:33
Fijaos qué maravilla
00:32:35
Qué maravilla
00:32:39
Estaban todos en mates
00:32:43
Y después de lo que hemos hecho
00:32:45
Los cinco primeros
00:32:47
Los hemos calzado al departamento de lengua
00:32:49
Con lo cual van a cobrar más
00:32:51
Este bucle de aquí
00:32:52
Ahora vamos a ponerles
00:33:03
Claro, vamos a su
00:33:10
Ahora ya vamos a ponerles
00:33:15
Como ya hay profes en diferentes departamentos
00:33:16
Vamos a ponerles el extra de sueldo
00:33:18
Sobre el 1000 que tenían todos
00:33:20
¿No se puede hacer eso que directamente al pertenecer al departamento
00:33:22
eso ocurra?
00:33:25
En el momento que perteneces al departamento de lengua
00:33:26
ya tienes ese extra de sueldo.
00:33:28
Claro, es lo de...
00:33:33
No, a ver.
00:33:34
En el momento de hacer la asignación,
00:33:36
si tú lo haces con un igual, no.
00:33:38
Porque eso es una asignación de una variable a otra.
00:33:39
Sí, si esta asignación la haces a través de un método set,
00:33:42
que te ha sonado el método set,
00:33:46
que entonces puedes meter en el set eso.
00:33:48
Pero bueno, eso...
00:33:50
Pero si es a través de una asignación,
00:33:50
No puedes ejecutar código en la asignación.
00:33:52
Igual a punto
00:33:55
departamento 2, una propiedad
00:33:56
del departamento 2 que sea extrasueldo
00:33:58
y más igual.
00:34:00
Bueno, si has puesto una propiedad
00:34:03
que es extrasueldo, pero...
00:34:04
Vale, entonces ahora ya, como ya tenemos
00:34:06
profes y ya no vamos a ir, tranquilo,
00:34:08
relájate. Que estás como
00:34:10
diciendo, acaba ya de una vez.
00:34:12
Ya, pero que ya acabamos.
00:34:15
Con esto ya acabamos.
00:34:16
Es como que espero más rápido.
00:34:18
Espero rápido.
00:34:20
O sea que voy más lenta de lo que te gustaría
00:34:21
No, no, no, al revés
00:34:23
Vas tan rápido que me haces esperar rápido
00:34:25
Contagio la rapidez
00:34:27
Vale, entonces ahora vamos
00:34:30
Ahora ya, todos los profes que hemos hecho
00:34:32
Ganaban
00:34:34
Mil euritos
00:34:35
No, mil no
00:34:38
Dos mil
00:34:39
Todos los profes que hemos hecho ganaban dos mil
00:34:40
Ahora vamos a ponerles el extra
00:34:42
En función
00:34:44
Del departamento en el que están
00:34:46
Para eso tenemos un método
00:34:49
Espera, vamos a poner unos asteriscos
00:34:50
Para poder distinguir
00:34:53
Porque ya con tantos
00:34:54
Luego ya no vamos a ver nada
00:34:55
Entonces, vamos a poner ahora ya lo de
00:34:56
Poner el extra
00:34:59
Entonces
00:35:01
Vamos a
00:35:03
Recorrer el array para hacérselo a todos los profes
00:35:05
Y sea menor que
00:35:08
Profesores.lenz
00:35:12
Pues con cada profesores
00:35:14
De ahí
00:35:18
¿Qué hacemos?
00:35:18
Extra sueldo
00:35:23
sueldo extra
00:35:24
ya está
00:35:27
entonces al haber llamado este método
00:35:30
a cada profesor
00:35:32
en función de si es de lengua o de mates
00:35:34
le sube al sueldo
00:35:37
100 o 200
00:35:38
¿por qué eso hace este método?
00:35:40
este método
00:35:43
coge un objeto profesor
00:35:44
ahora lo vuelvo a poner Juan
00:35:46
ese método coge un objeto profesor
00:35:50
si su nombre es mates
00:35:52
es que le veía así
00:35:54
Si su nombre es mates le sube 100
00:35:55
Y si es lengua le sube 200
00:36:00
Vale, pues entonces este método
00:36:01
Ya a cada profesor le subirá lo que le toque
00:36:03
Vale, pues vamos a mostrar
00:36:06
Ahora ya sí que con un for each
00:36:10
Vamos a mostrar el sueldo de cada profe
00:36:12
Vamos a mostrar el sueldo de cada profe
00:36:16
Después de la subida
00:36:20
Con el extra este
00:36:22
Pues el sueldo de cada profe. Cuidado que p.nombre más p.sueldo. Vale, vamos a ver. Ahora ya después del sueldo extra.
00:36:23
Pues efectivamente
00:36:46
Después de la extra
00:36:49
Los de lengua
00:36:50
Tienen 200 euros más de los 2000 iniciales
00:36:52
Y los de mates
00:36:55
Tienen 100 más
00:36:56
De los 2000 iniciales
00:36:58
Que bien, ahora los pepitos podrán comer
00:37:00
Todos los meses
00:37:02
Todos los meses
00:37:03
Bueno
00:37:06
Depende de tus necesidades
00:37:08
claro, si quieres un Lamborghini
00:37:12
o tienes una tarjeta Pokémon de esas tuyas
00:37:18
o te has quedado sin Lamborghini
00:37:20
ya, pero yo las tengo mejores
00:37:21
que esas, por pese a que no me las traigo
00:37:24
pero
00:37:26
¿pero no consigues un buen comprador o qué?
00:37:27
porque te la veo pasear todos los días
00:37:30
te da buena suerte
00:37:31
muy bien
00:37:35
es como el que
00:37:37
por si se
00:37:38
reproduce, pero no ocurre
00:37:42
bueno
00:37:44
¿tú has visto billetes de 500 euros?
00:37:45
yo he visto uno también
00:37:47
creo que nunca
00:37:48
¿de qué color son? ¿morados?
00:37:50
bueno, pues esto está súper claro
00:37:54
entonces ya con esto de que
00:37:56
los objetos
00:37:58
puedan tener a su vez objetos dentro
00:38:00
se nos abren ya todas las
00:38:01
posibilidades posibles
00:38:04
para hacer aplicaciones con lo que queramos
00:38:05
y lo que sea
00:38:07
¿vale?
00:38:08
Gracias.
00:38:12
- 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:
- 9
- Fecha:
- 5 de diciembre de 2024 - 18:36
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 38′ 12″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 165.59 MBytes