Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
clase:daw:prog:2eval:poo_clases [2022/07/07 09:35] cesguiro [Propiedades de las clases] |
— (actual) | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== 08 - Programación Orientada a Objetos ====== | ||
| - | |||
| - | La **Programación Orientada a Objetos** (**POO**) es un paradigma de la programación donde se organiza el código en unidades denominadas **clases** que contienen **propiedades** (o **atributos**) y **métodos**. | ||
| - | |||
| - | En realidad, al ser Java un lenguaje totalmente orientado a objetos, ya hemos utilizado este paradigma desde el principio. Fíjate en la primera línea del código de nuestra primera aplicación: | ||
| - | |||
| - | <sxh java; highlight: | ||
| - | public class holaMundo { | ||
| - | |||
| - | public static void main(String[] args) { | ||
| - | System.out.println(" | ||
| - | } | ||
| - | } | ||
| - | |||
| - | </ | ||
| - | |||
| - | Lo primero que hacemos es definir una clase llamada // | ||
| - | |||
| - | Piensa, por ejemplo, en una televisión. Podemos interactuar con ella a través de ciertos métodos definidos (encender o apagar la TV, subir o bajar el volumen, cambiar de canal...), pero no podemos ver como funcionan esos procesos internamente (los circuitos electrónicos que permiten ejecutar esos procesos están ocultos). La POO funciona de forma parecida. Escondemos los detalles de implementación de nuestras clases y creamos métodos para que las clases puedan interactuar entre ellas. | ||
| - | |||
| - | Cuando hablamos de POO, existen una serie de características que se deben cumplir. Las características más importantes de la POO son: | ||
| - | |||
| - | * **Abstracción**: | ||
| - | * **Modularidad**: | ||
| - | * **Encapsulación**: | ||
| - | * **Jerarquía**: | ||
| - | * **Polimorfismo**: | ||
| - | |||
| - | ===== Clases y objetos ===== | ||
| - | |||
| - | Como hemos visto, las clases son las definiciones generales de los objetos de nuestra aplicación. Por ejemplo, podemos definir una clase TV que contendrá los métodos (encender, apagar, subir volumen...) y atributos (canal, volumen...) que van a contener todos los objetos creados a partir de ella, pero no se refiere a ninguna TV en concreto. Cuando instanciamos una clase (creamos una instancia de ella), creamos un **objeto**. En nuestro caso, una TV en concreto. Por ejemplo, podemos crear un objeto //TV Samsung QLed 4k QN85A// derivado de la clase TV. | ||
| - | |||
| - | Los objetos tienen unas características fundamentales que los distinguen: | ||
| - | |||
| - | * **Identidad**: | ||
| - | * **Estado**: El estado de un objeto viene determinado por una serie de parámetros o atributos que lo describen, y los valores de éstos. Por ejemplo, si tenemos un objeto Coche , el estado estaría definido por atributos como Marca, Modelo, Color, Cilindrada, etc. | ||
| - | * **Comportamiento**. Son las acciones que se pueden realizar sobre el objeto. En otras palabras, son los métodos o procedimientos que realiza el objeto. Siguiendo con el ejemplo del objeto Coche, el el comportamiento serían acciones como: // | ||
| - | |||
| - | En otras palabras, una clase es una plantilla o prototipo donde se especifican: | ||
| - | |||
| - | * Los atributos comunes a todos los objetos de la clase. | ||
| - | * Los métodos que pueden utilizarse para manejar esos objetos. | ||
| - | |||
| - | Si existe una clase, podemos crear objetos en nuestro programa a partir de esas clases. | ||
| - | |||
| - | Cuando creamos un objeto a partir de una clase se dice que hemos creado una //instancia de la clase//. A efectos prácticos, //objeto// e //instancia de clase// son términos similares. Es decir, nos referimos a objetos como instancias cuando queremos hacer hincapié que son de una clase particular. | ||
| - | |||
| - | Los objetos se crean a partir de las clases, y representan casos individuales de éstas. | ||
| - | |||
| - | Por ejemplo, cuando vimos los tipos de datos en Java, hablamos del tipo //String//, que no es un tipo de dato primitivo. En realidad, [[https:// | ||
| - | |||
| - | <sxh java> | ||
| - | public class ClaseString { | ||
| - | | ||
| - | public static void main(String[] args) { | ||
| - | String mensaje; | ||
| - | | ||
| - | mensaje = "Hola mundo"; | ||
| - | System.out.println(mensaje.length()); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | En el ejemplo anterior, creamos un objeto llamado //mensaje// que pertenece a la clase //String//. Una vez creado, podemos utilizar los métodos definidos en la clase //String//, como // | ||
| - | |||
| - | <note important> | ||
| - | <sxh java> | ||
| - | String mensaje = new String; | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | ===== Propiedades de las clases ===== | ||
| - | |||
| - | Las clases tienen propiedades que serán comunes a todos los objetos (su definición, | ||
| - | |||
| - | ¿Recuerdas las variables globales? Eran variables que estaban accesibles desde cualquier punto del código. En realidad, lo que definíamos eran, precisamente, | ||
| - | |||
| - | |||
| - | |||
| - | ===== Métodos de las clases ===== | ||
| - | |||