Java Básico

Java Básico 12: Objetos

14 videos

80 minutos

En este vídeo vamos a ver un tema muy importante, que son los, objetos, en cualquier lenguaje, orientado a objetos este es el capítulo principal, hasta ahora hemos visto como almacenar información, en variables, también hemos visto los Arrays y las matrices, que pueden ser de diferentes dimensiones. Sin embargo, hay veces en las que, es necesario simular, de la realidad objetos que tienen muchas propiedades, donde es necesario guardar muchos datos de un solo objeto, y

poder hacer cosas con ellos, eso es lo que vamos a ver en este vídeo, cómo transformar en códigos objetos de la vida real. Que no solamente tengan propiedades, no con los que se puedan hacer acciones, imagina por ejemplo: una ventana, una ventana puede tener una anchura, una altura, puede tener información de si está abierta, o cerrada, pero aparte pueden hacerse cosas con la ventana, puede abrirse, puede cerrarse, limpiarse, puede romperse, pues todo eso en código, tiene

que poder transformarse de algún modo, y eso son los objetos. Así que te muestro como podríamos hacer esto, mira. Aquí, en la parte del Netbeans, hemos tenido cerrado esta, sección de acá te la muestro, el árbol donde se encuentra todas las estructura de archivos, que conforman nuestro proyecto. Bueno, pues, en este paquete, que es donde nosotros estamos programando hasta ahora, aquí ves que ya estamos en el paquete, en este paquete, le damos clic con el botón derecho, y le

decimos: “New Java Class” una nueva clase, en este caso hasta ahora, hemos estado haciendo el ejemplo de un tren, entonces el nombre de la clase vamos a decir que sea: tren, ¡ok! Le damos, Finish, y aquí se nos va a crear un nuevo archivo dentro, aquí lo ven, “el tren.java” que se me ha abierto aquí a un lado, este tren.java, vemos que aquí pone, pubic class. Pues aquí dentro vamos a crear las características de los trenes, ¡ok! Entonces cómo hago yo para acá poder

enlazarlo con este punto java, este archivo, enlazarlo aquí para que yo aquí pueda crearme trenes, bueno vamos a importarlos, vamos a poner un import, pongo el nombre del paquete, cursobásicojotajotavm., y al darle el punto, a ver no sé si lo escribí bien o mal… y al darle el punto, aquí me salen los archivos, estos archivos, estos archivos, que están dentro del paquete, entonces, yo, a este archivo en el que estoy trabajando le quiero importar el tren.java, pues selecciono

el tren y ya se me quedó importado, ¡ok! Ahora yo ya lo puedo utilizar, bueno yo aquí me dice que no lo he utilizado hasta ahora, y que estoy importando una cosa que no he utilizado, pero este mensaje se va quitar, cuando ya empiece a codear, entonces ¿qué hago con todo este código que tengo por aquí? Bueno todo esto lo voy a borrar, porque solo era para las explicaciones que teníamos hasta ahora, esto si lo voy a dejar, porque me interesa ahora para una cosa, ahora no

piensen lo que estoy haciendo… ya lo verán.... esto… me lo llevo, ¡ok! Me lo llevo y lo pongo aquí, bien y de verdad hasta ahora no se preocupen por esto, esto de hecho lo voy a cortar, ¿qué hacemos con esto? Bueno, pues, para que ustedes vean aquí, en esta clase, clase tren, lo primero que tenemos que hacer, es decir qué características va a tener la clase, así que ya me he creado la matriz, donde vamos a trabajar igualmente, con el número de asientos y el números de

pasajeros, aquí tenemos la matriz, y por otro lado yo le puedo dar más datos, por ejemplo: ¿qué características más tiene un tren? ... un tren tiene un maquinista, ¿verdad? Vamos a sacarnos una, String, donde yo guardé el nombre del maquinista, bien y así podríamos ir añadiendo, todas las características del tren, por ejemplo metros de longitud, años de antigüedad, vamos a poner aquí por ejemplo ese dato, vamos a poner aquí el, int, vamos a poner aquí la

