16 Ocak 2014 Perşembe

Sınıflar ve Nesneler

SINIFLAR

Nesne tabanlı programlamadan önceki tek yaklaşım olan yardımsal programlamada programlar sadece bir komut dizisi veya birer işlev (fonksiyon) kümesi olarak görülmekteydi. Bu yaklaşımla çok karmaşık problemlerin üstesinden gelmek oldukça zordu.
 Nesne tabanlı programlama ile uygulama geliştirirken ilk olarak hangi varlıklar üzerinden çalışılacağını tasarlamak gerekir. Bir varlık (entity) hangi sınıfları oluşturmak gerektiği gösterir.

Sınıf (Class) Mantığı 
Nesne tabanlı programlamada gereken nesneleri sınıflar yardımıyla oluşmaktadır. Sınıfları, nesneleri oluşturmak için önceden oluşturulmuş bir kalıp veya ilk örnek (prototip) olarak da düşünülebilir.

Kapsüllemenin Amacı

Kapsülleme (encapsulation) sayesinde bir sınıfı kullanırken o sınıfın nasıl çalıştığını bilmek zorunda kalınmaz. Sınıfın bir örneğini oluşturur ve ihtiyaç duyulan metotlar  çağrılır. Metotlar yerine getirmeleri gereken işlevleri gerçekleştirdikleri sürece, metotların nasıl çalıştığı ile ilgilenmez ve böylece karışıklıktan uzak durmuş olunur.

Sınıf Tanımlama

Nesne tabanlı programlamada gereken nesneler sınıflar yardımıyla oluşturulacaktır.



Örnek:

 İlk olarak programlama dilinde “ Bisiklet” sınıfının nasıl oluşturulduğunu görülsün.
class Bisiklet
{
int hiz = 0; //Burada int tipinde bir alan tanımlanıyor
int vites = 1; //Burada int tipinde bir alan tanımlanıyor
public void VitesDegistir(int yeniDeger)
{
vites = yeniDeger;
}
public void Hizlan(int artis)
{
hiz = hiz + artis;
}
public void FrenYap(int azalma)
{
hiz = hiz - azalma;
}
public void BilgileriYaz()
{
Console.WriteLine("Vites: {0}", vites);
Console.WriteLine("Hız: {0}", hiz);
}
}

Sınıfı Kullanma

Bir sınıf tanımlandığında aslında yeni bir değişken türü tanımlamış olunur. Daha önce oluşturulan “Bisiklet” türünden aşağıdaki gibi bir değişken tanımlansın.

Bisiklet b;

Bunun daha önce tanımlanan değişkenlerden hiçbir farkı yoktur. Örneğin daha önce tamsayı (int) türünde bir değişkeni şöyle tanımlanır.

İnt sayaç;

Sınıf tanımlamalarında farklı olan durum, değişkene new (yeni) anahtar sözcüğü ile geçerli bir başlangıç verisinin atanması gerektiğidir.

Bisiklet b;
B=new Bisiklet();

Erişilebilirlik

Bir sınıf içindeki üyelere dışarıdan erişim sağlamak veya sınırlandırmak için erişim türleri belirlenmiştir. Nesne tabanlı programlama da beş tane erişim türü bulunmaktadır.

Public
Private
Protected
İnternal
Protected internal

public: Bu erişim türü ile tanımlanmış sınıf üyelerine her yerden erişim izni verilmiş olur.

private: Bu erişim türünde tanımlanmış üyelere sadece aynı sınıf içerisinde tanımlanmış diğer üyeler tarafından erişim izni verilmiş olur.

protected: Bu erişim türünde tanımlanmış üyelere tanımlandık sınıf ve bu sınıftan türetilmiş diğer sınıflardan erişim izni verilmiş olur.

İnternal: Bu erişim türünde tanımlanmış üyelere aynı assembly içinden erişim izni verilmiş olur.

protected internal: Bu erişim türü protected ve internal erişim türlerinin veya işlemiyle birleştirilmiş halidir.

Class veya struct‘lar public ya da internal olabilir, varsayılan olarak internal erişim türüne sahiptir.

Adlandırma Kuralları

Erişilebilirlik kuralları yazılan kod içerisinde daha kolay görebilmek için aşağıdaki adlandırılma kurallar yardımcı olur.

Public alan ve metot adları büyük harfle başlamalıdır.

Private tanımlayıcılar küçük harfle başlamalıdır.

Kurucular (Constructors) 

Kurucu bir sınıfın örneği oluşturulduğunda kendiliğinden çalışan bir metottur. Sınıfv ile aynı ada sahip olmak zorundadır, parametreler alabilir ama geri değer döndürmez. Tüm sınıfların bir kurucusu olmak zorundadır.


Varsayılan Kurucu 

Programlama dilinde varsayılan (default) kurucu herhangi bir parametre almayan kurucudur.

Aşırı Yüklenmiş Kurucu

Tüm metotlar gibi kurucular da aşırı yüklenebilir. Tanımlanan sınıftan örneği oluşturan bazı nesnelerin farklı durumlarda başlatılması gerektiğinde kurucular aşırı yüklenebilir.

STATİC METOTLAR

Nesne yönelimli programlamada kullanılan bir terimdir. Basitçe bir nesnenin (object= çalışabilmesi yaşayabilmesi için bu nesnenin tanımlı olduğu bir sınıfa (class) ihtiyacı vardır.

Ayrıca bu sınıftan tanımlanan nesnenin programlama dili ve işletim sistemi marifetiyle hafızada bir alana ihtiyacı vardır.

Bilindiği üzere nesnelerin tanımlı oldukkları sınıflar içerisinde özellikleri (properties) ve metotları(methods) bulunur. Yani her nesnenin tanımında bir miktar değişken (veriable) ve fonksiyon (function) bulunabilmektedir. Bu değişken ve fonksiyonlara erişmek için bu nesneye erişilmesi söz konusudur
.
Ancak bazı durumlarda sabit metotlar (static methods) tanımlanabilir. Bu metotlar bir nesne ile var olmayan, ancak sınıfın kendisinde tanımlı metotlardır. Yani bu metodun çalışması için o sınıftan bir nesne üretilmesi gerekmemektedir.

Paylaşılan Alan Oluşturma 
Sınıf içerisinde tanımlanan alanlar da static olarak oluşturulabilecek. Alanlar bilgi sakladıkları için static olarak tanımlanan alanlar o sınıftan oluşturulmuş bütün nesneler tarafından paylaşılır.


“const” ile Static Bir Alan Oluşturma 

Bir alanın hem statik olduğunu hem de değerinin hiçbir zaman değiştirilmeyeceğini const (constant:sabit) anahtar sözcüğü ile belirtilir. Const bir alan bildiriminde ayrıca static anahtar kelimesi kullanılmalıdır.

Static Sınıflar 

Programlama dilinde sınıflar da static olarak tanımlanabilir. Static sınıflar diğer sınıflardan farklı olarak sadece static alanlar ve metotlar içerebilir. Static sınıflar, uygulama içerisinde pek çok durumda işe yarayacak yararlı metot ve alanları bir arada tutmak için kullanılır.

Anonim Sınıflar
Sınıf adı kullanmadan sadece new anahtar sözcüğünün devamında küme parantezleri içerisinde alan tanımlaması yaparak oluşturulan sınıflara anonim sınıflar denir.

Hiç yorum yok:

Yorum Gönder