💻 La notación en cascada (…) nos permite realizar una secuencia de operaciones sobre el mismo objeto. Esto a menudo nos ahorra el paso de crear una variable temporal y nos permite escribir un código más fluido.
Bienvenida e Introducción
Introducción y Bienvenida
Dart vs. Go vs. JavaScript vs. Kotlin
DartPad y qué editores utlizar
Básicos 1: Variables y Operadores
Variables: Números (int,double), String y booleanos
Colecciones
Diccionarios
Constantes (final y const)
Operadores aritméticos, de asignacion y lógicos
Básicos 2: Funciones y Parámetros
Declaración de funciones y la función Main()
Funciones de sintaxis corta (Arrow) y Anónimas (Lambda)
Parámetros requeridos, opcionales, posicionados, nombrados y por defecto
Básicos 3: Flujos de Control
If-Else y Expresiones Condicionales
Switch y Case
For
While y do-while
Break y Continue
Clases
Definición de clases y miembros
Constructores por defecto, por parámetro o nombrados
Métodos Getter y Setter y variables privadas
Herencia
Clases Abstractas
Interfaces implícitas
Utilizar Flutter en Dart
Iniciar y estructurar un proyecto en Flutter
Contenedores
Creando un botón personalizado con el Widget Container
Modelos de datos y peticiones http
Trabajando datos http y Widget Future Builder
Ejecutando el mismo código en Android y iOS
Conclusiones
Dart en el futuro
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Una clase es el plano de un objeto, es la descripción del objeto, pero no el objeto, más bien es una plantilla para crear objetos.
Todo puede ser descrito como un objeto, con ciertas variables de instancia y métodos, por ejemplo casas, carros, personas, animales, etc.
Se le llama miembros de una clase a todas las variables de instancia y métodos que se existen dentro de ella y podemos acceder a ellos llamándolos desde un objeto.
Aportes 31
Preguntas 5
💻 La notación en cascada (…) nos permite realizar una secuencia de operaciones sobre el mismo objeto. Esto a menudo nos ahorra el paso de crear una variable temporal y nos permite escribir un código más fluido.
RESUMEN DE LA CLASE
Clases: Son la base de la programación orientada a objetos. Es una plantilla para crear un objeto. La misma posee atributos y métodos.
Sintaxis
class Empleado{
var id;
var nombre;
bool cumpleHorario(){
return true;
}
void trabajar(){
print("Trabajó");
}
}
Instanciación
void main(){
//Notación 1
Empleado emp1 = new Empleado();
emp1.id = 1;
emp1.nombre = "Carlos";
//Notación 2
Empleado emp2 = Empleado()
..id = 2
..nombre = "Pedro";
}
Nota: A partir de la versión 2.1 de Dart la palabra reservada new ya no es necesaria para instanciar una clase.
Este es un ejemplo un poco más claro sobre la definición de Clases y sus miembros que lo componen los atributos o propiedades y los métodos:
class Empleado {
// Declaración de los atributos o propiedades
String nombre;
int edad;
bool laborando;
// Fin declaración de los atributos o propiedades
// Definición de los Miembros o Métodos
void registrarEntrada() {
if (this.laborando == null) {
this.laborando = true;
}
}
void registrarSalida() {
if (this.laborando == true) {
this.laborando = false;
}
}
String informacion() {
String estado = 'No ha iniciado su jornada laboral';
if (laborando == true) {
estado = 'Inició su jornada laboral';
} else if (laborando == false) {
estado = 'Terminó su jornada laboral';
}
return '''
Nombre: ${this.nombre}
Edad : ${this.edad}
Estado: $estado
''';
}
}
Veamos algunas formas de instanciar la clase Empleado:
void main() {
// Instanciando la clase Empleado
Empleado emp = new Empleado();
emp.nombre = 'Frank';
emp.edad = 30;
print(emp.informacion());
// Instanciando sin usar la palabra reservada new opcional desde la version 2 de Dart
Empleado emp2 = Empleado();
emp2.nombre = 'Lebron';
emp2.edad = 34;
emp2.registrarEntrada();
print(emp2.informacion());
// Instanciando utilizando la notación en cascada
Empleado emp3 = Empleado()
..nombre = 'Jordan'
..edad = 56
..registrarEntrada();
emp3.registrarSalida();
print(emp3.informacion());
}
La salida en la consola:
Nombre: Frank
Edad : 30
Estado: No ha iniciado su jornada laboral
Nombre: Lebron
Edad : 34
Estado: Inició su jornada laboral
Nombre: Jordan
Edad : 56
Estado: Terminó su jornada laboral
Qué increíble la asignación cascada!!
¿Esta nueva sección no debería llamarse “Programación Orientada a Objetos”?
El uso de notaciones ternarias y de cascada facilitan mucho la escritura de código, en especial para éste tipo de sintaxis.
Muy útil la declaración de objetos con notación de tipo cascada
NombreClase objeto = NombreClase()
..atr1 = x1
..atr2 = x2
.
.
.
..atrn = xn;
Siempre es bueno recordar la definición de clases, objetos e instancias. La mente te falla y olvidas
Buenas, consulta: no es necesario definir como this.nombre dentro del print? cuando seria necesario y cuando no? en el contructor si veo que se utiliza el this, pero no entiendo porque luego no, solo con interpolar la var $nombre funciona ok, y cuando coloco this.nombre me arroja este mensaje: Instance of ‘Empleado’.nombre
Pero que facil es escribir codigo con dart, creo que si vienes de aprender java o POO este curso sera pan comido, Te lo recomiedo.
void main(List<String> arguments) {
var emp = Persona();
emp.nombre = 'Raquel';
emp.sexo = 'Mujer';
emp.edad = 30;
emp.decirQuienEs();
}
class Persona {
var nombre;
var edad;
var sexo;
void decirQuienEs() {
var genero = (sexo.toLowerCase() == 'mujer') ? 'una' : 'un';
print('Mi nombre es $nombre, tengo $edad años de edad y soy $genero $sexo');
}
}
void main() {
Empleado emp = new Empleado();
emp.id=1;
emp.nombre="juanjo";
if(emp.cumpleHorario()){
emp.trabajar();
}
Empleado emp2 = Empleado()
..id = 1
..nombre = "Carlos";
if(emp2.cumpleHorario()){
emp2.trabajar();
}
}
class Empleado{
var id;
var nombre;
bool cumpleHorario(){
return true;
}
void trabajar(){
print('el empleado con el nombre: $nombre realizó su trabajo...');
}
}
no funciono la linea:
emp.cumplioHorario() ? emp.trabajar(): print(‘no trabajo’);
en el ejercicio
Definición de clases
Código para clases
Asignación sin la palabra new y asignación en cascada
Orientado a objetos
Me parecio interesante la asignación en cascada.
genial
Expondré aquí una breve explicación del código que se inició con la Definición de clases y miembros:
Definición de una clase empleados
class Empleado {
var id;
var nombre;
bool cumplioHorario()
{
return true;
}
void trabajar()
{
print ('El empleado realizó su trabajo....');
}
}```
**Creación de un objeto para acceder a la clase**
Empleado emp = new Empleado();
**Uso de los métodos de la clase**
if (emp.cumplioHorario())
{
emp.trabajar();
}
Como dato inicial la palabra **new** desde Dart en su versión 2 ya no es necesaria y se define así:
Empleado emp2= Empleado()
**También se puede realizar la definición en cascada, en la cual se puede acceder a sus propiedades de la siguiente manera**
Empleado emp2= Empleado()
…id=2
…nombre=“Pedro”;
Además podemos optimizar nuestro código haciendo en una línea la siguiente definición
emp.cumplioHorario() ? emp.trabajar(). print (‘No se presento a trabajar hoy’);
Adicionalmente comparto este link en donde podrán observar mas detalles y ampliar el conocimiento sobre esta clase y las siguientes referente a Clases, constructores y herencias.
// Declarando clases y miembros de la clase.
main(List<String> arguments) {
Empleado emp = new Empleado ();
emp.id = 1;
emp.nombre = ‘Roberto’;
if (emp.cumplioHorario)) {
emp.trabajar;
}
Empleado emp2 = Empleado();
…id = 2
…nombre = ‘Pedro’;
if (emp2.cumplioHorario)) {
emp2.trabajar;
}
}
Class Empleado {
var id;
var nombre;
}
bool cumplioHorario() {
return true;
}
void trabajar (){
print(‘El empleado con el nombre $nombre realizo su trabajo…’);
}
También para hacer el código mas optimo, esto va escrito en el main y las lienas de codigo del if que estan en el main deben ser comentadas.
emp.cumplioHorario() ? emp.trabajar() : print(‘No se presento a trabajar hoy’);
Código comentado de la clase:
// Clase sobre clases y miembros
main(List<String> args) {
// * Así se declara un objeto.
Empleado emp = new Empleado();
emp.id = 1;
emp.nombre = "Argel";
if(emp.cumplioHorario()){
emp.trabajar();
}
// * También se puede declarar así, el uso de la palabra reservada "new" es opcional.
Empleado emp2 = Empleado()
..id = 2
..nombre = "Pedro"; // ! También existe la notación tipo cascada, para inicializar el objeto con valores para sus miembros.
emp2.cumplioHorario() ? emp2.trabajar() : print('No se presento a trabajar hoy.');
}
// ? Qué es una clase?
// * Una clase es el plano de un objeto, se puede crear una clase de
// * cualquier cosa, por ejemplo: Casas, Carros, Personas, Animales, etc.
class Empleado{
// ? Miembros de una clase
// * Se le llama miembros de una clase a todas las variables de instancia
// * y métodos que existen dentro de ella y podemos acceder a ellos llamándolos
// * desde un objeto.
var id;
var nombre;
bool cumplioHorario(){
return true;
}
void trabajar(){
print("$nombre realizó su trabajo...");
}
}
Si lo coloco con funciones arrow hay diferencia?
class Empleado{
var id;
var nombre;
bool cumplioHorario()=>true;
void trabajar()=>print('El empleado con el nombre $nombre realizo su trabajo...');
}```
//Una clase es el plano de un objeto se puede crear cualquier cosa, abstraer cosas de la realidad
//Miembros de una clase todas las variables de instancia y metodos que existen dentro de ella podemos acceder a ellos
main(List<String> args) {
Empleado empleado = new Empleado();
empleado.id = 1;
empleado.nombre = 'Roberto';
if (empleado.cumplioHorario()) {
empleado.trabajar();
}
/*Empleado empleado2 = Empleado();
..id = 2;
..nombre = 'Pedro';
if (empleado.cumplioHorario()) {
empleado.trabajar();
}*/
empleado.cumplioHorario() ? empleado.trabajar() : print('No se presento a trabajar el dia de hoy...');
}
class Empleado {
var id;
var nombre;
bool cumplioHorario(){
return true;
}
void trabajar(){
print('El empleado $nombre realizo su trabajo');
}
}
Se puede decir que una class es igual a un struct en C?
main(List<String> args) {
empleados emp = new empleados();
emp.id=1;
emp.nombre='Roberto';
if (emp.CumplioHorario()) {
emp.trabajar();
}
empleados emp2 = new empleados();
emp2.id=2;
emp2.nombre='Pedro';
if (emp2.CumplioHorario()) {
emp2.trabajar();
}
}
class empleados{
var id;
var nombre;
bool CumplioHorario(){
return true;
}
void trabajar(){
print('El empleado con el nombre $nombre realiza su trabajo');
}
}
main(List<String> args) {
Empleado emp = new Empleado();
emp.id = 2;
emp.nombre = "Mijo";
if (emp.cumplioHorario()) {
emp.trabajar();
}
Empleado emp2 = Empleado()
..id = 1
..nombre = "Pablo";
if (true) {
emp.trabajar();
}
}
class Empleado {
var id;
var nombre;
bool cumplioHorario() {
return true;
}
void trabajar() {
print("el empleado $nombre, realizo su trabajo.....");
}
}```
Se oye fatal…
Apuntes en el código:
Clase Empleado
/**
* Así se declara una clase en DART
*
*/
class Empleado{
int id;
String nombre;
bool cumpleHorario(){
return true;
}
void mensajeHorario(){
print('El empleado $nombre ha cumplido su horario');
}
}
Instanciación en Main
import 'Class_Empleado.dart';
main(List<String> arguments){
/**
* Llamando una clase
* Detalles Importantes
* NO ES NECESARIO ASIGNAR LA PALABRA NEW, New Empleado();
* SE AGREGAN LOS VALORES MEDIANTE CASCADA, UTILIZANDO LOS DOS PUNTOS ..
* Y SE CIERRA CON PUNTO Y COMA ; HASTA QUE SE TERMINE DE ASIGNAR LOS
* VALORES A LAS VARIABLES DE LA CLASE.
*/
Empleado emp = Empleado()
..id = 2545
..nombre = 'Luis';
if(emp.cumpleHorario()){
emp.mensajeHorario();
}
/**
* AHORA USANDO UN OPERADOR TERNARIO
*/
Empleado emp2 = Empleado();
emp2.id = 2020;
emp2.nombre ='Fiorella';
// NOTAR QUE EL MÉTODO cumpleHorario(), devuelve un valor booleano
//EL SÍMBOLO !, CONVIERTE EL VALOR BOOLEAN EN EL OPUESTO
// EN ESTE CASO, EL MÉTODO TIENE POR DEFECTO return True
//POR ESTA RAZÓN, EL OPERADOR TERNARIO ASIGNA LA OPCIÓN FALSE,
//EL CUAL ES EL PRINT ASIGNADO A FALSE.
!emp2.cumpleHorario() ? emp2.mensajeHorario(): print('El empleado ${emp2.nombre} incumplió con el horario');
}
Las clases crean objetos es por esto que en Dart todo son clases y todo son objetos
La notación … sirva para aplicar otro método o buscar otro atributo sin tener que volver a referenciar
Si quieres saber mas de este tema aqui te dejo (este link)[ https://medium.com/@flutterman/dart-2-operadores-bd0b01008856#:~:text=Notación en cascada (..)&text=permiten realizar una secuencia de,escribir un código más fluido]
Realizó*
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?