“antigüedad” que tenga el tren, ok, allí lo pongo, ¿qué significa esto? Que todo eso cualquier tren, que yo me cree va a tener va a tener esas características, cualquier vez que yo aquí, quiera crear un tren nuevo, todos los trenes van a tener esa matriz, va a tener una cadena con el nombre del maquinista y va a tener un dato con la antigüedad del tren, lo van a tener todos pero esto para crearse, cuando yo creo un tren lo primero que se invoca es al constructor y ¿qué es el

constructor? Pues todos los objetos tienen una función constructora que lo que hace, es darle valores, a esos datos, estos datos no tienen valor, aquí no decimos como se llama el maquinista, ni cuántos años tiene, simplemente está el dato creado pero no tiene valor, cuando se crea un tren esto no puede estar vacío, tiene que tener un valor, pues eso lo hacen los constructores, y yo aquí pongo, public, tren el nombre de la clase, aquí diré cuáles van a ser los datos

que van a tener estas variables, cuando yo creo el tren, por ejemplo aquí, lo primero que voy a hacer, aquí es decirle cuantos asientos va a tener, ok, entonces lo que voy a hacer aquí, es decirle déjame que ponga esto, decirle que nada más al arrancar el tren es que el número de asientos sea para el primer vagón, 10, el segundo 20, el segundo vagón 30, como hemos hecho a lo largo del curso, y que está vacío el tren, cuando se crea tiene asientos pero está vacío, es decir que

le doy número de asientos, pero, pasajeros le digo que todos los vagones están vacíos, pasajeros cero, ok, otra cosa que le iba a dar cuando se crea el tren, si yo no le di datos, así que de entrada el maquinista, el maquinista, vamos a decir que es “Anónimo” y el número de antigüedad de cuantos años tiene el tren, puesto que no sabemos nada, le vamos a dar cero, ok, bueno ¿Qué significa esto? Que yo ahora si me creo aquí un tren, voy a crearme un tren, ¿cómo me creo

un tren? Cuando me quería crear un numero entero que decía, el tipo, int, y el nombre de cómo iba a llamarle, pues aquí el tipo va a ser tren, el nombre voy a darle, primero, me he creado un tren bien, ahora yo aquí, puedo mostrar por pantalla los valores de ese tren, por ejemplo aquí voy a poner: Sytem.out.println, y voy a mostrar aquí que me muestre, primero punto, y luego ven los datos de primero, o ejemplo que me muestre el maquinista, yo esto lo guardo, y ahora cuando

aquí compilo, va a cargar la clase java, va a invocar al constructor, porque yo aquí estoy creándome una variable, y después de todo, perdón aquí ¡tengo un error!….. ¡Espérense!….. Aquí voy a poner, “new tren” ese era el fallo, primero, es un nuevo tren, ok, y ¿qué me dice? que el maquinista se llama anónimo, porque lo he creado así de una sin datos, he llamado al constructor, y el constructor, “public tren” le he dado estos datos si yo aquí le digo, cuánta

antigüedad tiene el tren, me va a decir que tiene cero, ¿lo ven? ¡Perfecto! cero, pero yo sí puedo hacer para que el tren, cuando lo creo los datos los pueda halla y personalizar, ¿cómo hago yo eso? Bueno pues aquí en tren me creo otro constructor pero aquí le voy a decir, que va a recibir datos, por ejemplo: va a recibir un nombre para el maquinista, o por ejemplo también va a recibir también, una cantidad de años, voy a poner así, años, que va hacer la antigüedad,

entonces ¿qué hago yo con esto? Al maquinista le voy a decir, que le dé, el nombre del maquinista va hacer el mismo dato que yo le he pasado, y los años de la antigüedad va a ser el mismo dato que aquí yo le di, de modo que yo aquí ahora me puedo crear otro tren, voy a poner aquí, y tren, segundo, = new tren, y aquí le voy a pasar datos por ejemplo voy a decirle, que el maquinista se llama Juan Palomo, y que el número de años, es 25, de modo que ahora aquí, si intento

mostrar por pantalla, la antigüedad del segundo ya no va a ser cero sino 25, lo ven, y si yo aquí le digo, que me muestre el maquinista me va a decir que se llama, Juan Palomo, lo ven Juan Palomo. Entonces yo puedo crear objetos, con características iniciales estándar que son estas, poniendo una aquí dentro de la clase, poniendo, public, y el mismo nombre de la clase que es el constructor, le cree unos datos estándar, pero también puedo hacer que los datos, de entrada,

