SABİT NESNE VE ELEMAN FONKSİYONLAR VE ELEMAN NESNELER

Slides:



Advertisements
Benzer bir sunumlar
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
Advertisements

Göstericiler (Pointers)
SINIFLAR Yılmaz Kılıçaslan.
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
NESNEYE YÖNELİK PROGRAMLAMA KALITIM
Yığın ve Kuyruk.
void medyan(int cevap[]) { int j; siralama(cevap);
Nesneye Dayalı Programlama
Yeni C++ Standartları: C++0x
Nesneye Dayalı Programlama
C++’A GİRİŞ Yılmaz Kılıçaslan.
C++ STACK SINIFI.
SANAL FONKSİYONLAR VE ÇOK BİÇİMLİLİK
String Kütüphanesindeki Arama Fonksiyonları
Bölüm 10 Yapılar ve Birleşimler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR, NESNE DİZİLERİ Yılmaz Kılıçaslan.
Nesne Tabanlı Programlama
SINIFLAR GİRİŞ Yılmaz Kılıçaslan.
NESNEYE YÖNELİK PROGRAMLAMA
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
Fonksiyonlar.
KALITIM Yılmaz Kılıçaslan.
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Nesneye Dayalı Programlama
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Paralel Programlamaya Giriş
Nesne Yönelimli Programlama Dersi
FONKSİYONLAR.
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Nesne.
Derleyici Teorisine Giriş
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
JAVA’DA DÖNGÜLER.
Numaralandırmalar(Enumaration)
Kalıtım , Sınıf Asli Ergün.
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
Nesneye Dayalı Programlama
C++’a Giriş Yılmaz Kılıçaslan.
Sınıflar ve Nesneler Sınıf: bir nesnenin şablonunu, kalıbını, şeklini, davranışını, kalıtımını değişkenleri, metodları ve ebeveynleri vasıtasıyla tanımlar.
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ VE SINIFLARIN DİĞER ÖZELLİKLERİ Yılmaz Kılıçaslan.
KALITIM Yılmaz Kılıçaslan.
SANAL FONKSİYONLAR VE ÇOKBİÇİMLİLİK Yılmaz Kılıçaslan.
C++ Ders Notları 2.Ders (Dilin Yapısı)
C++ Ders Notları 3.Ders (String İşlemleri)
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
C++.
Paralel Programlamaya Giriş 2
SINIFLAR GİRİŞ Yılmaz Kılıçaslan. Sunum Planı  Bu derste sınıf mekanizmasını şu yönleriyle inceleyeceğiz: –Sınıf kavramının evrimine kısa bir bakış –Bir.
Görsel C# ile Windows Programlama
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ Yılmaz Kılıçaslan.
VERİ YAPILARI İşaretçi Nedir? Nesne Tabanlı Programlama.
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Veri yapıları Hafta3 Dizi Yapıları.
BİLGİSAYAR programlama II
Bilgisayar Programlama III C
Hafta2 Rekürsif Algoritmalar
KALITIM(INHERITANCE) Öğr.Gör. Murat ASLANYÜREK. KALITIM KAVRAMINA GİRİŞ  Kalıtım, sınıflardan yeni sınıflar türetmeyi sağlar.  Türetilen yeni sınıflar,
Sakarya Üniversitesi Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Prof. Dr. Ümit Kocabıçak Prof. Dr. Cemil Öz Doç. Dr. Ahmet Turan.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Fonksiyonlar ve Diziler
C’de Fonsiyonlar Aslı Ergün.
FONKSİYONLAR Programlamada fonksiyon kullanmanın en önemli sebebi kodların tekrar edilmesini engellemektir. Örneğin; karekök yada üsalma işlemi yapan bir.
YAPISAL PROGRAMLAMA Hafta-6
YAPISAL PROGRAMLAMA Hafta-7
Kurucular(Yapıcılar), Yıkıcılar
Karakter dizi fonksiyonları
Sunum transkripti:

SABİT NESNE VE ELEMAN FONKSİYONLAR VE ELEMAN NESNELER Yılmaz Kılıçaslan

Sunum Planı Bu derste sınıf mekanizmasını şu unsurlarını inceleyeceğiz: const nesneler ve eleman fonksiyonlar Eleman nesneler

const NESNELER VE ELEMAN FONKSİYONLAR - 1 Değişkenleri olduğu gibi nesneleri de const olarak bildirebilirsiniz: const Tarih dogum1( 7, 4, 1776 ); Bu tür bildirimler nesnenin sabit olduğu ve dolayısıyla hiçbir eleman sahasının değiştirilemeyeceği anlamına gelir. Bir değişkeni const olarak bildirdiğinizde, derleyici bu değişkenin değerini değiştirebilecek işlemleri tespit edip uygun hata mesajlarını üretebilir. Ancak, derleyici bir eleman fonksiyonun nesnenin eleman sahalarını değiştirip değiştiremeyeceğini belirleyemez. Bu nedenle, hiçbir (sıradan) eleman fonksiyon sabit bir nesne için çağrılamaz.

const NESNELER VE ELEMAN FONKSİYONLAR - 2 Eğer bir eleman fonksiyon nesnenin hiçbir eleman sahasını değiştirmiyorsa const olarak bildirilebilir ve bu şekilde sabit nesneler için çağrılabilir. const anahtar sözcüğü sabit fonksiyonların hem bildiriminde hem de tanımlanmasında, parametre listesinden sonra, yer alır. Sabit eleman fonksiyonlar ne nesnelerinin eleman sahalarını değiştirebilir, ne de sabit olmayan eleman fonksiyonları çağırabilirler. Eleman fonksiyonlarınızı mümkün olduğunca sabit olarak bildirmelisiniz. Bu, sınıfınızı kullananların sabit nesneler bildirmelerine izin verecektir.

const NESNELER VE ELEMAN FONKSİYONLAR - 3 class Tarih { public: Tarih( int mn, int dy, int yr ); int aySoyle() const; int gunSoyle() const; int yilSoyle() const; int ayBelirle( int mn ); int gunBelirle ( int dy ); int yilBelirle( int yr ); void goruntule() const; ~Tarih(); private: int ay, gun, yil; }; inline int Tarih::aySoyle() const { return ay; } // ... int i; const Tarih dogum1( 7, 4, 1776 ); i = dogum1.yilSoyle(); // Legal dogum1.yilBelirle( 1492 ); // Error

ELEMAN NESNELER - 1 Bir sınıf, nesneleri eleman olarak içerebilir. Bu şekilde diğer sınıfları bileşen olarak kullanma suretiyle yeni bir sınıf tanımlama işlemine “composition” denir: class KisiBilgisi { public: // Public eleman fonksiyonlar... private: char isim[30]; char adres[60]; Tarih dogumTarihi; }; dogumTarihi nesnesinin hiç argüman almaması doğrudan varsayılan yapıcı fonksiyonun çağrılacağı anlamına gelmez. dogumTarihi nesnesi KisiBilgisi sınıfından bir nesne yaratılıncaya kadar yaratılmaz.

ELEMAN NESNELER - 2 class KisiBilgisi Bir eleman nesne için yapıcı fonksiyon çağrımı, eleman nesneye ilk değer atamalarının yapılmasını gerektirir. Bunun icin yapılması gereken aşağıda örneklenmiştir: class KisiBilgisi { public: KisiBilgisi(char *nm, char *adr, int mn, int dy, int yr); // ... private: };

ELEMAN NESNELER - 3 KisiBilgisi::KisiBilgisi(char *nm, char *adr, int mn, int dy, int yr) :dogumTarihi( mn, dy, yr ) { strncpy( name, nm, 30 ); strncpy( adres, adr, 60 ); } İlk once Tarih sınıfının yapıcı fonksiyonu çağrılır; böylelikle dogumTarihi nesnesi ilk değerlerini KisiBilgisi sınıfının yapıcı fonksiyonu çalıştırılmadan alır.

Örnek #include <iostream> using namespace std; #define SIZE 100 // Stack sınıfı: class stack { int stack[SIZE]; int tos; public: stack(); // constructor ~stack(); // destructor void push(int i); int pop(); };

. . . // Yapici Fonksiyon stack::stack() { tos = 0; cout << "Stack Initialized\n"; } // Yikici Fonksiyon stack::~stack() cout << "Stack Destroyed\n";

. . . void stack::push(int i) { if(tos==SIZE) { cout << "Stack is full.\n"; return; } stck[tos] = i; tos++;

. . . int stack::pop() { if(tos==0) { cout << "Stack underflow.\n"; return 0; } tos--; return stck[tos];

. . . int main() { stack a, b; // iki stack nesnesi yaratildi a.push(1); b.push(2); a.push(3); b.push(4); cout << a.pop() << " "; cout << b.pop() << " "; cout << b.pop() << "\n"; return 0; }

. . . Program Çıktısı: Stack Initialized 3 1 4 2 Stack Destroyed

ÖZET Sabit nesnelerin eleman sahalarının değeri değiştirilemez ve bu sahalara yalnızca sabit oldukları bildirilmiş eleman fonksiyonlarla erişilir. Eleman nesnelerin yapıcı fonksiyonları, elemanı oldukları nesnenin yapıcı fonksiyonunun çağrılmasından hemen önce çağrılır.

Kaynaklar Booch, G. 1998. Object-Oriented Analysis and Design. Addison-Wesley. Programmer’s Guides, Microsoft Visual C++. Wegner, P. 1976. IEEE Transactions on Computers, December, 1207-1225.