En programación orientada a objetos, una clase es como un modelo o una plantilla que se usa para crear nuevos objetos con sus propios atributos y funciones importantes. 🎨
En la programación orientada a objetos, se utiliza una clase para generalizar completamente un objeto. Por ejemplo, si tenemos un objeto manzana, podemos generalizarlo diciendo que es una fruta 🍎 con atributos como color
, tamaño
, forma
, entre otros. En este caso, la clase de la que proviene manzana sería Fruta
(ojo que esto dependerá del tipo de aplicación en el que nos encontremos resolviendo).
Para representar estas clases solemos usar un diagrama, en especial los famosos “Diagrama de clases UML” 📐
Diagrama de Clases UML 📐
Un diagrama de clases UML es una herramienta visual para mostrar las clases, sus atributos y relaciones en un sistema de software 💻. Muestra las clases como cajas 📦, las relaciones como líneas 🔗 y los atributos como listas 📝. Ayuda a entender los componentes de una aplicación o programa y a explicar cómo funciona. 🤓
En este punto, es posible que desees empezar a escribir código. Para crear una clase, el lenguaje de programación utilizado es importante. En esta serie de clases, se utilizarán Java, C# o Python. 💻
Ejemplo con Java
Código Java: Archivo Fruta.java
:
public class Fruta {
String color="rojo";
String forma="esférico";
String tamaño="mediano";
String nombre="manzana";
}
Archivo Main.java:
public class Main {
public static void main(String[] args) {
Fruta manzana = new Fruta(); // Instanciamos un objeto Fruta
System.out.println(manzana); // Mostramos nuestro objeto creado
}
}
Al hacer correr el programa, te mostrará algo como esto:
Fruta@19821f
Ejemplo con Python
Código Python: Archivo main.py
class Fruta:
color = "rojo"
forma = "esférico"
tamaño = "mediano"
nombre = "manzana"
if __name__ == '__main__':
manzana = Fruta()
Estructura:
class Nombredelaclase(object): # Declaramos la clase nuestra que hereda de Object
def __init__(self, parámetros): # Constructor de la clase
# Declaración de atributos
Clases en Python
Hasta ahora hemos usado estructuras primitivas para definir cosas simples como el nombre de un usuario, el costo de algo o la cantidad de veces que un bucle debe ejecutarse. Pero ahora necesitamos estructuras más complejas, como por ejemplo representar un objeto hotel 🏨; para ver cuáles de sus habitaciones están ocupadas. En ese caso, podríamos utilizar dos listas:
- una para definir las habitaciones
- otra para indicar si están ocupadas o no
habitaciones_de_hotel = [101, 102, 103, 201, 202, 203]
habitaciones_ocupadas = [True, False, False, True, True, False]
Sin embargo, este tipo de organización puede volverse difícil de manejar. ¿Qué pasa si queremos agregar más propiedades, como si la habitación ya fue limpiada o no? ¿O si la habitación tiene una cama doble o sencilla? Esto puede causar una falta de organización y es precisamente por eso que existen las clases. 🏢
Las clases nos permiten crear nuevos tipos de objetos que contienen información específica. En el caso del hotel, podríamos crear dos clases llamadas Hotel
y Cuarto
para tener registro del número de cuartos, ocupación, limpieza, tipo de habitación, y más. 😎
Es importante destacar que las clases son como moldes que nos permiten construir objetos específicos. La clase define las propiedades que tendrán los hoteles que vamos a modelar, pero no representa un hotel en particular. Para eso, necesitamos crear instancias. 🔨