Software Engineer

Sorularla Nesne Tabanlı Programlama (OOP) – 2

·

,

Bir önceki yazıda sorularla nesne tabanlı programlama için birkaç soru ve cevaplarını paylaşmıştım, buraya tıklayarak okuyabilirsiniz. O yazıda soru-cevapları bir yazı serisi olarak paylaşmayı düşündüğümü söylemiştim ve bu da yazı serimizin ikincisi. Sorularıma devam ediyorum.

Instance nedir?

Instance, bir sınıftan referans alarak yeni bir nesne oluşturmaktır. Diğer bir deyimle, bir nesnenin ait olduğu sınıfın örneğidir.

Field ve Property nedir?

Field, class (sınıf) yapısını oluşturan bileşenlerden birisidir. Programlamada bir sınıfın bazı özelliklerine ihtiyaç duyduğunda, o özellikleri kullanabilmek için o sınıfın bir temsilcisini oluştururuz. Bu temsilciyi daha etkili kullanabilmek adına ona bazı özellikler ekleriz. Bu özelliklere property adı verilir. Property yapısının amaçlarından birisi de temsilciye verdiğimiz özellikleri field adı verilen yapılarda tutmaktır.

Metod nedir?

Yazılım geliştiricinin belirttiği değerleri alıp işleyen ve bazen başka bir işlemde kullanabilmek için geriye değer veren, diğer bir deyişle sınıfların iş yapan eli kolu ayarında yapılardır.

Constructor (yapıcı metod) nedir?

Yapıcıların (constructor) görevi, oluşturulan nesneyi ilk kullanıma hazırlamasıdır. C#‘da tüm sınıflar (class) tanımlansın ya da tanımlanmasın değer tiplerine sıfır, referans tiplerine de “null” değerini atayan varsayılan bir yapılandırıcı vardır.

Temel özellikleri:

  • Kendi sınıfı ile aynı isme sahiptir.
  • Başka sınıflar tarafından kullanılabilmesi için public olmalıdır.
  • Geri dönüş değeri (return) yoktur.

Garbage Collector nedir?

Uygulama “new” operatörünü çalıştırdığı zaman “heap” belleğe gider ve yeterli bir yer olup olmadığına bakar. Yeterli yer varsa nesnenin “constructor” metodu çalıştırılır ve adres döndürülür. İşte bu anda “Garbage Collector” devreye girer ve uygulamanın ihtiyaç duymadığı tüm objeler heap bellekten temizlenir.

UML nedir?

UML (Unified Modelling Language), nesne tabanlı sistemlerin modellemesinde kullanılan bir modelleme dilidir. Sınıflar ve nesneler için çeşitli notasyonlar sunar. Bu notasyonlar grafik notasyonlardır.

UML sınıf şeması üç bölümlü bir dikdörtgenden oluşur:

  • en üst bölüm sınıfın adını,
  • ortadaki bölüm özellikleri,
  • en son bölüm de yöntemleri (metodları) gösterir.

Polymorphism (çok biçimlilik) nedir?

Bir sınıf başka bir sınıftan türetildiğinde tüm özelliklerini miras alır. Türemiş sınıf içinde türetilen sınıftan gelen bazı özellikleri değiştirmek isteyebiliriz. Sınıfın miras aldığı özelliklerin değiştirilebilmesine ve nesne üzerinden çağırılabilmesine çok biçimlilik (polymorphism) denir.

Overriding (Ezme) nedir?

Kalıtım alınan (miras alınan) sınıf içerisinde bulunan bir metodu override yaparak tekrardan yazabiliriz (ekleme yapmak vb.). Bu işleme de overriding (ezme) denir.

Örnek kullanım için bir sitedeki çıkış işlemini düşünebiliriz. Sitede üye ve admin olarak iki tip olduğunu varsayalım. İkisi de çıkış yaptığı zaman aynı işlevi gerçekleştirmiş olur, fakat admin çıkış yaptığında güvenlik açısından çerezleri de silmek gerekir. Böyle bir durumda admin sınıfını üye sınıfından kalıtım alırız ve override yaparak çıkış işlemi dışında bir de çerezleri silmek için bir metod ekleriz.

class Uye
{
      public virtual void Cikis()
      {
            //çıkış için gerekli kodlar buraya yazılır
            Console.WriteLine("Çıkış yapıldı");
      }
}

class Admin : Uye
{
      public override void Cikis()
      {
            base.Cikis(); //Uye sınıfındaki Cikis metodu çalışır
            //Çerez silinme için gerekli kodlar buraya yazılır
            Console.WriteLine("Çerezler silindi.");
      }
}

Bu yazı için bu kadar soru yeterli sanırım. Biraz az oldu gibi ama devamında ORM gibi terimler olduğu için onları ayrıca bir yazıda almak istiyorum. Şimdiye kadarki terimler üzerine kendiniz de araştırıp ufak tefek bir iki örnek yaparsanız kafanızda oturacaktır.

Görüşmek üzere.

** Bir sonraki yazı için tıklayın: Sorularla Nesne Tabanlı Programlama (OOP) – 3

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir