Serap Şen

Bilişim hakkında herşey…

C++ dersi 7-Sınıf(Class) Const (Sabit) Nesneler ve Const üye fonksiyonları

Merhaba Arkadaşlar,

Vize haftasından dolayı ara vermiştim.Derslerimize devam edebiliriz.

Bu dersimizde Const(Sabit)nesneler ve const üye fonksiyonlarını anlatacağım.

İyi yazılım mühendisliğinin en temel prensiplerinden birisi en az yetki prensibidir.Bazı nesneler değiştirilebilir ve bazısı da değiştirilemez olmalıdır.Const,anahtar kelimesi kullanılarak bir nesnenin değiştirilemez (sabit) olduğunu belirtebiliriz.

Örneğin:

const Zaman oglen(12,0,0); //Zaman sınıfından sabit bir öğlen nesnesi bildirmekte ve bu nesneye öğlen 12 ilk değerini vermektedir.

Bir fonksiyon,hem prototipi hem de tanımlamasında const anahtar kelimesi kullanılarak sabit olarak tanımlanabilir.const anahtar kelimesi parametre listesinin sonuna ve fonksiyon tanımlamasında sol küme parantezinden ({) önceye konur.

Örneğin:A sınıfının aşağıdaki üye fonksiyonu

int A::degerOku()const{return ozelVeriUyesi;}

Pekiştirmek için aşağıdaki kodu inceleyelim:

//Zaman sınıfının tanımlanması

class Zaman

{

public:

Zaman(int=0;int=0;int=0); //varsayılan yapıcı

//Ayarla fonksiyonları

void zamanAyarla(int,int,int); //zamanı ayarlar

void saatAyarla(int); //saati ayarlar

void dakikaAyarla(int); //dakikayı ayarlar

void saniyeAyarla(int); //saniyeyi ayarlar

//Oku fonksiyonları(normalde const bildirilir)

int saatOku()const; //saati döndürür

int dakikaOku()const; //dakikayı döndürür

int saniyeOku()const; //saniyeyi döndürür

//Yaz fonksiyonları(Normalde const bildirilir)

void askeriYaz()const; //askeri zamanı yazdır

void standartYaz(); //standart zamanı yazdır

private:

int saat; //0-23

int dakika; //0-59

int saniye; //0-59

};

//Zaman sınıfının üye fonksiyon tanımlamaları

#include

using std::cout;

#include “zaman.h”

//Özel veriye ilk deger atayan yapıcı fonksiyon

//Varsayılan deger 0′dır.(Sınıf tanımlamasına bakın)

Zaman::Zaman(int hr,int min,int sec)

{zamanAyarla(hr,min,sec);}

//Saat,dakika ve saniye üyelerinin değerlerini ayarlar.

void Zaman::zamanAyarla(int h,int m,int s)

{

saatAyarla(h);

dakikaAyarla(m);

saniyeAyarla(s);

}

//Saatin değerini ayarla

void Zaman::saatAyarla(int h)

{saat=(h>=0 && h<24)?h:0;}

//Dakikanın değerini ayarla

void Zaman::dakikaAyarla(int m)

{dakika=(m>=0 && m<60)?m:0;}

//saniyenin değerini ayarla

void Zaman::saniyeAyarla(int s)

{saniye=(s>=0&&s<60)?s:0;}

//Saatin değerini oku

int Zaman::saatOku()const{return saat;}

//dakikanın değerini oku

int Zaman::dakikaOku()const{return dakika;}

//saniyenin değerini oku

int Zaman::saniyeOku()const{return saniye;}

//zamanı askeri biçimde görüntüler:SS:DD

void Zaman::askeriYaz()const

{

cout << (saat<10?”0″:”")<< saat <<”:”

<<(dakika<10?”0″:”")<<dakika;

}

//Zamanı standart biçimde görüntüler:SS:DD:SS AM (yada PM)

void Zaman::askeriYaz()const //const olmalı

{

cout <<((saat==12)?12:saat%12)<< “:”

<< (dakika<10?”0″:”")<< dakika << “:”

<< (saniye<10?”0″:”")<<saniye

<<(saat<12?”AM”:”PM”);

}

//Const bir nesneye const olmayan üye fonksyon ile erişmeye çalışmak

#include “zaman.h”

int main()

{

Zaman uyan (6,45,0); //sabit(const) olmayan nesne

const Zaman oglen(12,0,0); //sabit(const)nesne

//ÜYE FONKSİYON || NESNE

uyan.saatAyarla(18); //const değil || const değil

oglen.saatAyarla(12); //const değil || const

uyan.saatOku(); //const || const değil

oglen.dakikaOku(); //const || const

oglen.askeriYaz(); //const || const

oglen.standarYaz(); //const değil || const

return 0;

}

İki zaman nesnesi gösterilmektedir.Nesnelerden birisi const,diğeri ise const değildir.Program const oglen nesnesini const olmayan saatAyarla ve standartYaz üye fonksiyonları ile değiştirmeye çalışmaktadır.Program ayrıca nesnelerden yapılabilecek diğer 3çağrı biçimini de göstermektedir.

NOTLAR:

*Bir nesneyi const tanımlamak,en az yetki prensibini güçlendirmeye yardım eder.Nesneyi değiştirmeye çalışmak ,çalışma zamanı hatalarına neden olacağından derlenme esnasında yakalanır.

*Bir const nesneden const olmayan üye fonksiyonu çağırmak yazım hatasıdır.

*Const bir üye fonksiyon const olmayan bir sürümüyle aşırı yüklenebilir.Hangi aşırı yüklenmiş üye fonksiyonun kullanılacağını derleyici,nesnenin const olup olmadığına bakarak karar verir.

Tags: , , ,


Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Follow Me

Microsoft Imagine Cup 2012 Repharm Project

Makalelerimi takip edebilirsiniz…

Arşivlerim

Readmee E-dergimiz

Anketler

Web Sitemi Beğendin mi?

  • Kötü (24%, 35 Votes)
  • Fena değil (8%, 12 Votes)
  • İdare eder (10%, 15 Votes)
  • İyi (18%, 27 Votes)
  • Çok iyi (40%, 57 Votes)

Total Voters: 146

Loading ... Loading ...

Kaç Kişi Online?