An Interest In:
Web News this Week
- March 29, 2024
- March 28, 2024
- March 27, 2024
- March 26, 2024
- March 25, 2024
- March 24, 2024
- March 23, 2024
Nesneye Ynelik (Object-Orientated) Dil zellikleri
Modller
Java ve C#'dan farkl olarak Dart, tek bir dosya iinde birden ok nesneyi bildirmenize izin verir.
Constructor'lar
Default Constructor
Constructor belirtmezseniz, sizin iin bamsz deikenler (arguments) olmadan bir default constructor oluturulacaktr.
Constructor belirtirseniz, default constructor sizin iin oluturulmaz.
Constructor Syntax Ksayolu
Bir constructor da bir rnek deikenin (instance variable) deerini ayarlamak istiyorsanz, bunu constructor imzasnda ayarlamak iin 'this.[rnek deiken ad]' biimlendirmesini kullanabilirsiniz.
rnek kod:
class Name{ String firstName; String lastName; Name(this.firstName, this.lastName);}main(){ Name name = new Name('mark','smith'); //Unnecessary new keyword print(name.firstName); print(name.lastName);}
kt:
marksmith
New Keyword
Dart'ta constructor'lar arrken 'new' anahtar kelimesini kullanmanza gerek yoktur.
rnek kod:
void main() { Car car = Car("BMW","M3"); print(car.getBadge()); Car car2 = Car("BMW","M3"); print(car2.getBadge());}class Car{ final String _make; final String _model; Car(this._make, this._model); String getBadge(){ return _make + " - " + _model; }}
kt:
BMW - M3BMW - M3
Named Constructors
Dart named constructorlara izin verir. Ayn snf farkl ekillerde balatmak istiyorsanz named constructorlar kullanabilirsiniz.
rnek Kod:
class ProcessingResult{ bool? _error; String? _errorMessage; ProcessingResult.success(){ _error = false; _errorMessage = ''; } ProcessingResult.failure(this._errorMessage){ //shortcut _error = true; } @override String toString(){ return 'Error: ' + _error.toString() + ' Message: ' + (_errorMessage ?? ""); }}void main() { print(ProcessingResult.success().toString()); print(ProcessingResult.failure('it broke').toString());}
kt:
Error: false Message:Error: true Message: it broke
Required Constructor Parametereleri
Parametre isminin nne 'required' anahtar kelimesi getirilerek yaplr.
Constructor Parametereleri
Constructorlar farkl parametreleri kabul edebilir:
Factory Constructors
Her zaman snfnn yeni bir rneini (instance) oluturmayan bir constructor uygularken factory anahtar szcn kullanabilirsiniz.
Factory anahtar szc, constructor'n sonunda bir deiken dndrmenize olanak tanr.
Bu, constructor'n bir deikenden veya nbellekten (cache) bir rnek(instance) dndrmesini istediinizde kullanldr.
rnek kod:
class Printer{ static final Printer _singleton = Printer._construct(); factory Printer(){ return _singleton; } Printer._construct(){ print('private constructor'); } printSomething(String text){ print(text); }}void main() { Printer().printSomething("this"); Printer().printSomething("and"); Printer().printSomething("that");}
kt:
private constructorthisandthat
rnek deikenler (Instance Variables)
Belirtilmemi Grnrlk (Unspecified Visibility)
Deikenlerin grnrln belirtmezseniz bunlar public hale gelir. (herkese ak)
class Name {String? firstName;String? lastName;}
Belirtilen Grnrlk (Specified Visibility)
Java'dan farkl olarak Dart, field veya zelliklerin (property) grnrln belirtmek iin public, protected ve private anahtar szcklerine sahip deildir. Bir tanmlayc (identifier) alt izgi ile balyorsa private'dr.(zel)
Dier:
class ContactInfo { private String name; private String phone;}
Dart:
class ContactInfo { String? _name; String? _phone;}
Constructor ve Method Parametreleri
Flutter, constructor ve method parametreleri asndan ok esnektir.
Birka farkl tr vardr:
Positional Required (Konumsal Gerekli)
Positional Optional (Konumsal Opsiyonel)
Named (Adlandrlm)
1.) Positional Required
class Car{ final String? _make; final String? _model; Car(this._make,this._model);}
2.) Positional Optional
Keli parantez '[]' kullanarak parametreleri istee bal yapabilirsiniz. Bu parametrelere bir deer atanmazsa, parametrenin deeri null olur.
void main() { Car car1 = Car("Nissan","350Z"); Car car2 = Car("Nissan");}class Car{ final String? _make; final String? _model; Car(this._make,[this._model]){ print('$_make $_model'); }}
kt:
Nissan 350ZNissan null
3.) Named
Tm adlandrlm (named) parametreler istee baldr.
Ssl parantezleri '{}' kullanarak parametreleri adlandrabilirsiniz.
Adlandrlm bir parametreye deer gnderilmezse, parametrenin deeri null olur.
rnek kod:
void main() { Car car1 = Car("Nissan", model:"350Z", color: "yellow"); Car car2 = Car("Nissan", color:"red"); Car car3 = Car("Nissan");}class Car{ String? make; String? model; String? color; Car(this.make,{this.model,this.color}){ print('$make${getOptional(model)}${getOptional(color ?? "")}');}String getOptional(String? str) { return str != null ?" " + str : ""; }}
kt:
Nissan 350Z yellowNissan redNissan
Resource: Learn Google Flutter Fast- Mark Clow
Original Link: https://dev.to/gulsenkeskin/nesneye-yonelik-object-orientated-dil-ozellikleri-2lkd
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To