Elektrotekno.com Ana Sayfa || Staj defterleri, Deney Raporları, Ders Notları || Deney raporları


C++ ile nesne tabanlı programlama [deney föyü]

Kayıt: 02 Mar 2006
Mesajlar: 38

Offline
caglar
Tarih: 08 03 2006 02:23

C++ İLE NESNE TABALI PROGRAMLAMA

--------------------
C++ İLE NESNE TABALI PROGRAMLAMA

1. SINIF YAPISI

C++' ın "struct" ve "class" yapıları programcıya yeni veri tipleri (nesne) tanımlama imkanı sağlar.Bu iki yapı arasındaki farklar "Erişim Seviyeleri" bölümünde verilmektedir. Burada "class" yapısı ,özellikleri ve kullanımı gerekli söz dizim kuralları ile birlikte verilecektir.

Sınıf tanımlaması 4 kısımdan oluşur.

1.1. Eleman Sahalar: Eleman sahalar kullanılarak sınıfın genel özellikleri tanımlanır. Bir sınıf tanımlamasında hiç eleman saha olmayacağı gibi, bir veya birden fazla eleman saha bulunabilir. Herhangi bir eleman saha, basit veri tipi (int, float, char....) veya başka bir sınıf olabilir.

1.2. Eleman Fonksiyonlar: Sınıfa ait nesnelere uygulanabilecek operasyonların tanımlandığı fonksiyonlardır. Bir sınıfa ait herhangi bir sayıda eleman fonksiyon bulunabilir. Eleman fonksiyonlar sınıfa ait " arabirim" olarak nitelendirilir.

1.3. Erişim Seviyeleri: Bir sınıfa ait elemanlar (sahalar ve fonksiyonlar) 3P olarak bilinen aşağıdaki seviyelerden birine ait olmak zorundadır.

. Public (Açık)
. Private (Özel)
. Protected (Korumalı)

1.4. Sınıf Adı: Sınıf tanımlamasından sonra veri tipi olarak kullanılacak, değişken adı kurallarına uygun bir isim.

Sınıf yapısının söz dizimi aşağıda verilmiştir.

class < sınıf adı> {
public:
..... // eleman sahalar
..... // eleman fonksiyonlar
private:
..... // eleman sahalar
..... // eleman fonksiyonlar
protected:
..... // eleman sahalar
.... // eleman fonsiyonlar
};

Söz diziminden de görüldüğü gibi "class", "public", "private" ve "protected" kelimeleri C++ ' ait ayrılmış kelimeler olduğu için değişken adı olarak kullanılamazlar.


2. ERİŞİM SEVİYELERİ

Sınıf tanımlamasını, C de yoğunlukla "struct" tanımlamasından ayıran en önemli özellik, erişimine getirdiği kısıtlamadır. "struct" ile yaratılan bir değişkene ait sahalara, program içerisinde her noktadan erişilebilir.

struct ogrenci{
char *isim;
char *bolum;
......
}
ogrenci student;

Yukarıda verilen tanımlamadan sonra, program içerisinde nerede olursa olsun, student.isim ifadesi doğru değere erişmemizi sağlayacaktır. Aynı tanımlamada bu kez struct yerine class kullanalım.

class ogrenci{
char *isim;
char *bolum;
......
}
ogrenci student;

Sınıfa ait herhangi bir eleman fonksiyon içerisinde olmadan hiç bir eleman sahaya erişilemez. Yapılan bu kıyaslama, birbirine çok benzer görünen bu iki yapının aslında çok farklı olduklarını ortaya koymaktadır. Erişim struct' ta tamamen açık class' ta ise tamamen kapalıdır.
Bu iki yapının birisi diğerinden tamamen daha üstündür demek çok güçtür. struct yapısı nesneye yönelik programlama ile ters düşmektedir. class yapısı ise çok büyük kısıtlama getirmektedir. Bu durumda çözüm class yapısına erişim seviyeleri eklenerek elde edilmiştir.

. Public (Açık)
. Private (Özel)
. Protected (Korumalı)

Bir kural olmamakla birlikte eleman sahalar private, eleman fonksiyonlar ise public olarak tanımlanır. Söz dizimini tekrar hatırlayacak olursak;

class < sınıf adı> {
public:
..... // eleman sahalar
..... // eleman fonksiyonlar
private:
..... // eleman sahalar
..... // eleman fonksiyonlar
protected:
..... // eleman sahalar
..... // eleman fonksiyonlar
public:
..... // eleman sahalar
..... // eleman fonksiyonlar
};

Görüldüğü gibi herhangi bir erişim seviyesinden hiç bulunmayacağı gibi birden fazlada bulunabilir.

3. ELEMAN SAHALAR

Eleman sahalar sınıfların özellikleri olarak kabul edilirler. Her eleman saha, sınıfa ait tipik bir özelliği temsil eden değişkendir. Eleman sahalar basit veri tiplerinden oluşacağı gibi, başka sınıflara ait nesneler olabilirler. Eleman saha tanımlaması, basit değişken tanımlaması ile bir çok yönden aynıdır. Tek fark, eleman sahalara tanımlama sırasında değer atama işleminin yapılmamasıdır.

class sinif1 {
.....
int saha1 = - 5 //hatalı tanımlama
};

Bir kural olmamakla birlikte eleman sahalar genellikle private seviyesinde tanımlanırlar. Böylelikle sınıf dışından eleman sahalara erişilmez.

Tanımlı olan bir sınıfa ait her nesne için mevcut eleman sahaların bir kopyası yaratılmaktadır ve her nesne sahip olduğu kopya üzerinde işlem yaptırabilmektedir. Ancak bazı durumlarda sınıfa ait her nesne için bir kopyası olan değişkenlere ihtiyaç olabilir. Bu tip eleman sahalar, static ayrılmış kelimesi kullanılarak tanımlanmaktadır.

class Liste{
int *ilk;
int uzunluk;
static int adet;
public:
Liste (int = Max);
.....
};
Liste Liste_1.Liste(15);
Liste Liste_2.Liste(27);
Liste Liste_3.Liste(4Cool;

Yukarıda tanımı verilen Liste sınıfına ait nesnelerden her biri için ilk ve uzunluk sahaların kendilerine ait kopyaları yaratılacaktır. Ancak, aynı durum adet eleman sahası için geçerli değildir. Sınıfa bağlı tüm nesneler için adet eleman sahasının bir kopyası oluşacaktır.

4. ELEMAN FONKSİYONLAR

Sınıfa ait nesneler üzerinde yapılabilecek işlemlerin tanımlı olduğu fonksiyonlar "eleman fonksiyonlar" olarak adlandırılırlar. Eleman fonksiyonlar sadece sınıfa ait nesneler üzerinde işlem yapabilirler ve sadece onlar tarafından çağrılabilirler. Satır içi fonksiyon kurallarına uymak kaydıyla, eleman fonksiyonlar sınıf tanımlaması içerisinde kodlanabilirler.

Eleman fonksiyonlar sıradan fonksiyonlardan aşağıdaki özellikleriyle ayrılırlar:
- Eleman fonksiyonlar, erişim seviyeleri ne olursa olsun bağlı oldukları sınıfın tüm elemanlarına erişebilirler.
- Eleman fonksiyonlar sadece sınıfın tanımlı olduğu alanlarda tanımlıdır. Sıradan fonksiyonlar ise dosya içerisinde tanımlıdırlar.

Eleman fonksiyonlar sınıfa ait nesneler gibi düşünülebilir. Sınıfa ait bir sahaya "." operatörü ile erişilmektedir. Aynı operatör eleman fonksiyonlara erişim için de kullanılmaktadır. Fonksiyona erişim, fonksiyon çağrılması anlamına gelmektedir. Sınıfa ait nesneler göstergeç kullanılarak tanımlanmış ise, aynı işlem -> operatörü ile yapılmaktadır.


Reklamlar

1 Kullanıcı bu konu için caglar arkadaşımıza teşekkür ettiler




C++ ile nesne tabanlı programlama [deney föyü]


Benzer Konular
- Bilgisayar Programlama Arasınav Soruları ve Cevapları
- C Programlama Ders Notları
- Algoritma ve Programlama (Sunum)

- PLC S7 200 programlama teknikleri

- pıc18f2550 ve pıc18f4550 deney seti
- plc de programlama mantığı
- OpenGL Programlama
- C Programlama (Türkçe Sunum)
- USB Tabanlı EKG sinyallerinin Ölçülmesi

- YTÜ elektronik lab deney raporları

- Elektrik makinaları ve tas. lab. [Deney föyü]

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Turkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72