Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.

Benzer bir sunumlar


... konulu sunumlar: "Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz."— Sunum transkripti:

1 Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz

2 #include using namespace std; Class basitnesne //sınıf tanımla { private: int veri; //sınıf verisi public: void degerata(int d) //değer atamak için üye fonksiyon { veri = d; } void goster() //veriyi görüntüleyen üye fonksiyon { cout << “değer = ” << veri << endl; } }; int main() { basitnesne b1, b2; //basitnesne sınıfından iki obje tanımla b1.degerata(1066); //değer atamak için üye fonksiyon çağırma b2.degerata(1776); b1.goster(); //veriyi göstermek için üye fonksiyon çağır b2.goster(); return 0; }

3 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Örnekte, basitnesne sınıfında bir veri öğesi, ikide üye fonksiyon vardır.Üye fonksiyonlar sınıfın dışından veri öğelerine ulaşmanın tek yolunu oluştururlar. İlk üye fonksiyon, veri öğesine bir değer atar. İkinci üye fonksiyonda bu değeri göstermeye yarar. Veri ve fonksiyonları tek bir bütün haline getirmek nesne yönelimli programlamanın temel yaklaşımıdır. data1 data2 data3 fonk1() fonk2() fonk3() veriler fonksiyonlar sınıf

4 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Sınıf ve nesneler Bir nesne ile sınıf arasındaki ilişki tıpkı bir değişken ile veri tipi arasındaki ilişki gibidir. Bir nesne kendi sınıfının bir örneğidir. Örnek programda sınıf (basitnesne)önce tanımlanmış, main() fonksiyonu içerisinde sınıfa ait iki nesne(b1,b2) üretilmiştir. Sınıf oluşturma class anahtar kelimesi ile başlar, ardından sınıfın adı gelir. Yapı tanımlamasında olduğu gibi sınıfın gövdesi küme parantezleri ile ayrılır ve sonuna (;) konur. Private(özel): private olarak tanımlanan veri ve fonksiyonlara sadece, tanımlı oldukları sınıf içerisinden erişilebilir. Public(genel): public olan veri ve fonksiyonlara tanımlı oldukları sınıfların dışındanda erişmek mümkündür. Genellikle bir sınıfdaki fonksiyonlar public, veriler private tır. Veriler üzerlerinde kazara oynanmasın diye private olarak tanımlanırlar. Üzerinde işlem yapılan fonksiyonlar ise sınıfın dışından erişilebilsin diye public olarak tanımlanırlar. Bu bir kural değildir.

5 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz class basitnesne { private: int veri; public: void degerata(int d) { veri = d; } void goster() { cout << “değer = ” << veri << endl; } } ; Anahtar kelime Sınıfın adı Private anahtar kelimesi ve iki nokta Private fonksiyonlar ve veriler Public anahtar kelimesi ve iki nokta Public fonksiyonlar ve veri Küme parantezleri Noktalı virgül

6 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Sınıfın kullanımı Sınıf tanımlandıktan sonra, main() fonksiyonu içerisinde nesneler nasıl tanımlanmakta ve nesne üye fonksiyonlarına nasıl erişilmektedir. basitnesne b1, b2; //basitnesne sınıfından iki obje tanımla Basit nesne sınıfından b1 ve b2 isimli iki adet nesne tanımlanır. Nesneler tanımlandığında hafızada yer kaplarlar. Yani nesne tanımlamak her hangi bir veri tipinde değişken tanımlamaya benzer. Üye fonksiyonları çağırmak için ise nesne ismi (.) fonksiyon ismi şeklinde ifade yazılır. b1.degerata(1066); //değer atamak için üye fonksiyon çağırma b2.degerata(1776); Görüldüğü gibi normal fonksiyon çağırmaya benzememektedir. Yani Degerata(1066) ; // yazmak anlamsızdır. Çünkü bir üye fonksiyon her zaman belli bir nesnenin üzerinden işlem yapmak için çağrılır.

