İnternet Hizmetleri,Hosting Çözümleri
C / C++
C++’ta Sınıf Kavramı
8 May
C programlama dilinden, C++ Object Oriented yani Nesne Yönelimli programlama diline geçen arkadaşlarımızda genelde sınıf kavramının anlaşılmasında büyük güçlük çekilmektedir, oysaki günümüzde OOP (object oriented programming) diller en çok tercih edilen dillerdir bu yüzdende mutlaka sınıf kavramının çok iyi öğrenilmesi gerekmektedir.
Sınıf kavramını birden fazla şekilde açıklayarak iyice sindirilmesini sağlamaya çalışacağım.ilk olarak sınıfı bir paket olarak düşünmenizi istiyorum ve bu paket içinde hem verileri hem de fonksiyonları barındırıyor. Bu paket öyle bir paket ki nasıl çalıştığı hakkında bir fikriniz yok ancak sizin söylediklerinizi fonksiyonları varsa bu var olan fonksiyonlarla veriler üzerinde oynama yapabiliyor. Yani siz tutup direk veriyle oynayamıyorsunuz ancak fonksiyona (varsa) söylüyorsunuz oda veriye müdahale edebiliyor.
İkinci olarak sınıf deyince aklınıza bir araba gelsin ve siz de iyi bir şoförsünüz! Siz çok güzel araba kullanabiliyorsunuz değil mi? ama nasıl kullanıyorsunuz size verilmiş olan gaz fren ve debriyaj pedallarıyla (fonksiyonlar) peki siz motor nasıl işliyor araç nasıl gidiyor bir fikriniz var mı hayır yok ! işte class böyle bir şey siz verilen fonksiyonlarla classın verilerine gayet güzel ulaşırsınız ancak yetkileriniz sınırlıdır ve fonksiyonların nasıl işlediğini bilmeniz gerekmez..
Son olarak class diyince aklınıza birde bir kroki ve işçi gelsin. İşçiye verin krokiyi defalarca kullanıp size birçok ev yapsın. Peki sorun bakalım işçiye nasıl oluyor bu çizimler nasıl yapılıyor bir fikrin var mı diye? Hayır yok iç dizaynını bilmesi gerekmez işçinin burada önemli olan defalarca aynı krokinin yada taslağın kullanılabilme özelliÄŸidir tıpkı class’lar gibi. Bu yazının devamını okuyun »
Akış Ekleme Ve Akış Çıkarma Operatörlerini Aşırı Yüklemek
8 May
Bu örneğimde Akış ekleme (<<ve Akış Çıkarma (>>operatörlerini aşırı yüklemeye bir örnek yaptım.. Anlaşılmayan kısımları lütfen yorum olarak sorunuz..
#include <iostream> #include <string> #include <stdio.h> #include <iomanip> using namespace std; class telefonnumarasi{ friend ostream &operator<<(ostream& , const telefonnumarasi &; friend istream &operator>>(istream& , telefonnumarasi &; private: char alankodu[4]; char santral[4]; char hat[5]; }; ostream &operator<<(ostream &output, const telefonnumarasi &num) { output<<"("<<num.alankodu<<""<<num.santral<<"-"<<num.hat; return output; } istream &operator>>(istream &input,telefonnumarasi &num) { input.ignore(); input>>setw(4)>>num.alankodu; input.ignore(2); input>>setw(4)>>num.santral; input.ignore(); input>>setw(5)>>num.hat; return input; } int main() { telefonnumarasi telefon; cout<<"telefon numarasini (123) 456-7890 seklinde giriniz: \n"; cin>>telefon; cout<<"girilen telefon numarasi:"<<telefon<<endl; getchar();getchar(); return 0; }
Tekli (Unary) Operatörü Aşırı Yükleme
8 May
Bu örnegimizde operator overloading’e giriÅŸ yapıyoruz..Â
++ operatörünü kullanarak bir örnek yapacağız..
#include <iostream> #include <string> #include <stdio.h> using namespace std; class emre //emre diye bir classimiz var { private: int sayac; //sayac bizim veri üyemiz public: emre():sayac(0) /*kurucu fonksiyon (Constructor) sayac(0) sayaca ilk deger olarak 0 veriyor*/ {} inline int goster(){return sayac;} /*inline bir fonk var private olan sayaci bize bildiriyor*/ void operator++() /*iste operator yükleme kismi*/ { /* mainde ++ kullanildigi anda hemen buraya gel demis olduk*/ ++sayac; /*geldigindede sayaci 1 arttir */ cout<<"arttirdim"<<endl; /*sonrada arttirdim yaz bunu bilerek koydum herseyin keyfi oldugunu görün diye*/ } }; int main() { emre nesne1,nesne2; /*emre classinda 2 nesne tanimladim*/ cout<<"ilk nesnede ilk durum "<<nesne1.goster()<<endl; /*ilk durumlar bunlar */ cout<<"ikinci nesnede ilk durum "<<nesne2.goster()<<endl; /*neden 2 tane nesne tanimadim */ ++nesne1; /*2 nesne tanimlayinca hafizada 2 farkli nesnenn oldgunu ve */ ++nesne2; /*3 kere ++ yi kullandim demekki 3 kere arttirdim yazicak ekrana*/ ++nesne2; /*onlar üzerinde yapilan islemlerin kalici oldugunu görmeniz icin*/ cout<<"ilk nesnede son durum "<<nesne1.goster()<<endl; cout<<"ikinci nesnede son durum "<<nesne2.goster()<<endl; getchar();getchar(); return 0; }
Operator Overloading Geri Döndürme Tipi (İsimsiz Nesne)
8 May
Geri döndürme tipi olan bir operator overloading örneği..
#include <iostream> #include <string> #include <stdio.h> using namespace std; class Counter { private: int sayac; public: Counter():sayac(0) {} Counter(int c):sayac(c) //yeni bir constructor var burda {} int goster() {return sayac;} Counter operator ++() { ++sayac; return Counter(sayac); /*bunun constructor a ihtiyaci oldugu icin yukarda 2 constructor kullandim*/ } }; int main() { Counter c1,c2; cout<< "\n c1="<<c1.goster(); cout<< "\n c2="<<c2.goster(); ++c1; c2=++c1; cout<< "\n c1="<<c1.goster(); cout<< "\n c2="<<c2.goster()<<endl; getchar();getchar(); return 0; }
Tekli Operator Aşırı yüklemesine örnek
8 May
Tekli operator aşırı yüklemesine ++ ile bir başka bir örnek..
Bu örnegimizde Constructor’un 2 kez tanımlandıgına dikkat edelim.
#include <iostream> #include <string> #include <stdio.h> using namespace std; class Cplusplus { private: int sayac; public: Cplusplus():sayac(0) {} Cplusplus(int e):sayac(e) {} int goster() {return sayac;} Cplusplus operator++() { return Cplusplus(++sayac); } Cplusplus operator ++(int) { return Cplusplus(sayac++); } }; int main() { Cplusplus nesne1,nesne2; cout<<"ilk basta nesne1:"<<nesne1.goster()<<endl; cout<<"ilk basta nesne2:"<<nesne2.goster()<<endl; nesne1++; ++nesne2; cout<<"nesne1++ dan sonra :"<<nesne1.goster()<<endl; cout<<"++nesne2 dan sonra :"<<nesne2.goster()<<endl; getchar();getchar(); return 0; }







Yorumlar