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ć