20241129 Objetos 1 - 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:
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