Jenner Acosta Diaz
Dart Website

Getters, Setters y Aserciones

Getters, Setters

En Dart, los getters y setters son métodos especiales que se utilizan para acceder y modificar los valores de las propiedades de un objeto de una clase. Los getters se utilizan para obtener el valor de una propiedad, mientras que los setters se utilizan para establecer o modificar el valor de una propiedad. Los getters y setters proporcionan un nivel de encapsulación y permiten controlar cómo se acceden y modifican las propiedades de una clase.

Aquí tienes un ejemplo que muestra cómo se definen los getters y setters en Dart:

class Persona {
  String _nombre; // Propiedad privada

  // Getter para obtener el valor de la propiedad _nombre
  String get nombre {
    return _nombre;
  }

  // Setter para establecer el valor de la propiedad _nombre
  set nombre(String valor) {
    _nombre = valor;
  }
}

void main() {
  Persona persona = Persona();

  persona.nombre = 'Juan'; // Utiliza el setter para establecer el valor de la propiedad
  print(persona.nombre); // Utiliza el getter para obtener el valor de la propiedad
}

En este ejemplo, la clase Persona tiene una propiedad privada _nombre. Luego, se definen un getter y un setter para acceder a esta propiedad.

El getter se declara con la palabra clave get seguida del nombre del getter (en este caso, «nombre»). El getter no tiene parámetros y devuelve el valor de la propiedad _nombre.

El setter se declara con la palabra clave set seguida del nombre del setter (también «nombre» en este caso). El setter tiene un parámetro que representa el nuevo valor que se quiere asignar a la propiedad _nombre. En este ejemplo, el setter simplemente asigna el valor del parámetro a la propiedad _nombre.

En la función main(), se crea un objeto persona de la clase Persona. Luego, se utiliza el setter persona.nombre para establecer el valor de la propiedad _nombre a «Juan». Finalmente, se utiliza el getter persona.nombre para obtener el valor de la propiedad _nombre y se imprime por consola.

Los getters y setters en Dart permiten controlar el acceso a las propiedades de una clase y proporcionan una forma de interactuar con ellas de manera controlada. Además, los getters y setters pueden ser útiles para realizar validaciones o realizar acciones adicionales al obtener o establecer los valores de las propiedades.

Aserciones

En Dart, las aserciones son declaraciones que se utilizan para verificar suposiciones o condiciones en tiempo de ejecución. Se utilizan para asegurarse de que ciertas condiciones se cumplan y, si no se cumplen, lanzarán una excepción para indicar un error.

Dart ofrece dos tipos principales de aserciones: las aserciones de tipo assert y las aserciones de tipo assertive.

  1. Aserciones assert:
    Las aserciones assert se utilizan para verificar suposiciones en tiempo de ejecución y se recomienda su uso durante el desarrollo y pruebas del código. Estas aserciones son eliminadas en la versión compilada del código en modo de producción para mejorar el rendimiento. Ejemplo:
   void dividir(int divisor, int dividendo) {
     assert(divisor != 0, 'El divisor no puede ser cero');
     print(dividendo ~/ divisor);
   }

   void main() {
     dividir(5, 2);
     dividir(0, 10); // Lanzará una excepción AssertionError en tiempo de ejecución
   }

En el ejemplo anterior, la función dividir utiliza una aserción assert para verificar que el divisor no sea cero. Si la condición divisor != 0 es falsa, se lanzará una excepción AssertionError con el mensaje especificado.

  1. Aserciones assertive:
    Las aserciones assertive son similares a las aserciones assert, pero se utilizan para realizar comprobaciones más específicas y personalizadas. A diferencia de las aserciones assert, estas aserciones no se eliminan en el código compilado en modo de producción, por lo que se deben usar con precaución, ya que pueden afectar el rendimiento. Ejemplo:
   void dividir(int divisor, int dividendo) {
     assertive(divisor != 0, 'El divisor no puede ser cero');
     print(dividendo ~/ divisor);
   }

   void assertive(bool condition, String message) {
     if (!condition) {
       throw AssertionError(message);
     }
   }

   void main() {
     dividir(5, 2);
     dividir(0, 10); // Lanzará una excepción AssertionError en tiempo de ejecución
   }

En este ejemplo, se ha definido una función personalizada assertive que realiza una comprobación similar a la aserción assert. Si la condición es falsa, se lanza una excepción AssertionError con el mensaje especificado.

Las aserciones son herramientas útiles para ayudar a detectar y corregir errores en tiempo de ejecución. Sin embargo, es importante recordar que las aserciones no deben utilizarse como una forma de lidiar con errores esperados o condiciones de flujo normal del programa. Se deben utilizar principalmente durante el desarrollo y pruebas para garantizar que ciertas suposiciones se cumplan correctamente.