Definición de clases y miembros
Clase 17 de 29 • Curso de Dart
Contenido del curso
Clase 17 de 29 • Curso de Dart
Contenido del curso
Usuario anónimo
Facundo Nicolás García Martoni
Mauricio Hernández
Usuario anónimo
Francisco Peñalo Feliz
Kevin Barreto
Félix Alejandro Zelaya Orellana
Darwin 🎊
Sebastián Pineda Duque
Fernanda Aragon
Germán Arevalo Jerez
Nicolás Danilo Peña Fuentes
Matias Ignacio Paredes Marquez
Robert Jarod Meza Garcia
Agustin Rodriguez Golpe
Usuario anónimo
Manuel Nuñez
Joseph Michael Ciriaco Bermudez
Ildefonso Muro
Ricardo Araque
Nicoll Idaly Angulo Mejia
Luis Gilberto Sánchez amador
Valeria Calcina Cisneros
Juan José del Aguila López
Fabian Anzola
Marcela Cernelli
Marcela Cernelli
Marcela Cernelli
Harley Alexander Zapata Hernandez
Germán Arevalo Jerez
💻 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.
Excelente resumen! :D
¡Adiós new! :)
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
Muchas gracias por el ejemplo
Qué increíble la asignación cascada!!
También se puede con métodos. Osea una llamada de métodos en cascada
¿Esta nueva sección no debería llamarse "Programación Orientada a Objetos"?
Hola Sebastian, por ende Clases ya tiene el paradigma de POO, pero cuando vayas a usar Flutter, por ejemplo, todo lo tendrás con Functional Programming, programación declarativa.
En flutter todo es widget.
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;
Gracias!! Estuve buscando esto por todas partes hasta que leí los comentarios jaja
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
Generalmente se utiliza this para diferenciar variables que tienen el mismo nombre.
El this es utilizado para identificar a las variables de la clase. Como buena práctica de programación es recomendable usarlo siempre que manipulemos las variables que sean de la clase, ya que eso ayuda a la lectura del código. Por ejemplo: Class Persona{ String nombre='Manuel'; void printNombre(){ print(this.nombre); }
}
Así identificas que el nombre que está imprimiendo va a ser el de la clase.
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'); } }
¿Por qué se conocen los valores de la instancia de una clase a traves del . en vez de [] ?,¿La instancia no es un objeto Map?
Cómo se puedo acceder a los parámetro de cada objeto desde el main?
usando getter y setter?
!emp2.cumplehorario() ? emp2.trabajo() : print("No trabajo el $emp2.nombre ");
La signacion en cascada ya no está disponible??
Hola Luis! la asignación en cascada aun funciona en Dart
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.