Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:dart:objektum_orientalt_programozas

< Dart

Dart - Objektum Orientált programozás

Osztály

main.dart
class Employee {
  String? name;
  String? city;
  double? salary;
}
 
void main() {
  Employee janos = Employee();
  janos.name = 'Nagy János';
  print(janos.name);
}

A new kulcsszó használható, de nem kötelező.

Konstruktor

main.dart
class Employee {
  String? name;
  String? city;
  double? salary;
  Employee(String name, String city, double salary) {
    this.name = name;
    this.city = city;
    this.salary = salary;
  }
}
 
void main() {
  Employee janos = Employee('Perge Árpád', 'Szeged', 348);  
  print(janos.name);
}

Egyszerűsítés

main.dart
void main() {
  var janos = Employee('János');
  print(janos.name);
}
 
class Employee {
  String name;
  Employee(this.name);
}

JSON átadása a konstruktorban

A konstruktoron hívott fromJson() függvénnyel átadhatunk JSON adatot is. Ekkor az osztály ki kell egészíteni egy factory konstruktorral:

main.dart
void main() {
  var eros = new Employee.fromJson({'name':'Erős István'});
  print(eros.name);
 
}
 
class Employee {
  String name;
 
  Employee(this.name);
 
  factory Employee.fromJson(Map<String, dynamic> json) {
    String name = json['name'];
    return Employee(name);
  }  
}

Két paraméterrel:

main.dart
void main() {
  var eros = new Employee.fromJson({
    'name': 'Erős István',
    'city': 'Szeged'
    });
  print('${eros.name} ${eros.city}');
}
 
class Employee {
  String name;
  String city;
 
  Employee(this.name, this.city);
 
  factory Employee.fromJson(Map<String, dynamic> json) {
    String name = json['name'];
    String city = json['city'];
    return Employee(name, city);
  }  
}

Konstans konstruktor

Ha azonos paraméterrel hozok létre konstansként két objektumot, azok egyetlen memóriaterületen, egyetlen objektumként jelennek meg:

main.dart
void main() {
  var eros = const Employee('Erős István', 'Szeged');
  var deli = const Employee('Erős István', 'Szeged');
 
  print(identical(eros, deli));
  print(eros == deli);
 
}
 
class Employee {
  final String name;
  final String city;  
  const Employee(this.name, this.city);
}

Ha például a Szeged helyett mást írok a két objektum különböző lesz.

Ha nem konstansként hívom, különböző objektumokat kapok:

main.dart
void main() {
  var eros = Employee('Erős István', 'Szeged');
  var deli = Employee('Erős István', 'Szeged');
 
  print(identical(eros, deli));
  print(eros == deli);
 
}
 
class Employee {
  final String name;
  final String city;  
  const Employee(this.name, this.city);
}
oktatas/web/dart/objektum_orientalt_programozas.txt · Utolsó módosítás: 2023/06/24 12:56 szerkesztette: admin