Saltar navegación

20241129 Objetos 1 - 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 29 de noviembre de 2024 por Stefano C.

25 visualizaciones

Descargar la transcripción

Voy a grabar esta clase y por lo tanto si habláis o preguntáis algo me autorizáis a grabar vuestras voces. 00:00:00
Entonces hoy vamos a empezar lo que es la programación orientada a objetos. 00:00:10
Es un paradigma nuevo, vamos a cambiar desde la programación estructurada, que es lo que hemos hecho hasta ahora, 00:00:15
entonces los mecanismos sustancialmente de control de flujo de ejecución que hemos visto hasta ahora, 00:00:21
Y vamos a cambiar un poco la forma con la que nos enfocamos a los sistemas 00:00:28
Y nos enfocamos a los proyectos y a las clases que hacemos 00:00:33
Vamos a entender por fin que es una clase, que es un objeto 00:00:37
Que es esa palabra static, que son estas cosas de public, etc 00:00:42
Y vamos a empezar a profundizar en el potencial real de Java 00:00:46
Hasta ahora nosotros hemos utilizado Java como si fuera un lenguaje de programación 00:00:52
Estructurado sustancialmente 00:00:57
Y tenía un montón de cosas engorrosas 00:00:58
Que poner que no servían de nada 00:01:00
Porque no las estábamos aprovechando 00:01:02
Ahora vamos a intentar 00:01:04
Mejorar un poco esa cosa 00:01:07
¿Vale? Entonces programación orientada a objetos 00:01:09
Es un paradigma 00:01:10
De programación cuyo elemento 00:01:12
Estructural principal es el objeto 00:01:14
¿Os acordáis cuál era el elemento estructural 00:01:16
Principal de la programación estructurada? 00:01:19
Exacto, las funciones 00:01:28
¿Vale? En la programación estructurada 00:01:29
La base sustancialmente 00:01:31
Era hacer funciones, las varias funciones recolectaban una funcionalidad, un procedimiento, algo que se hace 00:01:33
Luego se ponía un nombre a ese trozo de código y de esta forma era reutilizable 00:01:41
Esa cosa más o menos no se ha perdido, pero se añade un concepto nuevo, el concepto de objeto 00:01:49
Ahora hablaremos de eso. Sostancialmente, intentar empaquetar en una única entidad, digamos así, todo lo que se refiere a esa entidad misma. 00:01:55
Entonces, cuando yo voy a modelizar un determinado concepto, modelizo un animal, modelizo un coche, modelizo una persona, modelizo un alumno, 00:02:09
Pues voy empaquetando todo junto lo que es las características de esa entidad y lo que puede hacer esa entidad. 00:02:17
Van de la manita los datos propios que caracterizan esa entidad y todas las acciones, todos los cálculos, los procedimientos, funciones, etc. 00:02:28
Los métodos de esa entidad 00:02:40
Y haremos ejemplos para entenderlo mejor 00:02:45
Elemento estructural principal en el paradigma de la programación imperativa 00:02:48
Si lo ponen aquí, el estructural de la función 00:02:52
Si lo ponen, lo sabéis leer 00:02:54
Las mejoras que aporta la programación orientada a objetos son 00:02:56
Análisis 00:03:01
La forma con la que nosotros analizamos un problema 00:03:03
Intentamos estructurarlos y trabajar con ellos 00:03:07
Se refleja bastante con la programación orientada a objetos 00:03:12
Nosotros como seres humanos estamos acostumbrados constantemente a interactuar con lo que tenemos a nuestro alrededor 00:03:17
Y utilizarlo de alguna forma 00:03:25
Yo pillo el martillo y sé utilizar el martillo 00:03:27
Pillo un coche y sé utilizar un coche 00:03:30
Sé que me puedo esperar del coche 00:03:33
Cuáles son las características de un coche 00:03:35
La idea a nivel de programación orientada a objetos es que yo me creo abstracciones de estas entidades, es lo que quiero modelizar, y según mi sistema, según lo que yo quiero hacer en mi programa, voy adaptando las características y las funcionalidades de este objeto, de esta entidad. 00:03:37
¿Qué quiero decir? Si yo, por ejemplo, voy a trabajar en un sistema de alumnos 00:03:59
entendido como un sistema para secretaría, a lo mejor en secretaría lo que le interesa 00:04:05
del alumno son determinados datos que a nivel de docencia, a nivel de profesor 00:04:12
no son los mismos. A lo mejor a un profesor le interesan mucho las notas y las materias 00:04:17
que cursan los alumnos. Entonces si creo un alumno y voy a crear una modelización del 00:04:24
concepto de alumno, pues le tendré que poner un array de notas, un array de materias cursadas 00:04:30
o algo por el estilo. Si lo hago para secretaría, pues a lo mejor lo que interesa son otras 00:04:36
cosas. Son un array de documentos, que son los documentos anteriores o los informes que 00:04:41
tenía anteriormente. O un array de certificados, que son los certificados que yo puedo crear 00:04:46
y entregar a los alumnos. Entonces, dependiendo de cuál es el contexto en el que voy a modelizar 00:04:51
un determinado concepto, pues puede ser que este mismo concepto sea distinto, ¿vale? 00:04:57
Aparezca de una forma o de otra. Pero la idea es que cuando voy a analizar, yo tengo un problema, 00:05:03
tengo que hacer un sistema, tengo que hacer un programa que solucione este problema y que me ayude 00:05:10
a resolver este problema, pues cuando voy a analizar los conceptos, pues los objetos son muy, en un cierto sentido, 00:05:14
parecidos a lo que haría pensando esos objetos en la vida real, o al menos más cercano con respecto a lo que era 00:05:23
la programación en la imperativa estructural. Entonces, esto hace que sea un poquito más sencillo entender las piezas 00:05:32
con la que voy a trabajar en la programación orientada a los objetos. 00:05:42
Otra ventaja interesante de la programación orientada a los objetos es la escalabilidad. 00:05:46
Es decir, que escalar un problema quiere decir, sustancialmente, hacerlo más complejo. 00:05:50
Escalar un problema puede ser que antes trabajaba con 100 alumnos y ahora tengo un instituto de 1000 alumnos. 00:05:58
El problema se ha hecho más complejo. No tanto porque el problema de gestionar los alumnos haya cambiado, pero no es lo mismo gestionar 10 personas que gestionar 1.000 personas. 00:06:06
¿Vale? Entonces, la idea es que la programación orientada a objetos es muy buena en crear soluciones que en un cierto sentido luego sean modificables, sean adaptables cuando el problema se vuelve más grande. 00:06:16
Entonces mientras que en el estructurado las funciones 00:06:37
A lo mejor el algoritmo que he utilizado es relativamente lento 00:06:41
Entonces por 10 personas funciona bien 00:06:46
Pero cuando llega a 1000 tengo que cambiar el algoritmo 00:06:48
Tengo que reestructurar todo 00:06:50
Pues en la programación orientada a objetos 00:06:52
El algoritmo a lo mejor siempre mantiene 00:06:54
Pero como que me da más instrumentos, más herramientas 00:06:57
Para que pueda escalar el problema 00:07:01
Cambiar lo que tengo en mi sistema para que pueda enfrentarse a problemas más complejos 00:07:05
Y finalmente reutilización del código 00:07:12
El concepto es que yo puedo crear una modelización de un determinado concepto 00:07:15
Un alumno, un coche, un animal 00:07:23
Y que si mañana vuelvo a hacer un nuevo sistema 00:07:25
Donde se utilizan alumnos, animales o coches 00:07:29
pues yo tengo ya una base, tengo ya el elemento coche creado 00:07:33
y puedo pillar esa misma clase, ese mismo objeto modelizado 00:07:37
traerlo a mi nuevo sistema, reutilizar ese código 00:07:42
y luego si quiero, porque el nuevo sistema utiliza cosas un poquito distintas 00:07:46
pues lo adapto al nuevo contexto 00:07:50
pero digamos que la base, las cosas fundamentales 00:07:53
a lo mejor las puede reutilizar de otros proyectos 00:07:57
Esto de poder reutilizar el código es bastante importante porque me puede facilitar mucho o agilizar mucho la creación de nuevos proyectos. 00:08:00
proyectos. ¿Dudas? Es un poco el concepto de no tener que reinventar la rueda cada vez. 00:08:10
Si yo ya me he hecho un programa o un sistema que calcula la media de las notas de los alumnos, 00:08:19
pues y ahora la necesito otra vez, no la re-implemento desde cero, sino me traigo las clases que 00:08:25
necesito para que esto funcione y ya las tengo hechas. Característica de la programación 00:08:30
nota de objeto, ¿vale? Creamos clases que definen unos datos y un comportamiento y creamos 00:08:37
objetos de estas clases, ¿vale? Sostancialmente aquí trabajamos con dos conceptos, el concepto 00:08:42
de clase y el concepto de objeto, ¿vale? La clase es un molde, es una abstracción, 00:08:49
¿vale? La clase es una definición genérica de un concepto que yo voy a modelizar, es 00:08:56
alumno. ¿Qué alumno? ¿Este o este? No. El alumno en general. ¿Qué características 00:09:04
tiene el alumno? Pues seguramente tendrá un nombre. Todos los alumnos tienen que tener 00:09:10
un nombre. Tendrá una dirección. Pues cada alumno tendrá una dirección. A partir de 00:09:14
este molde general, que tendrá nombre, apellido y materias cursadas, hago para decir, pues 00:09:21
Crearé objetos. ¿Qué son objetos? Son instancias, son implementaciones concretas de la clase. Pensad de estar en la playa y tenéis las formitas, moldes que jugáis con la arena. 00:09:27
¿Cómo se llaman aquí? Los moldes, ¿vale? 00:09:44
Vosotros tenéis el molde de una tortuga, ¿vale? 00:09:48
Y ese molde no es una tortuga de arena, no sé si me explico 00:09:52
Es una cosa que os puede permitir de crear una tortuga de arena 00:09:57
Cuando vosotros pilláis la arena, la metéis ahí dentro y la pegáis al suelo dándole golpecitos con la pala 00:10:01
Pues a ese punto habéis creado una tortuga de arena 00:10:10
Esa es una instancia 00:10:12
Y podéis sacar el molde 00:10:14
Y crear cuantas instancias queráis 00:10:16
Y tendréis 5 o 6 00:10:18
Tortugas 00:10:20
Todas iguales 00:10:23
Pero cada tortuga es distinta 00:10:26
¿Se entiende? 00:10:28
Las tortugas son objetos 00:10:30
El molde las clase 00:10:32
¿Si? 00:10:34
Luego tu cambias la clase 00:10:37
Pillas la clase estrella 00:10:39
Que es otra figurita 00:10:40
Y haces cuantas estrellas quieres 00:10:42
Entonces, objetos estrellas. Tú tienes la clase Scanner, que es una clase astrata que permite luego de usar métodos como leer de teclado, y creas un objeto Scanner, Scanner, Scanner, igual New, Scanner, y ese objeto Scanner es el lector para tu programa. 00:10:44
¿Se entiende? 00:11:07
Entonces, la clase es general 00:11:11
La clase me define una abstracción del concepto que yo voy a modelizar 00:11:13
Es el modelo general 00:11:18
A partir de este modelo general yo puedo crear muchos distintos objetos que son instancias concretas 00:11:20
Mis alumnos 00:11:29
Yo tenía un alumno, en general un alumno tiene que tener nombre, apellido y lista de materias 00:11:30
Luego creo el alumno Paco Fernández y eso es un objeto, es un objeto concreto, ¿vale? 00:11:35
Tendrá la misma estructura que todos los otros alumnos, tendrá un nombre, un apellido y las materias, ¿vale? 00:11:44
Pero es un objeto concreto y podré crear cuantos objetos me da la gana, cuantas instancias de una clase me da la gana. 00:11:50
¿Se entiende? Volveremos sobre esto. 00:11:59
Los objetos colaboran entre ellos para conseguir algo 00:12:02
Entonces yo crearé varios objetos, crearé, por ejemplo, si quiero hacer una escuela 00:12:06
Crearé mis alumnos, crearé mis profesores, crearé objetos materias, crearé objetos aulas, lo que haga falta 00:12:11
Y luego estos objetos se irán componiendo entre ellos 00:12:18
Por ejemplo, una escuela tendrá un array de clases 00:12:22
Cada clase tendrá un array de alumnos y un profesor 00:12:28
Y voy combinándolos de tal forma que los varios objetos se relacionan entre ellos 00:12:32
Hablaremos de esto y lo haremos con calma 00:12:38
Entre objetos, la forma de colaborarse es pasándose mensajes 00:12:40
Para poder pasarse mensajes de un objeto a otro 00:12:44
Se hacen con llamadas a métodos 00:12:48
Llamadas a funciones y procedimientos 00:12:51
Yo pillaré un objeto, el objeto alumno 00:12:53
Y le daré método saluda 00:12:56
Entonces llamaré sobre mi alumno Paco 00:12:58
El objeto saluda 00:13:01
El método saluda 00:13:03
Y entonces Paco saludará 00:13:05
Diciendo, hola, soy Paco 00:13:07
Curso estas materias 00:13:08
Y pondrá sus materias 00:13:10
Si lo llamo sobre el objeto Sara 00:13:12
Pues el alumno Sara 00:13:15
Pues Sara dirá 00:13:17
Oye, mira, soy Sara 00:13:18
Y mis materias son estas otras 00:13:20
¿Se entiende? 00:13:22
¿Vale? Fijaos que la clase no cambia, o sea, todas las clases alumnos pueden saludar, tendrán el método saludar y tendrán un nombre, y el método saludar de este objeto dirá, escribe tú contenido de nombre diciendo hola soy contenido de nombre, luego se lo llamo sobre el objeto que tenía Paco en nombre, dirá hola soy Paco, y si lo llamo sobre el objeto que se llamaba Sara, pues dirá hola soy Sara. 00:13:24
Entonces, dos conceptos que tienen que estar cada vez más claros. Clase, la abstracción, el concepto general, la modelización de lo que voy a hacer y luego los objetos, instancias concretas de este de aquí. 00:13:55
Este es el molde y estos son los objetos que creo a través del molde. 00:14:11
Cada clase va a ocuparse de lo que es su responsabilidad. 00:14:18
Esto de poder crear clases me permitirá crear distintas clases, distintos tipos de objetos, 00:14:21
que sustancialmente me permitirán hacer un poco lo que antes llamábamos de videovincerás. 00:14:28
Yo a cada una de estas clases le asignaré un cierto número de posibles métodos, posibles funciones, posibles procedimientos que puedan hacer los comportamientos de estas clases y asignaré a cada clase comportamientos distintos para que luego pueda combinar estos entre ellos para obtener lo que yo quiero, el funcionamiento de la escuela. 00:14:33
Pero en el funcionamiento de la escuela, los alumnos tendrán la responsabilidad de las acciones que son para alumno, los profesores tendrán las responsabilidades de las acciones para profesores, etc. 00:14:55
Por ejemplo, el alumno tiene una serie de notas, hemos dicho, ¿quién rellena esas notas? Pues el profesor. 00:15:07
Entonces, el profesor tendrá un método que pillará a un alumno y pillará una nota y irá a ese alumno a buscar su lista de notas y añadirá esa nota al alumno, por ejemplo. 00:15:18
Vamos a ver lo que dice aquí, pero en un ejemplo. Ejemplo, coche. 00:15:32
Un coche puede ser un ejemplo de clase, con unas características y una funcionalidad propia. 00:15:37
Por ejemplo, un coche puede tener como características propias color, marca, modelo y matrícula. 00:15:42
Está claro que a lo mejor en otros contextos, pues no me interesa el color del coche. 00:15:50
Si yo soy un vendedor de coches y hago un sistema para vender coches, pues a lo mejor el color del coche me interesa mucho. 00:15:56
Si yo soy, no sé, me lo invento, de la DGT y tengo que poner multas, el color del coche me interesa menos. 00:16:04
Así me interesa porque la targa es en base al color 00:16:11
Sí, pero me entendéis lo que quiero decir 00:16:14
Dependiendo del contexto 00:16:16
Puede ser que esta clase tenga unas características 00:16:17
O otras, algunas que son fundamentales 00:16:20
Porque si no, no puedo hacer el sistema 00:16:22
Que yo quiero, o puede ser que haya 00:16:24
Datos adicionales que me dejo allí 00:16:26
Y que sean opcionales o lo que sea 00:16:28
¿Vale? En este caso en concreto 00:16:30
Yo he decidido de modelizar un coche 00:16:32
Y he decidido que el coche 00:16:34
Las características que definen un coche 00:16:36
En mi programa son su color 00:16:38
Su marca, su modelo y su matrícula 00:16:40
Cuando creo un coche 00:16:42
Tendré que definir 00:16:44
Cuál es su color, cuál es su marca 00:16:46
Cuál es su modelo y cuál es su matrícula 00:16:48
Entonces puedo crear el coche 00:16:50
Renome 00:16:52
Verde con matrícula 37 00:16:55
Pues ese es un coche concreto 00:16:59
Y luego me creo 00:17:01
El Ferrari 00:17:03
No sé el modelo de Ferrari 00:17:05
Testa rosa 00:17:07
Viejo pero bonito 00:17:08
Rojo, como no, matrícula 95 00:17:09
Mismo molde, pero ha hecho dos objetos distintos 00:17:13
El Megane y el Ferrari 00:17:17
¿Sí? ¿Se entiende? 00:17:20
Su funcionalidad, las funcionalidades del coche son desplazarse o parar 00:17:25
Yo puedo o parar el coche, el coche se parará 00:17:29
O puedo desplazar el coche de aquí a Zaragoza 00:17:33
¿Vale? Entonces ahora yo podré pillar el Megane, llamar el método desplazarse y darle como destino Bilbao. 00:17:37
Ahora el coche verde, el Megane, hará un recorrido para llegar a... ¿Qué quiere decir desplazarse? No lo sé. 00:17:47
Ya lo tendremos que definir. 00:17:56
A lo mejor si mi sistema es para calcular rutas, pues cuando hace el desplazarse, pues calculará cuántos kilómetros ha recorrido. Si es para calcular gastos en términos de gasolina, pues cuando yo hago desplazarse, me calculará cuánto cuesta desplazarse hasta Bilbao en base a cuánto gasta el coche, cuántos kilómetros va a hacer, y entonces me devolverá, oye, mira, has gastado 30 euros. 00:17:57
Si yo soy una empresa que tiene que repartir paquetes, por ejemplo, una empresa de logística, pues a lo mejor mi concepto es desplazarse para ver cuánto me cuesta mover una camioneta de aquí a Bilbao para entregar los paquetes que tengo que entregar ahí. 00:18:23
Depende del contexto. 00:18:41
pero mi coche 00:18:42
he definido que tiene esta característica 00:18:45
de aquí y puede hacer 00:18:47
su comportamiento, sus métodos 00:18:49
lo que puede 00:18:51
hacer es desplazarse 00:18:53
o parar, si quiero que pueda 00:18:55
hacer otras cosas como 00:18:57
no sé, tocar el 00:18:59
claxon, pues tendré que crear 00:19:01
un nuevo método 00:19:03
no sé, pitar, que cuando lo llamo 00:19:05
hace 00:19:07
no sé 00:19:07
pero todo depende 00:19:08
Del contexto de que yo quiero que haga este coche 00:19:11
Una clase coche es la responsabilidad de manejar todo aquello que tenga que ver con el coche 00:19:15
Un garage con muchos coches puede hacer uso de ella 00:19:22
O un constructor, o un conductor también 00:19:26
Es decir, que el coche empaquetará todo lo que es relacionado con el coche 00:19:29
Podría tener otra característica que sea velocidad, si me interesa la velocidad 00:19:36
Podría tener otra característica que es lugar actual, si me interesa georeferenciarlo en algún lado del mundo 00:19:41
Pero todo lo que está relacionado con coche, tiene que ir en coche 00:19:49
No puedo crear coche sin matrícula y luego crearme otra clase y en esa clase decir 00:19:54
¿Y este coche tiene esta matrícula? 00:20:01
No, matrícula es una característica de coche, tiene que ir empaquetado con coche 00:20:03
todo lo que define coche, tanto en términos de características 00:20:07
como en términos de funcionalidades que puede hacer coche 00:20:12
tiene que estar en la clase coche 00:20:15
¿se entiende? 00:20:17
entonces, ahora se me ocurre, quiero hacer una nueva cosa del coche 00:20:20
que es, no sé, decelerar 00:20:24
pues tendré que ir a la clase coche 00:20:27
crear un nuevo método de decelerar 00:20:31
y implementar allí el método de decelerar de coche 00:20:33
Es decir, qué hace el coche cuando se decelera. 00:20:36
Y posiblemente tendrá una característica velocidad y haré velocidad menos menos. 00:20:39
Y tendré dos nuevos métodos que son acelerar y decelerar. 00:20:45
Acelerar hace velocidad más más y decelerar hace velocidad menos menos. 00:20:48
Por ejemplo, pero está todo siempre empaquetado. 00:20:52
Los coches, lo que puede hacer el coche, están en la clase coche. 00:20:55
¿Se entiende? 00:20:58
Si ahora me creo una nueva clase u otra parte de mis sistemas, 00:21:02
Como por ejemplo, estoy haciendo un garage 00:21:06
Entonces lo que está haciendo es un taller 00:21:08
Entonces me llegan coches 00:21:11
Y yo los tengo que clasificar 00:21:13
Para luego decir qué problema tienen 00:21:14
Etcétera, etcétera 00:21:16
Pues entonces mi taller 00:21:18
Puede identificar los coches 00:21:20
Utilizando la clase coche 00:21:22
Cada vez que viene un nuevo cliente 00:21:24
Yo lo que hago es, créame un nuevo coche 00:21:26
Y le pondré allí que el color es 00:21:28
El color del coche que acaba de entrar 00:21:30
La marca es la marca del coche que acaba de entrar 00:21:32
El modelo, la matrícula 00:21:34
Le pongo todos los datos y ahora me creo un nuevo objeto y este objeto se queda allí y es un coche que está en mi base de datos, en mi sistema, con el que luego podré hacer cosas. 00:21:36
Por ejemplo, el garage podrá asignarle un técnico y el técnico podrá reparar el coche y lo que sea. 00:21:47
también el mismo coche lo podría utilizar si en vez de hacer un sistema de taller 00:21:54
pues es un sistema de préstamos de coches y yo tengo que identificar el conductor 00:22:05
entonces yo tendré una base de datos de conductores, una serie de objetos conductores 00:22:11
y a cada conductor cuando le presto este coche, pues lo que voy a hacer es alquilar este coche 00:22:15
le voy a asignar el coche, no sé qué, el verde, me gana, no sé qué, no sé cuánto 00:22:19
Estoy reutilizando la misma clase de coche para dos sistemas completamente distintos. ¿Se entiende? Podría ser que a lo mejor cuando uso coche como taller o cuando uso coche como alquiler coches, pues necesite algo de información distinta. 00:22:25
En ese caso ya veremos como se puede pillar coche como base 00:22:45
Todos los coches son así 00:22:51
Pero en particular el coche para el taller tendrá estas características extra 00:22:52
Esta funcionalidad es extra 00:22:56
Entonces lo que haremos es extender esta clase 00:22:57
Pero por ahora no 00:23:01
Cuando queramos que un coche se desplace en un garage 00:23:03
Por ejemplo tendremos que comunicarnos con el coche específico 00:23:08
Y darle la dirección a la que queremos que se desplace 00:23:12
O sea, pillaré el coche mega en verde 00:23:15
Le diré, oye mira tú 00:23:17
Objeto, utiliza tu método 00:23:18
Desplazarse 00:23:21
Y te doy como parámetro este garage 00:23:21
Entonces tú lo que has hecho es moverte a ese garage 00:23:24
O te doy este parámetro a este taller 00:23:26
Pues entonces tú estás asignado a ese taller 00:23:28
Dependiendo de 00:23:31
Qué quiero hacer 00:23:33
Más o menos 00:23:34
Clases, una clase es lo que 00:23:35
En el lenguaje de programación nos va a 00:23:41
permitir definir o construir uno o varios objetos, ¿vale? 00:23:43
Es mi molde, es la abstracción, es, no pienso en un objeto concreto, 00:23:47
mas pienso en una categoría de objetos, en una clase de objetos. 00:23:52
Cuando pienso a coche, no pienso a mi coche de casa, pienso a un coche en general. 00:23:56
Si yo os digo, definidme un coche, vosotros me decís, el Megane blanco que tengo en casa. 00:23:59
Es decir, un medio de transporte con cuatro ruedas, que tiene un motor y unos asientos 00:24:05
Y eso no me has definido ni tu coche, ni el mío, ni otro 00:24:14
Has definido una clase, un concepto 00:24:18
Esto es lo mismo 00:24:20
Cuando yo hago la clase, lo tengo que pensar así 00:24:21
Voy a hacer un coche, pues le pondré número de asientos, le pondré color, le pondré cilindrada del motor 00:24:24
Le pondré número de ruedas, lo que me haga falta a mí para luego modelizarlo 00:24:30
Está claro que si yo soy el taller, pues a lo mejor no me interesa saber la temperatura del habitáculo. 00:24:35
A un taller no le interesa. Le interesará saber si funciona o no el aire acondicionado como cosa para repararla o no. 00:24:47
Pero no cuál es la temperatura actual. 00:24:55
Sin embargo, si soy un sistema de gestión de carreras en el desierto 00:24:57
Pues a lo mejor saber cuál es la temperatura actual del habitáculo del coche de carrera X 00:25:04
Pues me interesa, porque si se pasa de 60 grados, pues le puede dar un problema 00:25:09
Entonces, no sé si me explico lo que quiero decir 00:25:14
No hay una forma de modelizar el coche 00:25:17
Hay mil formas que dependen de lo que tú quieres del coche mismo 00:25:21
podemos decir que son moldes para construir objetos, estos moldes tienen 00:25:26
que ser de escritos o programados y cada molde va a tener unas 00:25:33
características, un nombre, unos atributos y unos métodos, el cómo se llama este 00:25:38
molde, esta clase, las características de esta clase que se llamarán los 00:25:47
atributos vale los atributos de una clase son las características de los 00:25:54
objetos que luego iré a crear vale y los métodos son las funciones proceduras y 00:26:00
características y comportamiento que puede hacer este objeto en mi clase se 00:26:06
llama coche este es su nombre sus características son color marca 00:26:13
Modelo y matrícula 00:26:18
Y sus métodos son 00:26:21
Desplazarse y parar 00:26:22
¿Sí? ¿Dudas? 00:26:23
Entonces, por ejemplo, una clase 00:26:31
Que no usaremos casi nunca 00:26:33
La clase persona, ¿vale? 00:26:35
Se define en un fichero que tiene el mismo 00:26:37
Nombre y extensión java, ¿vale? 00:26:39
Punto java, es decir, que si yo voy a crear 00:26:41
La clase persona, public 00:26:43
Class persona, la tendré 00:26:45
Que crear en persona punto java 00:26:47
¿Sí? 00:26:49
Y esto lo vamos 00:26:51
haciendo desde el principio, si os acordáis 00:26:53
la primera vez que hicimos 00:26:56
la clase hello world 00:26:57
y os dije, la clase hello world la tenéis 00:26:58
que guardar en hello world.java 00:27:01
se tiene que llamar igual, con la misma mayúscula 00:27:03
sin minúscula 00:27:05
y luego la compilábamos 00:27:07
o lo que sea, pero cuando una clase 00:27:09
es pública 00:27:11
si no es pública 00:27:12
esto no vale, lo veremos más adelante 00:27:15
cuando una clase es pública 00:27:17
tiene que estar en un fichero que se llama 00:27:19
como la clase .java 00:27:21
La palabra reservada class es para definir una clase 00:27:23
Public class ejercicio 1 00:27:27
Pues nosotros estábamos creando una clase ahí 00:27:33
Luego no la usábamos como clase 00:27:35
Porque nosotros no sabíamos que es un objeto 00:27:37
Y no estábamos programando orientada a objetos 00:27:39
Pero la idea es esa 00:27:41
Todos los ejercicios que hemos hecho nosotros 00:27:43
Hemos creado clases 00:27:45
Usadas impropiamente, pero hemos creado clases 00:27:47
Definimos los atributos 00:27:50
Los datos relevantes y los métodos 00:27:52
O sea, el comportamiento de cada clase 00:27:55
¿Habéis visto algo de OML? 00:27:57
Universal Modeling Language 00:28:00
Todavía no, lo veréis 00:28:01
Existe un lenguaje general 00:28:03
Universal para definir cosas 00:28:07
Dentro del mundo de la informática 00:28:12
Que crea una serie de diagramas 00:28:15
De diagramas de funcionalidad 00:28:18
Diagramas de clases 00:28:20
diagrama de casos de usos, diagrama de no sé qué, que sostancialmente es una forma de modelizar y documentar antes de implementar las cosas, 00:28:21
los datos de este objeto, si lo llamo sobre este objeto, me utilizará esto. 00:28:32
Cuando un método depende del objeto, no tiene el static. 00:34:28
Cuando depende de un objeto, cuando el resultado utiliza elementos, atributos que son propios del objeto, el método no es estático. 00:34:33
Si el método no depende del objeto, sino depende de la clase, es decir, que cualquier objeto de esa clase haría lo mismo, 00:34:50
no depende de si es Paco o si es Sara 00:35:02
porque siempre haría lo mismo 00:35:06
pues entonces puede ser estático 00:35:08
cuando es estático 00:35:11
no se llama sobre un objeto 00:35:17
sino se llama sobre una clase 00:35:20
y por ahora esto es complejo 00:35:22
lo retomaremos más adelante 00:35:24
por ahora simplemente sepáis que hay dos formas 00:35:26
de utilizar static y no static 00:35:29
y que antes todos los métodos que hacíamos nosotros 00:35:31
le poníamos el static porque no sabíamos que era 00:35:35
ahora 00:35:37
cuando estamos trabajando con objetos 00:35:38
ese static se pierde 00:35:40
para 00:35:42
estos 00:35:44
estos métodos de aquí 00:35:45
los métodos que definen 00:35:48
el comportamiento del objeto 00:35:50
pero por ejemplo el main 00:35:52
el main es un 00:35:54
punto de acceso donde empieza mi trabajo 00:35:57
¿vale? entonces eso tiene que 00:35:59
ser static, no puede depender de un 00:36:01
objeto. Porque tú 00:36:03
cuando empiezas el programa, los objetos ni siquiera 00:36:05
los tienes. Entonces, ¿sobre 00:36:07
qué objeto lo usas si no tienes objetos? 00:36:08
¿Sí? 00:36:13
Por ahora, nosotros centrámonos en 00:36:14
los objetos. Haremos los métodos así. 00:36:16
El único que tendrá static 00:36:19
a partir de ahora, grosso modo, será 00:36:20
el main. 00:36:22
Luego, con el pasar del tiempo, 00:36:25
cuando tendremos más claro que es una clase 00:36:26
que es un objeto, ya 00:36:28
retomaremos este concepto de static 00:36:30
no static y volveremos a explicarlo con la idea de ahora ya sé que es un objeto una clase y vamos a 00:36:32
ver cuál es la diferencia por ahora sepáis simplemente que cuando no tiene static es algo que se refiere 00:36:38
a un objeto no puedo llamar un método que no es static si no tengo un objeto por algún lado ahora veremos 00:36:45
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Autor/es:
Stefano Chiesa
Subido por:
Stefano C.
Licencia:
Reconocimiento - No comercial
Visualizaciones:
25
Fecha:
29 de noviembre de 2024 - 11:48
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
36′ 52″
Relación de aspecto:
16:10 El estándar usado por los portátiles de 15,4" y algunos otros, es ancho como el 16:9.
Resolución:
1152x720 píxeles
Tamaño:
85.37 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid