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

const objects & const member functions const objects ve const functions • Principle of Least Privilege: Bir software parcasina sadece kesin olarak i...
Author: Volkan Akgül
6 downloads 0 Views 125KB Size
const objects & const member functions

const objects ve const functions

• Principle of Least Privilege: Bir software parcasina sadece kesin olarak ihtiyac duyulani ver. Bu yolla bir cok muhtemel hata yakalanabilir ve bu hatalardan sakinilabilinir – – – – –

variable lar const olarak declare edilebilirler variable ve function lar icin scope rules data member lar private olarak declare edilebilirler member function lar private olarak declare edilebilirler Object ler const olarak (write protection) declare edilebilir – member functions const olarak declare edilebilir Ornek: void printStandard( ) const; 11/10/2004

Nesneye Yonelik Programlama

7.1

Data Member Initializer List

• Eger bir object const olarak declare edilmisse, butun cagrilan member function lari hem function declaration hem de function definition da const olarak declare edilmeli • Non-const object ler icin, biri const digeri nonconst olmak uzere ayni isimde iki member function tanimlamak mumkun (Function overloading) – const objectler icin const function – non-const objectler icin non-const function

• constructor ve destructor function lar const olarak tanimlanamazlar 11/10/2004

Nesneye Yonelik Programlama

7.2

Data Member Initializer List Interface::Interface( int v) : ptr (new Implementation ( v ) ) { } // {ptr = new Implementation ( v ); }

• Class in bazi data member lari icin, baslangic degeri assignment operator u kullanilarak atamak mumkun olmayabilir – const data members – reference data members – default constructor e sahip olmayan objects

Bazi programcilar, normal assignment in mumkun oldugu durumlarda bile : notation ini tercih ederler

• C++ “:” initializer operator kullanarak belirtilen sorunu cozer 11/10/2004

Nesneye Yonelik Programlama

7.3

11/10/2004

Nesneye Yonelik Programlama

7.4

1

Composition

Composition

• Object ler diger class larin object lerine data member olarak sahip olabilirler. Iki class arasindaki bu iliskiye composition denir. • Order of object creation: From inside to outside – Object data member lari class declaration daki siraya gore create edilirler – Bir object in data member i olarak declare edilen object, ilgili composite object den once create edilir – Object ler reverse order da destroy edilirler

• Data member object i public olarak declare etmek, object in tanimi sirasinda private olarak declare edilen data member lari public yapmaz 11/10/2004

Nesneye Yonelik Programlama

7.5

11/10/2004

Nesneye Yonelik Programlama

7.6

#include using namespace std;

• C++ private member (function, data) lara olan kisitlamalari belli durumlarda kaldirilmaya izin verir • Class A nin interface declaration bir F function u class A nin friend i olarak declare edilebilir – F class A nin member function u degil – F public veya private olarak tanimlanamaz – F nin baska bir class B nin member i olma zorunlulugu yok (tum class lardan bagimsiz free bir function)

• Class B nin tumu (tum member functions) class A nin friend i olarak tanimlanabilir Nesneye Yonelik Programlama

class composite{ public: A a; ….. };

ornek

friend functions & friend Classes

11/10/2004

class A { private: int i; void member_function( ); ….. };

7.7

class Count { friend void setX (Count &, int); friend class Calendar; public: Count ( ) { x=0;} // constructor void print ( ) const { cout

Suggest Documents