const objects & const member functions



Benzer belgeler
const objects & const member functions const objects ve const functions Data Member Initializer List Data Member Initializer List

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++ Dersi: Nesne Tabanlı Programlama

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

BTEP243 Ders 3. class Yazım Kuralı:

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

10/17/2007 Nesneye Yonelik Programlama 3.1

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama.

Yrd. Doç. Dr. Caner ÖZCAN

NESNEYE YÖNELİK PROGRAMLAMA

C++ ile Nesneye Dayalı Programlama

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

BİL-142 Bilgisayar Programlama II

Yrd. Doç. Dr. Caner ÖZCAN

Inheritance. Inheritance (turetim)

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

Object-Oriented Programming Laboratuvar 11

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Dersi: Nesne Tabanlı Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

1 PROGRAMLAMAYA GİRİŞ

Pointers (İşaretçiler)

Pointer Kavramı. Veri Yapıları

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

BİLG Dr. Mustafa T. Babagil 1

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

8. İŞARETCİLER (POINTERS)

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

YZM 2116 Veri Yapıları

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

C++ Operatörler (Operators)

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

ALGORİTMA VE PROGRAMLAMA II

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

NESNEYE YÖNELİK PROGRAMLAMA

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

11- FONKSİYONLAR (FUNCTIONS)

Göstericiler (Pointers)

BİL-142 Bilgisayar Programlama II

Veri Yapıları ve Algoritmalar dönem

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

The statement. const Time noon( 12, 0, 0 );

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

NESNE MODELLERİ : SINIFLAR

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

HSancak Nesne Tabanlı Programlama I Ders Notları

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Operatörlere İşlev Yükleme

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ü

Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading)

Ders 8: Metotlar. barisgokce.com

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Operator Aşırı Yükleme (Operator OverLoading)

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

Sunum İçeriği. Programlamaya Giriş

Hafta 13 Fonksiyonlar

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

C ++ Ders 6. Çoklubenzesim

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

C++ Dersi: Nesne Tabanlı Programlama

ELN1001 BİLGİSAYAR PROGRAMLAMA I

YZM 2105 Nesneye Yönelik Programlama

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Programlama Dilleri 3

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Lambda İfadeleri (Lambda Expressions)

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Kurucu Fonksiyonlar (Constructors)

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

Örnek1: #include <iostream> #include <string> using namespace std;

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Kalıtım (Inheritance)

BİL1001 Bilgisayar Bilimlerine Giriş 1

BMH-303 Nesneye Yönelik Programlama

Nesne Tabanlı Programlama

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

Transkript:

const objects & const member functions Principle of Least Privilege: Bir yazılım parçasına sadece kesin olarak ihtiyac duyulan karadar erişim izni verilmelidir. Bu yolla bir çok muhtemel hata yakalanabilir ve bu hatalardan sakınılabilinir. Değişkenler const olarak declare edilebilirler. Değişkenler ve fonksiyonlar için etki alanı kuralları. Veri üyeleri private olarak declare edilebilirler. Üye fonksşyonlar private olarak declare edilebilirler Nesneler const olarak (write protection) declare edilebilir Üye fonksiyonlar const olarak declare edilebilir Örnek: void printstandard( ) const; 10/31/2007 Nesneye Yonelik Programlama 7.1

const objects ve const functions Eğer bir nesne const olarak declare edilmişse, bütün çağrılan member function üye fonksiyonları hem fonksiyon deklarasyonu ve hem de fonksiyon tanımlamasında const olarak deklare edilmelidir. Non-const nesneler için, biri const diğeri nonconst olmak üzere aynı isimde iki üye fonksiyon tanımlamak mümkündür (Function overloading). const nesneler için const fonksiyon non-const nesneler için non-const fonksiyon çağrılır. Yapıcı ve yokedici fonksiyonlar const olarak tanımlanamazlar. 10/31/2007 Nesneye Yonelik Programlama 7.2

Data Member Initializer List Sınıfınbazı veri üyeleri için başlangıçdeğeri atama operatörü kullanılarakatamakmümkün olmayabilir Sabit veri üyeleri - const data members Referans veri üyeleri reference data members Varsayılan yapıcıya sahip olmayan nesneler C++ : kullanıma hazır hale getirme operatörü (initializer operator) kullanarak belirtilen sorun çözümlenebilir. 10/31/2007 Nesneye Yonelik Programlama 7.3

Data Member Initializer List Interface::Interface( int v) : ptr (new Implementation ( v ) ) { } // {ptr = new Implementation ( v ); } Bazı programcılar, normal atama işleminin mümkün olduğu durumlarda bile : notasyonunu tercih ederler. 10/31/2007 Nesneye Yonelik Programlama 7.4

