Zanim wejdziesz w nowy wymiar
Zanim podejmiesz się nauki programowania obiektowego, musisz uświadomić sobie kilka bardzo ważnych rzeczy, które nadadzą Ci kierunek dalszej nauki C++.
Oceń swoje obecne umiejętności posługiwania się C++
Wszystko co do tej pory zostało omówione, stanowi wiedzę podstawową. Jeśli umiesz biegle posługiwać się wszystkimi zagadnieniami jakie zostały do tej pory omówione, warto zacząć pogłębiać tajniki C++, ucząc się programowania obiektowego.
Jakie są zalety programowania obiektowego
W bardzo dużym uogólnieniu programowanie obiektowe umożliwia organizowanie kodu źródłowego w sposób bardziej przyjazny dla programisty. Jest to podstawowa własność programowania obiektowego, która generalnie sprowadza się do tego, aby zamknąć coś w 'pudełko' i posługiwać się pudełkiem, a nie porozrzucanymi częściami (funkcjami i zmiennymi) naszego programu.
Kiedy będziesz wiedział, że jesteś gotowy zacząć się uczyć programowania obiektowego
Jeśli potrafisz wymyślić program, który coś będzie robił i jeśli ten program będzie wykorzystywał napisane przez Ciebie funkcje i stwierdzisz, że trochę niedopracowana jest organizacja kodu w C++, to będzie to najwyższa pora na to, żeby zacząć się uczyć programowania obiektowego.
Jak zbudowana jest klasa w C++
Klasa w bardzo dużym uogólnieniu przypomina definicję struktury. Jej zapis wygląda następująco:
class NazwaTwojejKlasy
{
};
Jak się korzysta z klasy
Klasy wykorzystuje się w praktyce tak samo jak struktury. Przykład:
class TwojaKlasa
{
};
int main()
{
TwojaKlasa nazwaZmiennej;
return( 0 );
}
Prawa dostępu do klasy
Jeśli klasy deklaruje się tak samo jak struktury i jeśli wykorzystuje się tak samo jak struktury, możesz zacząć się zastanawiać czym tak naprawdę różni się klasa od struktury. Jeśli napiszemy następujący program:
class TwojaKlasa
{
int abc;
};
int main()
{
TwojaKlasa nazwaZmiennej;
nazwaZmiennej.abc = 10;
return( 0 );
}
i spróbujemy go skompilować, otrzymamy następujący błąd kompilacji:
In function `int main()':
`int TwojaKlasa::abc' is private
within this context
Domyślnie dostęp do wszystkich elementów klasy jest ustawiony na prywatny. Dostęp prywatny oznacza, że nie można wykorzystywać zmiennych i funkcji zadeklarowanych w klasie 'na zewnątrz', czyli poprzez użyty tutaj zapis:
nazwaZmiennej.abc=10;. Ze strukturami takiego problemu nie było, ponieważ przyjmują one domyślnie prawa dostępu publiczne dla wszystkich zadeklarowanych zmiennych wewnątrz struktury.
Słowa kluczowe private, protected, public
C++ umożliwia łatwe modyfikowanie praw dostępu do wybranych zmiennych i funkcji klasy. Służą do tego trzy słowa kluczowe:
private,
protected i
public.
Słowo kluczowe private
Słowo kluczowe
private oznacza dostęp do zmiennych i funkcji tylko z poziomu klasy. Nie są one widoczne poza klasą, więc użytkownik klasy nie będzie mógł uzyskać dostępu do zmiennej (lub funkcji) spoza klasy.
Słowo kluczowe protected
Słowo kluczowe
protected ma takie same własności co słowo kluczowe
private. Różnice pojawiają się tylko wtedy, gdy przyjdzie nam dziedziczyć klasy. Jeśli będziemy dziedziczyli klasę A do klasy B to zmienne oznaczone jako
private w klasie A będą niewidoczne dla klasy B. Jeśli zmienne (i funkcje) klasy A będą miały prawo dostępu
protected to takie zmienne (i funkcje) będą widoczne dla klasy B.
Słowo kluczowe public
Dostęp publiczny umożliwia uzyskiwanie dostępu do dowolnej zmiennej i funkcji z dowolnego miejsca w kodzie (jeśli oczywiście zachowana jest logika programowania w C++).
Jak się zmienia prawa dostępu w praktyce
Ustawianie praw dostępu jest bardzo prostą czynnością. Najprościej będzie to pokazać na przykładzie.
#include <string>
class TwojaKlasa
{
public:
double liczba;
char tablica[ 20 ];
private:
int abc;
char znak;
std::string napis;
};
int main()
{
TwojaKlasa nazwaZmiennej;
return( 0 );
}
Czy to koniec nauki o klasach
Widząc, że ten rozdział dobiega do końca, możesz mieć nieodparte wrażenie, że nic sensownego z tego rozdziału się nie dowiedziałeś. Wiedza, która została tu przedstawiona może być w Twoim odczuciu zbędna, co więcej możesz twierdzić, że zupełnie Ci się coś takiego nie przyda.
Rozdział ten stanowi tylko wstęp do programowania obiektowego. Kolejne rozdziały będą koncentrowały się już na praktycznym wykorzystaniu klas i będą pokazywały prawdziwe możliwości programowania obiektowego. Teoria, która została tu przedstawiona będzie wykorzystywana w każdym kolejnym programie wykorzystującym klasy.