[[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); }