Kompozisyon - Composition Nesneler diğer sınıfların nesnelerine veri üyeleri olarak sahip olabilirler. İki class arasındaki bu ilişkiye Bileşim (composition) denir. Nesne oluşturma sırası: İçeriden dışarıya doğru Nesne veri üyeleri class declaration sınıf deklarasyonundaki sıraya göre oluşturulurlar. Bir nesnenin veri üyeleri olarak deklare edilen object, ilgili bileşik nesneden önce oluşturulur. Nesneler ters sırada da yok edilirler. Veri üye nesneleri public olarak deklare etmek, nesnenin tanımı sırasında private olarak deklare edilen veri üyeleri public yapmaz. 10/31/2007 Nesneye Yonelik Programlama 7.5

Composition class denemea { private: int i; void member_function( );... }; class composite{ public: denemea a;... }; 10/31/2007 Nesneye Yonelik Programlama 7.6

friend functions & friend Classes C++ private üyeler (fonksiyon, veri) üzerine konan kısıtlamaları belli durumlarda kaldırılmasına izin verir. A sınıfınınn arayüz deklarasyonunda bir F fonksiyonu A sınıfının friend fonksiyonu olarak deklare edilebilir F fonksiyonu A sınıfının üye fonksiyonu değildir. F public veya private olarak tanımlanamaz F fonksiyonunun başka bir B sınıfının üyesi olma zorunluluğu yoktur (tüm sınıflardan bağımsız serbest bir fonksiyondur). B sınıfının tümü (tüm üye fonksiyonları) A sınıfının friend sınıfı olarak tanımlanabilir. 10/31/2007 Nesneye Yonelik Programlama 7.7

#include <iostream.h> using namespace std; örnek class Count { friend void setx (Count &, int); friend class Calendar; public: Count ( ) { x=0;} // constructor void print ( ) const { cout << x << endl; private: int x; // private data member // Define a friend function of class Count void setx (Count &c, int val) { c.x = val; // legall access to private data } 10/31/2007 Nesneye Yonelik Programlama 7.8

