Diferencia entre revisiones de «Flutter DART Clases»
Ir a la navegación
Ir a la búsqueda
| Línea 7: | Línea 7: | ||
| + | * En Dart no es necesario realizar el new cuando instanciamos una clase. | ||
| + | : Esto se emplea mucho en Flutter ya que todo en él se base en crear widgets (Clases) y por tanto aparecería de forma continua new´s por todos lados. | ||
| + | : Sin embargo, si vamos a emplear clases creadas por nosotros, se recomienda hacer uso de new para diferenciarlo de la llamada a una función. | ||
| + | |||
| + | : Veamos un ejemplo, con conceptos de otros lenguajes de programación orientado a objetos como el empleo del método toString: | ||
| + | |||
| + | :<syntaxhighlight lang="java" enclose="div" highlight="1-11" > | ||
| + | class Vehiculo{ | ||
| + | |||
| + | int? anoCompra; // Necesitamos indicar que admite valores nulos, ya que al instanciar no le damos un valor por defecto | ||
| + | String? matricula; | ||
| + | String? marca; | ||
| + | |||
| + | @override | ||
| + | String toString() => 'El vehículo de la marca $marca con matrícula $matricula se compró en el año $anoCompra'; | ||
| + | } | ||
| + | void main() { | ||
| + | |||
| + | final veh1 = new Vehiculo(); | ||
| + | veh1.marca='Opel'; | ||
| + | veh1.matricula='1234GHZ'; | ||
| + | veh1.anoCompra = 2018; | ||
| + | |||
| + | print(veh1); | ||
| + | |||
| + | final veh2 = Vehiculo(); // No necesitamos new, pero se recomienda si son clases nuestras | ||
| + | veh2.marca='Peugot'; | ||
| + | veh2.matricula='6543HZZ'; | ||
| + | veh2.anoCompra = 2020; | ||
| + | |||
| + | print(veh2); | ||
| + | |||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | |||
| + | <br /> | ||
| + | ==Constructores== | ||
| + | |||
| + | * Funcionan igual que en el lenguaje Java. | ||
| + | : Veamos un ejemplo de uso: | ||
| + | |||
| + | |||
| + | :<syntaxhighlight lang="java" enclose="div" highlight="7-11" > | ||
| + | class Vehiculo{ | ||
| + | |||
| + | int? anoCompra; // Necesitamos indicar que admite valores nulos, ya que al instanciar no le damos un valor por defecto | ||
| + | String? matricula; | ||
| + | String? marca; | ||
| + | |||
| + | Vehiculo(int anoCompra, String matricula, String marca){ | ||
| + | this.anoCompra = anoCompra; | ||
| + | this.marca = marca; | ||
| + | this.matricula = matricula; | ||
| + | } | ||
| + | |||
| + | @override | ||
| + | String toString() => 'El vehículo de la marca $marca con matrícula $matricula se compró en el año $anoCompra'; | ||
| + | } | ||
| + | void main() { | ||
| + | |||
| + | final veh1 = new Vehiculo(2018,'Opel','1234GHZ'); | ||
| + | print(veh1); | ||
| + | |||
| + | final veh2 = Vehiculo(2020,'Peugot','6543HZZ'); | ||
| + | print(veh2); | ||
| + | |||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | : Fijarse que un constructor no es más que un método y por tanto podemos emplear todo lo aprendido con los parámetros (opciones, posicionales,...) | ||
| + | :'''Ejercicio propuesto:''' Modifica el ejercicio anterior y haz con los parámetros puedan ser enviados en cualquier orden especificando el nombre del parámetro en la llamada. Haz que todos ellos sean obligatorios. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | * En el ejemplo anterior vimos que al definir las propiedades de la clase, éstas deberían admitir valores nulos, ya que cuando instanciamos no les damos unos valores iniciales. | ||
Revisión del 18:45 5 jul 2021
Introducción
- Como comenté anteriormente este curso está pensado para alumnos que ya tienen conocimientos previos en algún lenguaje de programación orientado a objetos.
- En esta sección se va a explicar las diferencias y características con respecto a otros lenguajes orientados a objetos en lo que se refiere al uso de clases y objetos,
- Podéis consultar como se implementan en Java en Fundamentos de POO en Java y en la ampliación de la POO.
- En Dart no es necesario realizar el new cuando instanciamos una clase.
- Esto se emplea mucho en Flutter ya que todo en él se base en crear widgets (Clases) y por tanto aparecería de forma continua new´s por todos lados.
- Sin embargo, si vamos a emplear clases creadas por nosotros, se recomienda hacer uso de new para diferenciarlo de la llamada a una función.
- Veamos un ejemplo, con conceptos de otros lenguajes de programación orientado a objetos como el empleo del método toString:
class Vehiculo{ int? anoCompra; // Necesitamos indicar que admite valores nulos, ya que al instanciar no le damos un valor por defecto String? matricula; String? marca; @override String toString() => 'El vehículo de la marca $marca con matrícula $matricula se compró en el año $anoCompra'; } void main() { final veh1 = new Vehiculo(); veh1.marca='Opel'; veh1.matricula='1234GHZ'; veh1.anoCompra = 2018; print(veh1); final veh2 = Vehiculo(); // No necesitamos new, pero se recomienda si son clases nuestras veh2.marca='Peugot'; veh2.matricula='6543HZZ'; veh2.anoCompra = 2020; print(veh2); }
Constructores
- Funcionan igual que en el lenguaje Java.
- Veamos un ejemplo de uso:
class Vehiculo{ int? anoCompra; // Necesitamos indicar que admite valores nulos, ya que al instanciar no le damos un valor por defecto String? matricula; String? marca; Vehiculo(int anoCompra, String matricula, String marca){ this.anoCompra = anoCompra; this.marca = marca; this.matricula = matricula; } @override String toString() => 'El vehículo de la marca $marca con matrícula $matricula se compró en el año $anoCompra'; } void main() { final veh1 = new Vehiculo(2018,'Opel','1234GHZ'); print(veh1); final veh2 = Vehiculo(2020,'Peugot','6543HZZ'); print(veh2); }
- Fijarse que un constructor no es más que un método y por tanto podemos emplear todo lo aprendido con los parámetros (opciones, posicionales,...)
- Ejercicio propuesto: Modifica el ejercicio anterior y haz con los parámetros puedan ser enviados en cualquier orden especificando el nombre del parámetro en la llamada. Haz que todos ellos sean obligatorios.
- En el ejemplo anterior vimos que al definir las propiedades de la clase, éstas deberían admitir valores nulos, ya que cuando instanciamos no les damos unos valores iniciales.
Enlace a la página principal de la UD2
Enlace a la página principal del curso
-- Ángel D. Fernández González -- (2021).