cuando yo creo la variable de entrada, el objeto tenga ya datos inicializados, con valores reales que yo quiera pasarles aun así, esto lo puedo cambiar, por ejemplo yo aquí puedo decir, que el primero, primero.maquinista, le voy a cambiar eses dato, es decir que ese maquinista se llama, Luis García, bueno yo ahora ya se lo cambie, de modo que yo ahora aquí, si muestro por pantalla, el nombre del primer maquinista del primer tren, van a ver que ya se lo cambie porque puedo

acceder, a esos datos, ok, entonces todas estas cosas es que podemos hacer con las propiedades de los objetos, es decir con sus valores de sus variables que tienen asignadas, pero aparte, de tener propiedades, a estos objetos les podemos dar, métodos, es decir que podemos hacer funciones que realicen cosas con estas propiedades, por ejemplo vamos a crearnos aquí, una función que lo que va a hacer aquí es, llenar un vagón, así como por ejemplo queremos meter mucha gente en

un vagón vamos a crear una función que lo llene, vamos a poner, “public”, nombre de la función que sea, “CompletarVagon”, y vamos a tener que escribir aquí, qué escribir, cuál vagón es el que queremos completar, un numerito que nos diga, el vagón número 5 u 8, el 14, ¡ok! Esta función o las funciones estas que creamos aquí, pueden retornarnos valor, si tú por ejemplo quieres consultar, es decir cuántos pasajeros hay, dime cuantos pasajeros hay en tal vagón y la función te

devuelve el número de pasajeros. Pero como en este caso no nos devuelve nada, vamos a ponerle aquí un void, porque no devuelve nada, esta función simplemente completa el vagón, ¿qué es lo que hace? Bueno, pues, aquí lo que vamos a hacer es lo siguiente, vamos a decir que el vagón, en el número que le hayamos pasado, aquí si le hemos pasado, el cero o el cuatro, el vagón en esa posición en la que estamos almacenando, el número de pasajeros aquí, vamos a decir que el

valor sea: el mismo de los asientos, ¿dónde están guardados los asientos? Pues en la posición cero, de esa matriz ¿ok? Y aquí ya, puesto que ya hemos puesto el número de pasajeros sea igual al de los asientos, ya lo hemos completado pues podemos mostrar un mensaje por pantalla, aquí que diga: System.out.println, que diga: “el vagón”, y aquí ponemos el número de vagón que hemos pasado, vagón, pero recuerden que, siempre los, Arrays, y las matrices, contabilizan un número

menos, así que ponemos así, +1, “ha sido completado” bien, vamos a ver si funciona esto, ahora aquí, esto lo guardamos vamos a hacer lo siguiente, vamos a consultar, cuántos pasajeros hay en el vagón número 1, vamos a poner aquí, vagones, en el vagón número dos, el tercer vagón, que tiene 30 pasajeros, ¿cuántos pasajeros hay? Me tiene que decir: cero. Voy a borrar todo esto... System.out.println, esto los borro, me tiene que decir que hay cero. ¡Ok! Ahora antes de

esto, voy a decir que lo tiene, voy a llamar primero a invocar la función, CompletarVagon, y le doy pasar al vagón número 2, que es el tercer vagón, ¡ok! Ahora le doy y me dice: 30 ¿ven? Aquí pone: el vagón tres ha sido completado. Porque aquí me lo iguala y aquí me dice treinta, ya cuando consulto efectivamente ha sido completado, igualmente aquí podría crear una función que se llamara: meter pasajero, vamos a ver ahora, aquí, voy a crearme una, MeterPasajero, y me tiene

que decir, en qué vagón tiene que meterlo y cuantos pasajeros quiere meter, entonces aquí lo que haría, es lo siguiente, vamos a decir aquí, que el número de pasajeros aquí, tiene que ser igual a lo que haya más los pasajeros que yo le he dicho, es decir al número de pasajeros le he aumentado la cantidad que me ha dicho, en el vagón que me ha pedido, pero antes de hacer esto, sería bueno comprobar si hay o no capacidad, porque quizás un vagón ya esté lleno, y le he dicho