Örnek - devam int main( ) { Count counter; cout << counter.x after instantiation: ; // should be 0 counter.print ( ); cout << counter.x after call to << setx friend function: ; setx (counter, 8);// set x with a friend // should now be 8 counter.print ( ); } return 0; 10/31/2007 Nesneye Yonelik Programlama 7.9

this İşaretçisi Birsınıfın etki alanında this anahtar kelimesi bir sabit işaretçi olarak kullanılır. Bu anahtar kelime üye fonksiyonlar tarafından da kullanılabilir this sembolik sabit olarak düşünülebilir. Derleyiciler tarafından nesnenin üye fonksiyonları ve veri üyelerinin adreslerinin elde edilmesinde kullanılırlar. this işaretçi sınıf veri üyeleri ve fonksiyonlarına erişim için referanstan yarılarak (dereference) işlem yapılır. Örnek: this->printmilitary ( ); (*this).printstandard ( ); 10/31/2007 Nesneye Yonelik Programlama 7.10

#include <iostream> using namespace std; Örnek class Test { public: Test ( int =0);// default constructor void print( ) const; private: int x; }; Test::Test ( int a) { x = a; } 10/31/2007 Nesneye Yonelik Programlama 7.11

Örnek - devam void Test::print( ) const { cout << x = x << \n this->x = this->x << \n(*this).x = << (*this).x << endl; }; int main( ) { Test testobject ( 12 ); // create Test object testobject.print ( ); // use -> and. Forms return 0; } 10/31/2007 Nesneye Yonelik Programlama 7.12

Örnek - devam Date &Date::setMonth ( int month) { h = (month >=1 && month <=12 )? Month : 1; return *this; //to allow cascading } Date &Date::setDay (int day) { d = (day >=1 && day <=31 )? day : 1; return *this; // to allow cascading } Date &Date::setYear (int year) { y = (year >=1600? year : 1600; return *this; // to allow cascading } Date d; d.setmonth(12).setday(25).setyear(1998); 10/31/2007 Nesneye Yonelik Programlama 7.13

Dinamik Hafıza Tahsisi Dynamic Memory Allocation Array veri yapısı bazı dezavantajlara sahiptir: İhtiyaç duyulan nesnelerin sayısı dinamik olarak arttığı (azaldığı) durumlarda yetersiz kalırlar. Binary tree ler gibi kompleks veri yapıları için uygun degildirler. Bellek tahsilinde esnek degildirler. C++ new ve delete operatörleri ile hali hazırda var olan (built-in) veya kullanıcının kendi tasarladığı nesneleri var etme ve yok etmeye izin verirler. 10/31/2007 Nesneye Yonelik Programlama 7.14

new operator kullanımı new operatörü kullanınarak hafıza tahsisi yapılır: typename *typenameptr; // user-defined typenameptr = new TypeName; double *weightptr = new (55.7); int *arrayptr = new int [10]; Eğer var edilen bir sınıfın nesnesi ise o sınıfa ait uygun yapıcı çağrılır. Yeni var edilen nesneye işaret eden işaretçi geri dönduürülür. Bu işaretçi uygun tipe sahip bir değişkende saklanmalıdır. 10/31/2007 Nesneye Yonelik Programlama 7.15

delete operatörünün kullanımı Daha önce tahsis edilen hafıza alanını serbest bırakmak (de-allocate) için delete operatörü kullanılır: delete typenameptr; delete weight; delete [] arrayptr; // need the [] Sözü geçen sınıfın yok edicisi çağrılır. Nesnenin veri üyeleri için tahsis edilen hafıza alanı dinamik hafızaya geri verilir. Nesne işaretçileriyle bu geri verilen alana daha sonrar erişilmeye çalışılmamalıdır. 10/31/2007 Nesneye Yonelik Programlama 7.16

Çok boyutlu diziler ve işaretçiler Verilen kod #define ROWS 5 #define COLS 10 int array[rows][cols] Bireysel elemanlara şöyle erişilebilir: array[row][col] *( *(array+row) + col) 10/31/2007 Nesneye Yonelik Programlama 7.17

* ( * (array + row) + col) Bu ifadeyi hesaplamak için aşağıdakiler bilinmelidir: Dizinin ilk elemanının adresi bilinmelidir, bu array in ismi tarafindan belirlenir. Dizinin elemanlarının ait olduğu tipin boyu bilinmelidir (Örnek: sizeof(int) ) Dizinin 2. boyutu bilinmeli İlk boyut için (row) belirli bir indeks değeri İkinci boyut için (col) belirli bir indeks değeri 10/31/2007 Nesneye Yonelik Programlama 7.18

örnek // pointer to first element of array char **ArrayPtr; // allocation of the array of pointers to rows ArrayPtr = new int *[row]; // allocation of the column arrays for (int j=0; j<row; j++) ArrayPtr[j] = new int [col]; 10/31/2007 Nesneye Yonelik Programlama 7.19

static sınıf üyeleri Normalde bir sınıfa ait her nesne bütün veri üyeleri için kendi kopyasını tutar (genelde aynı sınıfın farklı nesnelerinin farklı durumları vardır). Bazı durumlarda verini aynı sınıfa ait tüm nesneler tarafından paylaşılmasını isteyebiliriz static veri üyeleri sınıfla ilişkilidir. Static veri üyeleri sınıfa ait nesneler mevcut olmasa dahi mevcuttur. static veri üyeleri global değişkenlere benzerler. Farki, sınıf etki alanına sahiptirler (dosya etki alanına değil) Static veri üyeleri public, private veya protected olarak tanımlanabilirler. 10/31/2007 Nesneye Yonelik Programlama 7.20

static class members public static veri üyelerine nasıl erişilir: sınıfın herhangi bir nesnesi yardımıyla Sınıf ismi, :: operatörü ve veri üyesinin ismi yardımıyla Private ve protected veri üyelerine nasıl erişilir: sınıfın herhangi bir nesnesi ve public üye fonksiyonu yardımıyla sınıfın friend fonksiyonlarıyla Sınıfın ismi, :: operatörü ve public üye fonksiyonu yardımıyla 10/31/2007 Nesneye Yonelik Programlama 7.21

static üye fonksiyonlar sınıfın üye fonksiyonları aşağıdaki koşullar sağlanırsa static olarak tanımlanabilir: sadece static veri üyelerine erişim sadece static fonksiyon üyeleri çağırır static member function ayni zamanda const olarak tanimlanamaz static üye fonksiyonları içerisinde this işaretçisi ile erişim yapılamaz 10/31/2007 Nesneye Yonelik Programlama 7.22

class Employee { public: Employee ( const char *, const char * ); ~Employee( ); const char *getfirstname ( ) const; const char *getlastname ( ) const; // static member function static int getcount ( ); private: char *FirstName; char *lastname; // static data Member static int employeecount; }; 10/31/2007 Nesneye Yonelik Programlama 7.23

Employee::Employee(const char *first, const char *last){ firstname = new char [strlen(first) + 1]; strcpy (firstname,first); lastname = new char [ strlen(last) +1]; strcpy(lastname, last); } // increment the static count of employees ++employeecount; 10/31/2007 Nesneye Yonelik Programlama 7.24

Employee::~Employee( ) { // no parameters allowed delete firstname; delete lastname; } // decrement the static count of employees --employeecount; static int Employee::getCount ( ) { return employeecount; } 10/31/2007 Nesneye Yonelik Programlama 7.25

// initialize the static data members int Employee::employeeCount = 0; int main ( ) { Employee *emplptr = new Employee ( Tom, Jones ); Employee *emp2ptr = new Employee ( Bob, Hope ); cout << The total number of employees is now: << emplptr->getcount( ); delete emp1ptr; emplptr = 0; delete emp2ptr; emp2ptr = 0; // recapture memory // null out the Employee pointer // recapture memory // null out the Employee pointer } cout << The total number of employees is now: << Employee::getCount( ) << endl; return 0; 10/31/2007 Nesneye Yonelik Programlama 7.26

Veri Soyutlama ve Bilgi Saklama Data Abstraction & Information Hiding Sınıflar soyut veri tiplerine destek verir. Bir soyut veri tipi iyi tanımlanmış erişim fonksiyonları ile veriye erişimi sağlar, verilere gelişi güzel erişimi yasaklar. Soyut veri tipi fikri C++ dan öncesine dayanır. Soyut veri tipleri bilgi saklama imkanı sağlar. Verinin nasıl uyarlandığına dair ayrıntılar kullanıcıdan gizlenir. 10/31/2007 Nesneye Yonelik Programlama 7.27

SVT olarak built-in data types C++ diger programlama dillerinde olduğu gibi gerçekte Soyut Veri Tipleri (SVT) olan hali hazırda var olan tiplere (built-in data types) sahiptir: Örnek: int, char, double, float Örnegin, C++ da int gerçekte bir tamsayının matematiksel notasyonunun yaklaşık temsilidir. Donanımtarafından kullanılan bit lerin sayısı sınırlı olduğundan, int belli bir aralıktaki tamsayıları temsil ederler: Genelde biz int in temsilinde kaç bit in kullanıldığını bilmeyiz Donanımda int işlemleriyle ilgili oprasyonlarınayrıntılarını bilmeyiz. 10/31/2007 Nesneye Yonelik Programlama 7.28

Diğer Yaygın Soyut Veri Tipleri Katar - String: Kopyalanabilen, birbirine eklenebilen, ve bir dizi değisik işlemlere tabii tutulabilen karakterlerin sıralı listesidir. Sıra - Queue: İlk giren ilk çıkar (first-in first-out) tarzıyla erişilebilen aynı tip data elemanlardan oluşan sıralı listedir. Yığın - Stack : Son giren ilk çıkar (last-in first-out) tarzıyla erişilebilen aynı tip elemanlardan oluşan sıralı listedir. Kapsayan sınıflar - Container classes: Soyut veri tipleri için genel bir terim ve asağıdaki servislere sahiptir: Veri ekleme (Data insertion), veri silme (data deletion), arama (searching), sıralama (sorting), üyeler için test etme (testing for membership), 10/31/2007 Nesneye Yonelik Programlama 7.29

Vekil sınıflar - Proxy classes Birsınıfın private detaylarına kullanıcıların erşimini tümü ile yasaklamak gerekebilir. Bu private kısmı içinde gerçek private üyeleri olan diğer bir sınıfa bir işaretçi tanımlayarak yapılır. Orijinal sınıfsaklı sınıfın vekil sınıfı (proxy class) olur. Kullanıcı sadece saklı sınıfa bir işaretçi görecektir, bundan fazlasını göremeyecektir. 10/31/2007 Nesneye Yonelik Programlama 7.30

Örnek: vekil sınıf - proxy class // Header file implementation.h // In this separate header file, define a class with // a completely hidden private section. class Implementation { public: Implementation (int v) {value = v;} void setvalue (int v) { value = v;} int getvalue( ) const { return value; } }; // users will see nothing beyond here private: int value; 10/31/2007 Nesneye Yonelik Programlama 7.31

// Header file interface.h // This header file can be made public Class Implementation; // Now declare the proxy class interface // Note: nothing private is disclosed class Interface { public: // declare dummy member functions Interface (int); void setvalue (int); int getvalue ( ) const; private: Implementation *ptr; // use a pointer }; 10/31/2007 Nesneye Yonelik Programlama 7.32

// File interface.cpp // Provided to users only as object code. // Need to include the two header files #include interface.h #include implementation.h // Call Implementation s constructor Interface::Interface( int v) { ptr = new Implementation ( v ); } // Call Implementation s setvalue function void Interface::setValue (int v) { ptr->setvalue (v); } // Call Implementation s getvalue function int Interface::getValue( ) const { return ptr->getvalue( ); } 10/31/2007 Nesneye Yonelik Programlama 7.33

// This file does not include implementation.h #include <iostream> #include interface.h int main( ) { Interface i ( 5 ); cout << Interface contains: << i.getvalue( ); << before setvalue << endl; i.setvalue ( 10 ); } cout << Interface contains: << i.getvalue( ) << after setvalue << endl; return 0; 10/31/2007 Nesneye Yonelik Programlama 7.34