7 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Yeni örneğimiz biraz daha karmaşık olsun #include using namespace std; class part //sınıfı tanımla { private: int modelnumber; //model numarası int partnumber; //parca numarası float cost; //parcanın fiyatı public: void setpart(int mn, int pn, float c) //deger atama fonsiyonu { modelnumber = mn; partnumber = pn; cost = c; } void showpart() //veriyi görüntüleyen fonksiyon { cout << “Model ” << modelnumber; cout << “, part ” << partnumber; cout << “, costs $” << cost << endl; } };

8 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz int main() { part part1; //part sınıfına ait nesneyi tanımla part1.setpart(6244, 373, F); //üye foksiyonu çağır part1.showpart(); //üye foksiyonu çağır return 0; } Part sınıfında üç tane veri parçası vardır ; modelnumber, partnumber ve cost. Aetpart üye fonksiyonu üç veri parçasına veri ataması sağlar. Showpart üye fonsiyonu ise objenin verilerini ekrana yazdırır.

9 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz #include using namespace std; class mesafe //sınıf tanımla { private: int metre; float cm; public: void degerata(int met, float sant) {metre=met; cm=sant; } void degeral () {cout >metre; cout >cm; } void goster() {cout<< metre << “ metre ” << cm << “ cm dir”;} };

10 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz int main() { mesafe m1,m2;//iki obje tanımla m1.degerata(5, 20);// m1 objesine değer ata m2.degeral();// m2 objesine değeral cout<<“\n m1 değeri “; m1.goster(); // m1 objesinin değerlerini göster cout<<“\n m2 değeri “; m2.goster(); // m2 objesinin değerlerini göster return 0; }

11 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Kurucu fonksiyonlar C++’ da nesnenin otomatik olarak ilk kullanıma hazırlama işlemi kurucu(constructor) fonksiyon olarak adlandırılır. Ne zaman bir nesne oluşturulursa kurucu fonksiyon otomatik olarak çalıştırılır. Program içerisinde kullanılmak üzere bir sayac sınıfı oluşturalım. Sayacların ilk oluşturulduklarında sıfır değerini almasını isteriz. Bunu sağlamak için sayaca ilk değeri atayan bir üye fonksiyon yazabiliriz ve sayac nesnesi tanımlandığında bu üye fonksiyonu çağırarak sıfır değeri atayabiliriz. Ancak her nesne oluşturulduğunda bu üye fonksiyon çalıştırılmalıdır. Sayac s1; S1.degerata(0) ; veya s1.sifirla_sayac(); Görüldüğü üzere bu hataya açık bir durumdur. Her nesne oluşturulduğunda, kendisini ilk kullanıma hazırlaması daha uygun ve güvenilirdir. sayac():sayici(0)// kurucu fonsiyon { /* boş gövde */}

12 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Kurucu fonksiyonlar üyesi olduğu sınıfın ismi ile aynı isme sahiptir. Böylece derleyici bu fonksiyonun kurucu bir fonksiyon olduğunu anlar. Kurucu fonksiyon için dönüş tipi kullanılmaz. Çünkü sistem tarafından otomatik olarak çağrıldıklarından, bir değer döndürmeleri gereken bir program yoktur. Bu da derleyiciye bu fonksiyonların bir kurucu fonksiyon olduğunu tanıtır. Kurucu fonksiyonun en genel görevi ilk değerleri atamaktır. Sayac() {sayici=0;} Şeklinde kullanımı akla gele bilir ama tercih edilen sayac():sayici(0)// kurucu fonsiyon { /* boş gövde */} İlk değer atama işlemi üye fonksiyonun beyan edilmesinden hemen sonra, fakat fonksiyon gövdesinden önce yer alır. Atanacak değerden önce (:) gelir. Eğer birden fazla üyeye değer atanacaksa, bu değerler virgül ile ayrılır.

13 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Kurucu fonksiyonlar Örnek #include using namespace std; class sayac //yapı tanımla { private: unsigned int sayici; public: sayac():sayici(0)// kurucu fonsiyon { /* boş gövde */} void artir_sayici()// sayacı bir artır {sayici++;} void al_sayici()//sayac değerini göster {return sayici;} };

14 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz int main() { sayac s1,s2;//iki obje tanımla cout<<“\n s1 değeri “<< s1.al_sayici(); // s1 objesine değerini göster cout<<“\n s2 değeri “<

15 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Programda kurucu fonksiyonu aşağıdaki şekilde değiştirip çalıştırınız Çıktı ne şekilde değişecektir. sayac():sayici(0)// kurucu fonsiyon { cout<< “kurucu fonksiyon çalıştı\n”;}

16 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Yok edici fonksiyonlar Bir nesne oluşturulduğunda, ilk değer atamak üzere bir kurucu fonksiyon çalıştırılmakta idi. Benzer şekilde nesne ortadan kaldırıldığındada yok edici(destructor) fonksiyonu çalıştırılır. Bu fonksiyon kurucu fonksiyonla aynı isme sahip ancak önünde (~) işareti yer almaktadır. sayac():sayici(0)// kurucu fonsiyon { /* boş gövde */} ~sayac()// yok edici fonsiyon { /* boş gövde */}

17 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Fonksiyon argümanı olarak nesneler #include using namespace std; class mesafe //yapı tanımla { private: int metre; float cm; public: mesafe():metre(0),cm(0.0) { } mesafe(int met, float sant): metre(met), cm(sant) { } void degeral () { cout >metre; cout >cm; } void goster() {cout<< metre << " metre " << cm << " cm dir";} void toplauzun(mesafe,mesafe); //deklerasyon };

18 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz void mesafe::toplauzun(mesafe m2,mesafe m3) { cm=m2.cm +m3.cm; metre=0; if(cm>=100.0) { cm-=100.0; metre++; } metre+=m2.metre+m3.metre; }

19 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz int main(int argc, char *argv[]) { mesafe mesafe1,mesafe3; mesafe mesafe2(5,4.3); mesafe1.degeral(); mesafe3.toplauzun(mesafe1,mesafe2); cout<<" \n mesafe1= ";mesafe1.goster(); cout<< "\n mesafe2= "; mesafe2.goster(); cout<< "\n mesafe3= "; mesafe3.goster(); cout<

20 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Program mesafe1,mesafe2 ve mesafe3 nesnelerini oluşturmakta, mesafe1 nesnesi degeral() üye fonksiyonunu çağırarak değer atamakta, mesafe2 ise kurucu fonksiyon ile ilk değer atanmakta. Mesafe üç ise toplauzun() üye fonksiyonu ile yapılan işlem sonucunda değer almaktadır. mesafe() fonksiyonu aşırı yüklenmiş bir fonksiyondur. mesafe():metre(0),cm(0.0) { } mesafe(int met, float sant): metre(met), cm(sant) { }

21 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz …. mesafe mesafe1,mesafe3; mesafe mesafe2(5,4.3); mesafe1.degeral(); cout<< "\n mesafe3= "; mesafe3.goster(); mesafe3.toplauzun(mesafe1,mesafe2); cout<<" \n mesafe1= ";mesafe1.goster(); cout<< "\n mesafe2= "; mesafe2.goster(); cout<< "\n mesafe3= "; mesafe3.goster(); cout<

22 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz Sınıfın dışında üye tanımlama Sınıfın dışındada üye fonksiyon tanımlana bilir. Örnekteki toplauzun() sınıfın dışında tanımlanmış üye fonksiyondur. void mesafe::toplauzun(mesafe m2,mesafe m3) { cm=m2.cm +m3.cm; metre=0; if(cm>=100.0) { cm-=100.0; metre++; } metre+=m2.metre+m3.metre; }

23 SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz void mesafe::toplauzun(mesafe m2,mesafe m3) Dönüş tipi Fonksiyonun üyesi olduğu sınıf Kapsam çözünürlük operatörü Fonksiyon adı Fonksiyon argümanları


"Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz." indir ppt

Benzer bir sunumlar


Google Reklamları