Sınıflar

Sınıflar

Dart nesne yönelimli bir dildir. class(Sınıflar), interface(arayüzler), vb. gibi nesne yönelimli programlama özelliklerini destekler. OOP açısından bir sınıf, nesne oluşturmak için bir şablondur. Bir sınıf, nesne için bir şablondur. Sınıflar bir evin teknik resmi gibi dir taslaktır. Sınıflar new sinifismi= sinifismi() şeklinde  nesne haline dönüştürülürler ve ram in heap alanında saklanırlar.

_sinifadi şeklinde yazıldığında sinifadi sınıfı private hale gelir.

class sınıfadi{ } şeklinde tanımlanır. Bir sınıf tanımı şunları içerebilir
Fields ,Alan,Özellik: bir sınıfta bildirilen herhangi bir değişkendir. Sınıf içerinde tanımlanan değişkenler özellik /alan olarak isimlendirilir. Bir sınıfın özellikleri, nesnelere ait verileri temsil eder.
set ve get : Bir sınıfın değişkenlerine set ile değer atanırken, get ile değeri okunur.
Constructors :sınıftaki nesnelere bellek tahsis etmekten sorumludur.
fonksiyonlar : fonksiyonlar bir nesnenin gerçekleştirebileceği eylemleri temsil eder. Sınıf içerinde tanımlanan fonksiyonlar metod olarak isimlendirilirler.

Sınıf(class)’tan Nesne(Obje) ye:

Ramde heap ve stack adında iki bölge bulunur.

Stack

Stack bölgesi yığın/istif şeklinde çalışır. Stack bölgesini içi boş bir silindir sütuna benzetirsek.
Stack bölgesine yazılan veriler, – içi boş silindirin içine attığımız bozuk paraların üst üste dizilmesi misali – üst üste dizilir.
En son gelen veri – en üstteki bozuk para- en üstte dir. Dolayısıyla stack bölgesinde en son gelen veri -yani en üstteki bozuk para- ilk çıkar.
Ayrıca stack bölgesi değer tiplidir yani içinde değişkenin değerini tutar. int degiskenBirLira = 1; stack bölgesine 1 olarak yazılır.
O halde Stack bölgesi değer tipli olduğuna göre değer tipli yani int bool gibi değişkenlerin değerini saklar.
Stack bölgesi hızlı çalışır. Küçük yer kaplayan verilerin değerlerini tutmak için idealdir.
Kısaca Stack; basittir, istiftir, değer tutar, hızlı çalışır, küçük verileri tutar ..Altta kalanın canı çıksındır :).

Heap

Heap bölgesinde ise veriler üst üste dizilmez dağınık saçılmış şekildedir. Peki program saklanan verilere nasıl ulaşır?

Heap referans tiplidir yani adres tiplidir. Adres stack’te saklanır ama adresin gösterdiği ev (nesne)heap bölgesindedir. Class lar yani sınıflar birer şablondur yani evin planı gibidir.

Ne zaman biz new evsablonu = evsablonu() şeklinde bir ifade yazarız işte o zaman bir ev işa etmek için talimat vermiş oluruz.
Bu talimatın ardından stack bölgesine evin adresi Ref35sokak sekilde değer girilir ve heap bölgesine 35.sokakta bir ev inşaa edilir.
Ev yani nesne heap bölgesinde inşa edilmiş olur. Sonuç olarak evin adresi stack bölgesinde iken, ev heap bölgesinde dir.
Evin adresi yani Nesnenin referansı stackte saklanırken, evin kendisi yani nesnenin kendisi ise heap bölgesinde saklanır.
Heap stack e göre daha yavaştır lakin önce adresi bul sonra nesneye ulaş şeklinde çalışır.
Kısaca Heap; Karmaşıktır , dağınıktır, referans, tutar, yavaş çalışır büyük verileri saklar. Fonksiyonel programlanın/nesneye dayalı programlamanın vazgeçilmez bir unsurudur.

 

Tanımlama:

class Car {  
   // field 
   String engine = "E1001";  
   
   // function 
   void disp() { 
      print(engine); 
   } 
}

Kullanım(Nesne Haline Getirme):

Car c= new Car();

Örnek:

void main() {
Car c= new Car();
c.disp();
}
class Car {
// field
String engine = "E1001";

// function
void disp() {
print(engine);
}
}

Bir cevap yazın

KAPAT
%d blogcu bunu beğendi: