15:16

Nesne yönelimli Programlama (Object-Oriented Programming) Tekniği ve C++

Nesne yönelimli Programlama (Object-Oriented Programming) Tekniği ve C++

Bugün pek çok yüksek seviyeli programlama dilleri bu tekniği desteklemektedir. O yüzden bu yaz elimden geldiğince ana başlıklar dan yola çıkarak C++ nedir nedeğildir iyice ararşıtırırken öğrendiklerimide sizinle paylaşmak istedim. Şimdi genel özellikleriyle C++ diyelim ve başlayalım.

1- c++'ta Local değişkenlerin bildirimleri blokların başında yapılmak zorunda değildir. Yani
{} aç kapa yaptıktan sonra nerde isterseniz değişkenleri tanımlayabilirsiniz.

2- c++'ta Local değişkenin faaliyet alanı bildirim noktasından blok sonuna kadar olan bölgeyi kapsar. Ne olursa olsun bir blok içersinde aynı isimli birden fazla değişken bildirimi yapılamaz.

3- for döngüsünün birinci kısmında bildirim yapılabilir. Ve etkinliği for döngüsün içinde bulunduğu bloğun sonuna kadar etkilidir.
Örn: For( int i=0; i<=length; i++)

4- while ve if döngleri içersinde tanımlama yapılamaz.

5- DEFİNATİON için küçük bir örnek.

#include
#define SIZE 100

void main () {
for (int i=0; iprintf(“The numbers %d \n ”,i)
return 0;
}

6- if, for, switch, while gibi deyimlerden sonra blok açılmamış olsa bile gizli bir blogun açıldığı düşünülmelidir.

7- // ile satır sonuna kadar yorum yapılabilinir.
/* */ arasında kalan herşey yorum olarak kabul eder.

8- Çağrılan fonksiyon eğer çağıran fonksiyonun yukarısında tanımlanmamışsa fonksiyon prototipi zorunludur.

9-farklı parametre yapılarına sahip aynı isimli birden fazla fonksiyon tanımlanabilir.

Örn: void mesut (int x){ }
void mesut (void) {}
burada çağrılma (call) ifadesindeki parametre sayısı ve türü hangisine uygunsa o çağrılmış olur. Geri dönüş değerinin farklı olması aynı isimli fonksiyon yazmak için yeterli değildir.
Yani, geri dönüş değerleri farklı fakat parametre yapısı aynı olan birden fazla fonksiyon tanımlanamaz.

10- C++ derleyicisi aynı sayıda parametrelere sahip birden fazla aynı isimli fonksiyonun bulunması durumunda çağrılma ifadesine tür bakımından uygun bir fonksiyon bulamazsa bu durum “Ambiguity between fonk(int) and fonk (long) bunun bir diğer ismi iki anlamlılık hatasıdır.
Örneğin: fonksiyon float parametreyle çağrılmışsa ancak float parametreye sahip bir fonksiyon yoksa double parametreye sahip bir foksiyon tanımlanmışsa bu durumda double parametreye sahip olan foksiyon çağrılır.

11- tanımlanan ve çağrılan bir fonksiyon ismi .obj modül içersine yazılmak zorundadır. Buda içiersinde aynı isimli birden çok fonksiyon modülü içersine yazılamaz demeketir.

12- Dinamik bellek yönetimi new ve delete operatörleriyle yapılır. Ve bu malloc, claloc, realloc ve free fonksiyonlarıyla yapılabilir. Ancak bu fonksiyonlar OOP yönelimliprogramlama tekniği uygulayabilmek için tasarlanmıştır.

13- C++'ta dinamik olarak tahsis edilme potansiyelindeki boş bölgelere free store denilmektedir. C dilinde ise HEAP denir.

14- NEW Operatörü:

new(TÜR) [<[UZUNLUK]>]

new int
new char
new double [100] gibi
int *p;
p= new int;

Exam:

#include
#include
{
char *p;
p =new char[100];
cin>>p;

for(int i=0; i<100; i++);
cout<}

Exa: Tam olarak ad, soyad uzunluğu kadar bellekte yer ayıran fonksiyon
#include
#include
char *getname(void)
{
char *p;
char buf[100];
printf(”Name and Surname”);

gets(buf);

p=new char [strlen(buf)+1];
if(p==NULL){

printf(“Cannot allocate memory..\n”);
return 1;
}
strcpy (p.buf)
return p;
}

void main (){
char *p;
p=getname();
puts(p);
}

15- Delete operatörü new opratörü ile memory de yar açılmış olan blokların serbest bırakılması için kullanılır 2 şekilde kullanımı vardır

delete p; tek member için
delete [] p; birden fazla member için

16- Bir adresin farklı türden bir pointer'a ve adres olmayan bir bilginin bir pointer'a atanması durumu error olarak değerlendirilir. Yani adres işlemlerinde tür uyuşmazlığı C++'ta eror olarak değerlendirilir.

Örn;
void main (){

int s[10];
chat *t;

t=s ; // dediğin anda cannot conver int to char hatası alırsın.
Ama
t=(char *)s ; // hata vermez.

17- const bir değişkenin adresi ancak const bir pointer'a atanmalıdır.

const int x;
int *y;
const int *p;
y=&x; // HATALI dır.
p=&x;// DOĞRU dur.

18- const bildirimi ile yaratılmış bir değişken sabit ifadesi gibi işlem görür. Const bir değişken için yine bellekte yer ayrılır. Const ilk değeri aldığı Ya da atandığı andan itaberen o değişkeni kullanır.

Örn: const int MAX=y+8;
const int MIN=0;
x=MAX;
x=MIN;
const int SIZE =10;
int y[SIZE];

const değişken için bellekte yer ayrılır. Bu durumda const değişkenin adresi alınabilinir.

Void main (){
const SIZE=100;
int *p;
p=(int *)&SIZE;
*p=20;
printf(“%d/n”.SIZE);
}

19- Statik ömürlü değişkenlere sabit ifadesiyle ilk değer atama zorunluluğu yoktur. C'de vermek zorundayız. Çünkü static değişkenler il değer içersine yazılır. Exe dosyası içersinde yer alırlar. Bunun mümkün olabilmesi için verilen ilk değerin derleme aşamasında belirlenmiş olması gerekir. C++'ta static değişkenlere her türden öylesine bir değer verilebilinir. Bu değişkenler 0 ilk değeriyle amaç koda yazılırlar. Programın çalışma zamanı sırasında ve main fonksiyonundan önce ilk değerlerini alırlar.