Comenzamos una nueva sección con clases y objetos en Java, pero bien vamos a partir un poco de la base
sobre programación orientada a objetos y sobre todo lo que son los objetos, la esencia de la programación.
Pero bueno, va mucho más allá de la programación, porque en realidad los objetos como tales los conocemos
desde siempre, es decir, desde mucho antes de que existiera la programación.
Ya están los objetos.
Bueno, por supuesto, de la vida real.
Por ejemplo, desde niño, cuando comenzamos a hablar, empezamos a mencionar todo tipo de objeto,
interactuamos.
Las primeras palabras siempre son de objetos un avión, un auto.
Papá, mamá, agua, el cielo.
En fin, siempre estamos relacionándonos con objetos.
En la vida real, y justamente el paradigma de la programación orientada a objetos es eso, es tomar
estos objetos de la vida real y llevarlo a un mundo virtual, a la programación.
Tratar de simplificar toda esta complejidad del mundo real.
Por ejemplo, documentos en papel, facturas, objetos físicos como el automóvil, como un avión, el
agua, un vaso, lo que sea cualquier objeto lo podemos palpar y llevar a una aplicación a un programa.
La programación orientada objetos está mucho más cercano a la realidad de lo que realmente se piensa.
Y qué son los objetos?
Entidades que combinan Estado y comportamiento.
El Estado son los atributos o características que tienen en cierto momento, en cierta unidad, tiempo
y comportamiento son las funciones.
Funciona al día.
Los métodos, por lo tanto, todo objeto tiene características y comportamiento.
La característica describen al objeto y comportamiento, es cómo se relacionan, cómo interactúan unos
con otro.
Pero cómo podemos crear un objeto?
De dónde sacamos un objeto bueno desde una clase?
Una clase es un molde, es un prototipo para crear nuestros objetos, nuestras entidades.
Entonces, antes de pensar en objetos tenemos que tener algún diseño, una clase prototipo, para poder
crear múltiples objetos, múltiples instancias del mismo tipo, pero cada una tiene sus características
propias.
Quizás sean similares o muy distintas, pero siempre de un mismo tipo.
Otro tema importante que los objetos siempre son identificables, son únicos en el sistema.
Es decir, podríamos tener dos objetos que tienen exactamente la misma información, mismos atributos
características por ejemplo, mismo color, mismo tamaño, mismo peso sea exactamente igual.
Pero como entidad son distintas.
Son muy parecidas.
Pueden ser, pero son únicos en el sistema, como por ejemplo crear un auto a partir de una clase,
una plantilla genérica que tiene ciertos atributos, pero estos atributos va a depender de cada objeto.
Cada objeto puede tener valores distinto para estos atributos.
Su comportamiento, su funciones o métodos que también se le conoce como métodos, van a interactuar
de forma diferentes unos con otros, se van a comportar distinto.
No todos son iguales.
Si queremos crear autos, instancia de una clase, automóvil, bueno, todas tienen un color, una característica,
una potencia, una cilindrada, velocidad, un modelo, marca de automóvil, en fin, un motor.
Todo tienen cuatro ruedas.
Entonces, a partir de ese prototipo podemos crear y generar nuestros propios objetos distintos color
distinto, tamaño neumático distinto, tipo de motor, de potencia, de modelo, de marca, en fin.
Entonces, a partir de este molde le damos vida a nuestra aplicación, a nuestro sistema instancia.
Ando creando instancias de la clase que son los objetos.
La programación orientada objetos es un paradigma, va mucho más allá del lenguaje en sí.
Como ya va, ya va.
Eso orienta objetos.
Pero también hay otro lenguaje como Python, como C++, C Echarpe, también PHP.
Bueno, cada uno tiene su implementación, quizá un poco distinta unas con otras, pero siempre hay
un estándar, siempre hay una base.
La clase está conformada por dos partes principales.
Una es el encabezado, que también se le conoce como declaración de la clase, que como mínimo tiene
que tener la palabra clave clase 12 clase y el nombre la clase.
Por ejemplo, automóvil iniciando con mayúscula.
Pero si el nombre compuesto, es decir, está formado por más de una palabra, se separa con una mayúscula.
Por ejemplo, automóvil deportivo.
Las letras de deportivo comienzan con mayúscula automóvil también la con mayúscula y siempre una clase
tiene que estar dentro de un archivo que tiene tensión Java y debe llevar el mismo nombre que la clase,
comenzando con mayúscula.
Bueno, son cosas que vamos a ver durante el curso, así que no se preocupen.
Entonces lo principal, la palabra clave class es lo mínimo y el nombre de la clase.
Luego la llave y el cuerpo.
Por ejemplo, después vamos a saber más detalles, pero el modificador públic es opcional.
Después vamos a ver qué pasa si coloco públic y si no se puede ver, tiene públic y quería con un modificador
di fold o por defecto.
Después lo vamos a ver más en detalle y dentro del cuerpo.
Tiene atributos que son las características, el estado y los métodos, el comportamiento, los atributos.
Cuando hablamos de objeto es el Estado y el valor de estos atributos pueden cambiar.
Puede ir variando en el tiempo.
Por ejemplo, un automóvil es kilometraje.
Va cambiando el color, quizá también pueda ir cambiando los neumáticos, va cambiando.
En fin, son características que van a ir modificándose en el tiempo.
En el caso de una persona, un objeto, persona y también en la vida real, esto también se aplica tanto
a la vida real como en el software.
Una persona bueno, un nombre, un apellido, muy probablemente el nombre apellido nunca cambia, pero
sí podría cambiar, por ejemplo, la altura de la persona, la edad, la edad cambia todos los años,
va cambiando el color de pelo si es flaco y gordo.
Todo eso va cambiando.
Son características.
También tiene comportamientos método, correr, saltar, realizar algún tipo de trabajo, en fin.
Y después vamos a ver que la clase en la declaración, en el encabezado arriba, después del nombre
de la clase, podemos utilizar o implementar la herencia con la palabra extent heredar de otra clase
y también distinto tipo de modificadores.
Por ejemplo, el públic, el default si se omite el lastre, el final o final.
En fin, lo vamos a ver más adelante, así que no se preocupen.
Y también podemos representar en un diagrama de clase o m.l. en un lenguaje de modelado, nuestra clases
con el nombre, con los atributos, el tipo de los atributos, con los métodos.
Por lo general se recomienda siempre hacer un diseño antes de escribir nuestro código.
Un diseño de clase y cómo se relacionan unas con otras también.
Otro tema importante de la programación orientada objeto cuando se arrollaba una aplicación no es que
esté formada por un solo objeto, sino son muchos objetos que forman este sistema y estos objetos interactúan
unos con otros.
Se envían mensajes, unos son atributos de otro, es decir, un objeto está compuesto por otros objetos,
son atributos, son parte.
Ejemplo un automóvil podría tener un atributo que es otro objeto el estanque de gasolina o bencina,
el motor y a su vez cada uno.
Este objeto tiene su complejidad, su propia característica y su propio comportamiento, y eso también
es una característica de la programación.
Orienta objetos.
La modularidad que tiene fin.
Y así un montón de cosas que no quiero extender mucho en esta clase de introducción.
Por último, veamos cómo crear un objeto, cómo se instancia en el lenguaje Java con el operador NIU.
Algo vimos.
Hemos visto bastante también sobre, sobre todo con los arreglos.
Recuerde que lo real también son referencias, son objetos.
La clase string también se puede crear con el new.
A pesar de que tiene su forma simplificada en la literal, entonces con el operador New lo que hace
es reservar en memoria para este objeto.
Para esta instancia, entonces reserva espacio un guarda en una dirección en la memoria que tengamos
disponible y se asigna a una variable bien, pero no es que asigne el objeto, sino que asigna una referencia
hacia el objeto.
Recuerden que el objeto está guardado en la memoria, en una dirección, en un puntero.
Entonces, en la variable se asigna la referencia hacia el objeto y esta variable por supuesto que tiene
que ser del tipo de la clase, como estamos viendo automóvil.
Entonces niu el nombre de la clase paréntesis, porque ahí se está invocando, se está llamando a un
constructor de la clase, que es un método especial, que después vamos a ver que permite crear instancias.
El objeto y también inicializar puede llevar parámetros o argumentos o no?
Por ejemplo, si queremos inicializar el objeto con datos por defecto, con algún tipo de dato con características
en los atributos, podemos pasar estos datos en el constructor.
Por ejemplo, el color, el modelo del automóvil, el entrada, el motor F como argumentos y el constructor
obtenemos estos parámetros y inicializar en atributo.
Bueno, sin extenderme tanto, quedamos hasta acá y continuamos en la siguiente clase.