No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Dart

Curso de Dart

Argel Franco Bejarano de la Cruz

Argel Franco Bejarano de la Cruz

Definición de clases y miembros

17/29
Recursos

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

💻 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ó*