Clases en Dart

Clases en Dart
Photo by Sergey Zolkin / Unsplash

¡Bienvenidos a otro emocionante capítulo en nuestro viaje de aprendizaje de Dart y Flutter! En esta ocasión, exploraremos uno de los conceptos fundamentales en Dart: las clases. Las clases son la base de la programación orientada a objetos (POO) y te permiten modelar y organizar tu código de manera efectiva. En este artículo, vamos a sumergirnos en el mundo de las clases, los constructores, las propiedades y los métodos en Dart de una manera fácil de entender, ¡así que prepárate para una experiencia de aprendizaje emocionante!

¿Qué es una Clase en Dart?

Una clase es como un plano o una plantilla que define la estructura y el comportamiento de un objeto. Piensa en una clase como un conjunto de instrucciones que describen cómo debe funcionar un objeto específico. Por ejemplo, si quisiéramos modelar un gato en nuestro programa, crearíamos una clase llamada Gato que definiría todas las características y comportamientos que esperaríamos de un gato en el mundo real.

Declarando una Clase

En Dart, puedes declarar una clase utilizando la palabra clave class, seguida del nombre de la clase. Aquí hay un ejemplo sencillo:

class Gato { 
	// Propiedades 
	String nombre; 
	int edad; 

	// Constructor 
	Gato(this.nombre, this.edad); 

	// Método 
	void maullar() { 
		print('$nombre está maullando.'); 
	} 
}

En este ejemplo, hemos creado una clase llamada Gato con dos propiedades (nombre y edad), un constructor y un método llamado maullar.

Constructores en Dart

Un constructor es un método especial que se utiliza para crear instancias de una clase. En el ejemplo anterior, hemos definido un constructor que acepta dos parámetros (nombre y edad) y los utiliza para inicializar las propiedades del gato. Puedes crear una instancia de la clase Gato de la siguiente manera:

void main() { 
	// Crear una instancia de la clase Gato 
    var miGato = Gato('Whiskers', 3); 
    
    // Acceder a las propiedades 
    print('Mi gato s llama ${miGato.nombre} y tiene ${miGato.edad} años.'); 
    
    // Llamar al método 
    miGato.maullar();
}

Propiedades en Dart

Las propiedades son variables que pertenecen a una clase y almacenan información sobre los objetos de esa clase. En el ejemplo anterior, nombre y edad son propiedades de la clase Gato. Puedes acceder a estas propiedades utilizando la notación de punto, como se muestra en el código de ejemplo.

Métodos en Dart

Los métodos son funciones que están asociadas a una clase y definen el comportamiento de los objetos de esa clase. En el ejemplo, maullar es un método de la clase Gato. Llamar a este método hace que el gato emita un maullido. Puedes invocar métodos en una instancia de la clase utilizando la notación de punto, como se muestra en el ejemplo.

Conclusión

En resumen, las clases son fundamentales en Dart y Flutter, ya que te permiten modelar tus objetos y organizar tu código de manera más eficiente. Hemos aprendido qué son las clases, cómo declararlas, qué son los constructores, las propiedades y los métodos. Con esta base, estás un paso más cerca de crear aplicaciones increíbles con Dart y Flutter.

Esperamos que este artículo te haya ayudado a comprender mejor estos conceptos clave. ¡Ahora es tu turno! Experimenta con clases, crea tus propias clases y métodos, y descubre cómo puedes utilizarlos para construir aplicaciones impresionantes en Dart y Flutter. Abajo te dejamos un par de códigos que puedes probar en DartPad ¡Diviértete programando!

void main() async {
  
  final iphone15 = Cellphone(battery: 24, brand: 'Apple');  
  print(iphone15);
  await Future.delayed(const Duration(seconds: 5));
  print('Mi teléfono tiene ${iphone15.battery} % de bateria.');
 
}

class Cellphone {
  
  // Propiedades o características 
  String brand; // String = cadena de carácteres o texto
  int battery; // int = números enteros
  bool? isOn; // bool = verdadero o falso
  
  // Constructor   
  Cellphone({ 
    required this.battery, 
    required this.brand, 
    this.isOn
  });
  
  // Métodos  
  bool turnOn() {
    print('Se encendió');
    return true;
  }
  
}

class Instrumento {
  String marca;
  int precio;

  Instrumento({
    required this.precio, 
    required this.marca
  });
    
  @override
  String toString() {
    return 'Mi instrumento es de marca $marca y su valor es $precio';
  }
}

void main() {
  final Instrumento miGuitarra = Instrumento(marca: "Ibanez",precio: 52000);
  final Instrumento miOcarina = Instrumento(precio: 2000,marca: "Chancho");
  final Instrumento miBateria = Instrumento(marca: "Yamaha",precio: 12000);
  miBateria.precio;
  final List misInstrumentos = [miGuitarra, miOcarina, miBateria];
    
  print(miGuitarra.toString());
  print(miOcarina.toString());
  print(miBateria.toString());
  print(misInstrumentos);
}