[[oktatas:web:dart|< Dart]]
====== Dart - Objektum Orientált programozás ======
* **Szerző:** Sallai András
* Copyright (c) 2023, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Osztály =====
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 =====
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 ====
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:
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 json) {
String name = json['name'];
return Employee(name);
}
}
Két paraméterrel:
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 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:
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:
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);
}