que quiero meter un pasajero pero ya está lleno, entonces ¿cómo hago yo eso? Bueno voy a preguntar aquí, voy a decir aquí sí, el número de pasajeros que hay hasta ahora, más los que yo le quiero meter, si esto supera la capacidad, por ejemplo, imagínense este vagón que tiene 30 y hay 25 y quiero meter 6, ya supera a 31, entonces digo: si esto es mayor a la capacidad entonces lo que voy a hacer aquí es, mostrar un mensaje que diga, “el vagón ya está…, no hay tanta

capacidad”, “no hay tantos asientos libres en tal vagón”, “no hay tantos asientos libres en el vagón y el número del vagón “ ¡aquí esta! ¡Hasta aquí!... no hay tantos asientos libres en ese vagón, y en caso contrario en que si halla asientos libres, bueno, pues, ahí ya sí en, else, pongo esto y le digo que efectivamente que le aumente los pasajeros y voy a poner aquí un mensajito que diga: “la reserva se ha completado” ¡vamos a probar si esto funciona! Me vengo

aquí, y una vez más que he llenado el vagón 30, ¡fíjense! Que el vagón tres ya está llenado, voy a decirle que quiero meter un pasajero allí, en el vagón 3, “MeterPasajero” en el vagón, en ese vagón vamos a meter dos pasajeros, me tiene que dar un mensaje de error, me tiene que decir que no es posible, ¿ven? Me dice que no hay tanto asientos libres en el vagón tres, pero ahora si yo lo quiero meter en el vagón número 1, ¡allí sí! La reserva se ha completado. Vamos a

consultar ahora cuántos asientos hay en ese vagón que yo le he dicho que me meta, en el vagón número 1, que es el vagón número dos, de la matriz número 1, me dice: que hay dos, que son los que yo les he metido, y si yo ahora le meto 5 más, ahora hay 5, ¿ven? ¡Esto ya está funcionando! Si ustedes aquí ven, aquí estamos metiendo, el número de vagones, todo correcto, ya hemos visto entonces, como podemos manejar los datos de una clase aquí, en los constructores que por

defectos se crean con unas características estándar, o le podemos personalizar de entrada los valores, que en concreto queramos y también hemos visto cómo trabajar con los métodos que podemos hacer para completar, podemos hacer funciones, que allí trabajemos o no, con los datos de los objetos que estamos creando. Bien, pues, aquí ya tenemos, entonces, nuestro objeto, y como ya sabes esto se puede invocar tantas veces ustedes quieran, si yo meto aquí 5 y después vuelvo a

meter, 3 podría llamarlo las veces que yo quiera, me dirá que hay 8 pero recuerden que cada vez que se lanza, se reinicia y por lo tanto cada vez que se lanza, se crean constructores nuevos, por eso antes cuando yo mostraba metía dos, me decía que habían dos, y cuando lanzaba cinco, me decía que había cinco, no suman más 7 porque eran diferentes lanzamientos, y cada vez que se lanza el objeto se resetea, pero aquí si lo hacen de una vez, ven que sí se acumula, pues una vez visto

los objetos, hagan pruebas, hagan ejemplos. Vamos a ver ahora la, herencia, ¡ok! Pasamos al siguiente video.

Si quieres enterarte de los nuevos cursos, suscríbete. No habrá spam, prometido :)

Sobre el autor

foto de jotajotavm
José Javier Villena

jotajota pa los amigos y jota pa los de más cnfianza.

Bio Seria: Analista-Programador en diferentes lenguajes. Tutor PREMIUM de reconocidas plataformas de nivel mundial como CodigoFacilito. Redactor de artículos para Cristalab. Mi canal de YouTube está patrocinado por la editorial ANAYA y LaTostadora. Me gusta explicar con detalle y poner varios ejemplos para que no queden dudas.

Bio Molona: Me presento :) soy informatico, ni frostis d hardware pero muy muxo de programacion, friki a medias o del to segun el dia. Me gusta programar, muxo. Manejo varios lenguajes y tdo lo ke sepa lo comparto x amor al arte. Este no es mi trabjo pero lo ago mejor y con +ganas y calidad que si lo fuera, x eso mismo, xq para mi es divertido. Solo spero al menos algo de agradecimientO!! ;)

Dios, qe gusto haber escrito este parrafo cm me a dao la gana sin pensar en ortografia ni tildes ni historias!!!!!