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