14 Şubat 2014 Cuma

C++ Class


C++ CLASS(Sınıflar)

C++ OOP yani nesne yönelimli programlama dili olduğu için C++ ile program yazılırken nesne oluşturabileceğimiz class' lar kullanılır.Fonksiyonel dillerde örneğin C de nasıl fonksiyonlar ana yapıyı oluşturuyorsa C++ gibi nesne tabanlı dillerde de classlar(sınıflar) ana yapıyı oluşturmaktadır.

C++'da gerçek nesnelerin oluşturulması işlemi class ile olur.Sınıf nesneler, oluşturmak için kullanılan yöntemdir. Class ile şu şekilde bildirim yapılır;


Örnek:

classsınıf_adı {

private:

private veri ve fonksiyonlar;

public:

public veri ve fonksiyonlar;

protected:

protectedveri ve fonksiyonlar;

}nesne listesi;

-Nesne nedir?

Nesne, oluşturduğumuz sınıfın ürünüdür.

Bir örnekle nesne ile sınıf arasındaki farkı inceleyelim.

 
Yolcu Sınıfı
Müşterinin Adı
Gideceği yer
Sefer numarası
Sefer saati
Yolcu olan ahmet Nesnesi
Müşterinin Adı
Gideceği yer
Sefer numarası
Sefer saati
…Otobüs biletini oluştur…


Programın diğer bölümleri tarafından erişilebilir hale getirmek söz konusu ise, public anahtar kelimesi mutlaka belirtilmelidir.

Herhangi bir tanım yapılmaz ise, sınıf içinde belirtilen tüm bölgelerin özel bölge olduğu, yani privatekabul edildiği varsayılır.

Bu durumda söz konusu bu bölgelerin tümüyle sınıfın üyesi bir fonksiyon tarafından kullanılabileceği anlaşılır.

Bir sınıf nesnesi yoluyla dışarıdan nokta operatörünü kullanarak sınıfın yalnızca publicbölümünde bildirilen veri elemanlarına veya fonksiyonlarına erişilebilir. Private veya protected bölümlerine erişilemez.

Bu olay NYP(Nesne Yönelimli Programlama)’da kapsülleme(encapsulation) olarak bilinir.

-Kapsülleme

Kapsülleme nesnenin verilerini,metodlarını(metod kelimesi C++ çok sık kullanılır metod diyerek kastedilen tanımladığımız fonksiyonlardır diyebiliriz) ve değişkenlerini diğer değişkenlerden saklayarak ve bunlara erişimi sınırlandırarak yanlış kullanımlardan koruyan bir konseptir.

Çoğu programlama dilleri kapsüllemeyi aşağıda sıraladığımız üç bilgi erişim belirteçleri ile desteklerler.

  • Public(halka açık, kamu)

  • Private(özel, gizli)

  • Protected(korumalı)

Şimdi bu bilgi erişim belirteçleri nedir bunlara biraz değinelim.

  • Public(halka açık, kamu) erişim kuralı ile tanımladığımız metodlara ve verilere her nesneden erişebiliriz.

  • Private(özel, gizli) erişim kuralı ile tanımladığımız bir metoda sadece bu metodun tanımlandığı sınıftan örneklendirilmiş nesnelerin içinden erişim hakkına sahip oluruz.
  • Protected(korumalı) erişim kuralı ile tanımladığımız bir metoda ise bu metodun tanımlandığı sınıftan örneklendirilmiş nesnelerin içinden ve bu sınıftan türetilmiş olan alt nesnelerden erişebiliriz.

Not:Eğer erişim belirteçlerini tanımlamazsanız tüm üyeler varsayılan olarak Private tanımlanır.


Sınıf içinde genel Fonksiyonların Tanımlanması


Gerek duyulduğunda, fonksiyon tanımları sınıfın bildiriminin dışına taşınarak genel fonksiyonlar biçimine dönüştürülebilir.

Bu durumda, sınıf tanımı içinde ilgili fonksiyonların prototiplerine yer vermek gerekecektir. Üye fonksiyonların, sınıf dışında tanımlanması durumunda, bu fonksiyonun hangi sınıfın bir üyesi olduğunu da belirtmek gerekmektedir.

Bunun için (::) işlevinden yararlanılır.Örneğin; sınıf_adı :: fonksiyon_adı.


Sınıf içinde fonksiyonların tanımlanması ve sınıf ile ilişkilendirilmesini daha iyi anlayabilmemiz için aşağıdaki örneği inceleyelim.


Örnek:


#include <iostream>

using namespace std;

const float PI = 3.14159;

// Bir küre sınıfı oluşturalım

class Kure {

//erişim belirtecini public olarak kullandık bu verilere herhangi bir erişim sınırlaması getirmediğimiz anlamına gelir.

public:

float r;

float x, y, z;

float alan();

float hacim();

}k;

// Kürenin hacmini hesaplayan fonksiyonu yazalım

float Kure::hacim()

{ return (r*r*r*4*PI / 3); }

// Kürenin alanını hesaplayan fonksiyon

float Kure::alan()

{ return (r * r * 4 * PI); }

//Şimdi main(ana) fonksiyonumuz da değerleri atayalım ve sınıfa gönderelim

int main()

{ //Kure sınıfında ki "k" nesnesine değerleri gönderelim

k.r=1.0;

k.x=2.0;

k.y=3.0;

k.z=4.0;

cout << "X = " << k.x

<< ", Y = " << k.y

<< ", Z = " << k.z

<< ", R = " << k.r

<< "\n" << "Alan =" << k.alan()

<< "\n" << "Hacim=" << k.hacim()

<< "\n";

return 0;

}


Programımızın çıktısı aşağıdaki gibi olacaktır.

X=2 ,Y=3, Z=4, R=1

Alan=12.5664

Hacim=4.18879




Hiç yorum yok :

Yorum Gönder