328 Dodatek A

być podzielona na kilka sekcji charakteryzujących się różnym stopniem dostępności dla pozostałych części programu. Najbardziej typowe jest używanie dwóch rodzajów sekcji: prywatnej i publicznej. W części prywatnej, na ogól umieszcza się informacje dotyczące organizacji danych (np. deklaracje typów i zmiennych), a w części publicznej, wymienia dozwolone operacje, które można na nich wykonywać. Operacje te mają, oczywiście postać funkcji, czyli - używając już właściwej terminologii - metod przypisanych klasie.

Spójrzmy na sposób deklaracji klasy, która w sposób dość uproszczony obsługuje tzw. liczby zespolone:

complexh

class Complex t

public:    //początek sekcji publicznej

Complex(double x,double y)//konstruktor klasy t

Ke=x;

Im=y;

)

void wypisz(!; // nagłówek funkcji która wypisuje // liczbę urojona

double Czesc_Rzecz!)// zwraca cześć rzeczywista (

return Re;

double Czesc_Uroj ()// zwraca cześć urojona (

return Im;

>

// nagłówek funkcji, która przedefiniowuje operator // + (plus) aby umożliwić dodawanie licz zespolonych: friend Complex& operator +(Complex,Complex);

// nagłówek funkcji, która przedefiniowuje operator // << aby umożliwić wypisywanie licz zespolonych: friend ostreami operator << (ostreami,Complex); private:    // początek sekcji prywatnej

double Re,Im;    //reprezentacja jako Re+j*Im

); // koniec deklaracji (i częściowej definicji)

// klasy Complex

Konstrukcja klasy Complex informuje o naszych intencjach:

•    wiemy, żc liczby zespolone są wewnętrznie widziane jako część rzeczywista i część urojona. Ponieważ sposób budowy klasy jest jej prywatną sprawą, informację o tym umieszczamy w sekcji prywatnej, która redukuje się w naszym przypadku do deklaracji zmiennych Re i Im;

•    z punktu widzenia obserwatora zewnętrznego (czyli po prostu użytkownika klasy), liczba zespolona jest to obiekt, na którym można wykonywać