Comunidad de diseño web y desarrollo en internet

Clases y métodos en Dart

Esta es la tercer entrega de tutoriales de Dart. Revisa los primeros tutoriales de Primeros pasos en Dart, y Tipos de datos en Dart.

Clases en Dart


Comencemos primero con las clases. En el primer tutorial les decía que Dart es un lenguaje basado en clases. Todo en Dart es un objeto, todo es una instancia de una clase, y todas las clases derivan de Object. Las clases pueden ser extendidas para definir clases más especializadas. En Dart, sólo podemos extender nuestra clase de sólo una clase más.

Ejemplo de herencia:


En este ejemplo tenemos una clase Vehículo que implícitamente se extiende de Object; Motocicleta y Carro heredan de la clase Vehículo; Deportivo y Sedan heredan de la clase Carro. En este ejemplo podemos ver cómo una clase más específica hereda de una clase más general.

En Dart, las clases se crean de la siguiente forma:

Código :

class NombreClase {
    // Variables
    // Métodos
}


Y si deseamos heredar de otra clase podemos utilizar la palabra reservada extends:

Código :

class Deportivo extends Carro {
    // Variables
    // Métodos
}


Si alguna vez has programado en Java, puedes notar que es idéntico. Así que no tendrás muchos problemas con la sintaxis al comenzar a programar en Dart.

Métodos en Dart


Dart soporta la creación de métodos con parámetros opcionales, métodos anidados y permite pasar métodos como argumentos a otros métodos, y mucho más.

Vamos a ver un ejemplo de como crear un método sencillo:

Código :

whatDoesTheFoxSay() {
    return "Wa-pa-pa-pa-pa-pa-pow!";
}


Podemos ver que nuestro método no tiene nada en sus paréntesis, lo que significa que no recibe ningún parámetro. Usamos la declaración return para retornar un valor, 42. Si no hubiéramos escrito la declaración return entonces el método hubiera retornado null.

Dart nos permite hacer ese método aún más simple, podríamos hacerlo en una sola línea haciendo lo siguiente:

Código :

whatDoesTheFoxSay() => "Wa-pa-pa-pa-pa-pa-pow";


La flecha es una forma más breve de retornar el valor resultante que esté a la derecha de la flecha.

Argumentos opcionales


Ya hemos visto cómo podemos crear un método simple que no reciba parámetros y dos formas de retornar un valor. Pero también podemos crear métodos que reciban parámetros e incluso podemos hacer que estos parámetros sean opcionales. Veamos un ejemplo:

Código :

void repetir(String msg, [int repeticiones]) {
    int cantVeces = (repeticiones != null) ? repeticiones : 2;
    for (int i = 0; i < cantVeces; i++) {
        print(msg);
    }
}


Como podemos ver, uno de los argumentos está entre llaves, esto significa que el argumento es opcional. Podríamos invocar nuestro método sin este argumento y funcionaría perfecto:

Código :

repetir("Dart es fenomenal!");


Si estudiamos el cuerpo de nuestro método encontraremos que utilicé un operador ternario para la variable cantVeces donde si el usuario no ingresó el argumento repeticiones entonces tomaría el valor de 2. Por lo que en este caso, nuestra frase se repetiría dos veces.

Código :

repetir("Dart es fenomenal!", 42);


En este caso, nuestra variable cantVeces tomaría el valor ingresado en nuestro argumento, en este caso, 42.

Argumentos con nombre


En Dart también podemos crear argumentos más fáciles de usar y esto es porque le agregamos un nombre y hacemos más obvio su funcionamiento. Este tipo de argumentos nos hace más fácil nuestro trabajo ya que podemos especificar un valor por defecto.

Código :

abrirConexionHTTP(String ip, {puerto: 80}) {
    // ...
}


Para utilizarlo podríamos hacer lo siguiente:

Código :

abrirConexionHTTP("127.0.0.1", port: 3000);
abrirConexionHTTP("127.0.0.1");


En los próximos tutoriales veremos como realizar nuestro primer programa con Dart. Estén atentos!

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate