C ++ Ders 5: Sınıflara ve Nesnelere Giriş

ratio

Kıdemli Üye
6 Tem 2013
2,456
6
Turk
C ++ Beşinci Ders: Sınıflara ve Nesnelere Giriş

Öncelikle çevremizde gördüğümüz her şey bir nesnedir ve her nesnenin bir sınıfı vardır. Örnek vermek gerekirse, bir araba projesi düşünün. Öncelikle bir kâğıdın üstüne arabanın projesi çizilir. Bunu bizim sınıfımız olarak düşünebiliriz.

Bu arabayı kullanabilmek için onun inşa edilmesi gerekir. Bunu da nesnemizi main fonksiyonumuzun içinde yaratılmasını örnek gösterebiliriz. İnşa edilmeyen, yaratılmayan bir sınıfın nesnesi kullanılamaz. Bir sınıftan yani aynı projeden, birçok araç, nesne üretilebilir.



Her araba da çeşitli özellikler vardır. Örneğin, gaz pedalı, fren pedalı ve direksiyon; bunların ne işe yaradığını biliriz. Ancak, nasıl çalıştıklarını arkada ne tür işlemler yaparak arabayı hızlandırıp yavaşlattığını sürücü koltuğundan görüp, bilemeyiz. Tıpkı, bu mantıkta her sınıfın yani nesnenin özellikleri fonksiyon veya metot olarak yazılır.



Arabayı kullanırken arabanın yapmasını istediğiniz bir görev için, örneğin daha hızlı gitmesi, objeye bir mesaj gönderirsiniz; bu gönderilen her mesaj “üye işlev çağrısı” olarak geçer ve nesnenin bir üye işlevine (fonksiyonuna, metoduna) görevini gerçekleştirmesini söyler. Buna genellikle “bir nesneden hizmet talep etme” denir.



Ayrıca, her arabanın çeşitli özellikleri bulunur. Örneğin, rengi, kapı sayısı, kaç litre yakıt kullandığı gibi. Bu özellikler projenin üzerinde belirtilir. Tıpkı bu şekilde objelerin sınıflarında, veri üyelerinde belirtilen özellikler obje oluşturulurken çeşitlilik gösterebilir.



Bu araba projesinin benzetmesi ile; sınıfları, objeleri, üye işlevlerini (fonksiyon, metotları) ve özelliklerini öğreneceğiz. Bir örnek ile anlattığımız şeyleri yavaşça somutlaştıralım.

Kod:
#include <iostream>



usingnamespacestd;



// NotDefteri Sınıfının tanımlanması

classNotDefteri

{

public:

    // kullanıcıya hoş geldiniz mesajını gösteren fonksiyon

     **** mesajiGoster()

    {

cout << "Not Defterine Hoş Geldiniz!" << endl;

    } // mesajıGoster fonksiyonunun sonu

}; // NotDefteri sınıfının sonu



// programın çalışması için main fonksiyonunun başlangıcı

int main()

{

NotDefteribenimNotDefterim; // benimNotDefterim adında bir not defteri objesinin oluşturulması

benimNotDefterim.mesajiGoster(); // objenin mesajıGoster fonksiyonunun çağırılması

} // main fonksiyonun sonu









Yukarıdaki örnekte bir not defteri sınıfı oluşturduk (arabanın projesi) ve not defterinin mesajını göstermesi için sınıfına ait bir mesajıGoster (gaz, fren pedalının çalışma prensibi) fonksiyonu tanımladık. Daha sonra programımızın çalıştığı main(ana) fonksiyona gelip, not defteri objesi oluşturduk (projenin inşa edilmesi) ve tanımladığımız fonksiyonu çağırdık (gaz, fren pedalına basılması).



Not: Sınıf isimleri Büyük harf ile başlar. Ancak üretilen objeler ve yazılan metotların isimlerinde genelde “camelcase”, “deve durumu” kullanılır. Yani ilk harf küçük ve her yeni kelime için büyük harf. Örneğin, mesajiGoster, konuyuAç, yardımEt gibi... Deve silüetine benzediği için deve durumu adını almıştır. Bu kurallar kodun okunaklı ve anlaşılır olması için vardır.



Not: Her sınıf classSınıfAdı ile başlar ve daha sonra süslü parantez ({) açılır. Sınıfın sonunda ise, ters süslü parantez (}) kullanılarak sınıf sonlandırılır.



Not: Süslü parantezden sonra gelen “public:” etiketi erişim belirleyicidir. Fonksiyonun "halka açık” olduğunu belirtmek için vardır. Yani, main fonksiyon tarafından erişilebilir veya eğer varsa farklı bir sınıf tarafından erişilebileceğini belirtir. Erişim belirleyici etiketlerden sonra daima iki nokta ( : ) gelir. Burada iki diğer erişim belirleyici daha vardır: private ve protected. Private bulunduğu sınıf dışından erişilemez. Protected ise, bulunduğu paket dışından erişilemez. Buna örnek olarak, gaz ve fren pedalını kullanmamız ama nasıl çalıştığını bilmememizi verebiliriz. İleride daha detaylı direkt erişemesek de nasıl kullanabileceğimizi anlatacağım.



Not: Her fonksiyonun başına ne işe yaradığı ile ilgili fonksiyon başlığı yorum şeklinde eklenir. Böylece siz veya bir başkası kodu incelerken ne işe yaradığını bulmaya çalışmazsınız.



Not: Her fonksiyon belirli bir işi yapar ve sonucunda bir şey döner. Örneğin, bir hesaplama yapar ve hesaplamanın sonucunda tam sayı döner. Bir fonksiyonu tanımlarken, fonksiyonun ne döneceğini de belirtmeniz gerekir. Buradaki “v-oid” kelimesi geçersiz, boş manasına gelmektedir. Onu çağıran fonksiyona, sonucunda bir şey döndürmeyeceğimiz zaman kullanırız. Dönüş tipinin yanlış tanımlanması derleme (compilation) hatasına yol açar.



Not: Fonksiyonların adından sonra “()” kullanılır. Gerekirse içine ekstra veri girilebilir. Ancak, bunu ileride göreceğiz. Sınıf için kullandığımız süslü parantezler, fonksiyonlar için de aynen geçerlidir ve fonksiyonun işlevi yani yapacakları bu süslü parantezlerin içine yazılır.



Not: Bir fonksiyonun içine başka bir fonksiyonun tanımlanması söz dizimi (syntax) hatasına yol açar.



Gelecek derste konuyu daha da detaylandırıp yavaş yavaş derinlerine ineceğiz. Derinine inerken de çeşitli örnekler göreceğiz.
 
Moderatör tarafında düzenlendi:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.