niedziela, 23 marca 2014

Klasy C/C++

Jak zbudowana jest klasa w C++

Klasa w bardzo dużym uogólnieniu przypomina definicję struktury. Jej zapis wygląda następująco:
C/C++
class NazwaTwojejKlasy
{
    //w tym miejscu piszemy definicje typów, zmienne  i funkcje jakie mają należeć do klasy.
}; //tutaj średnik jest bardzo ważny!

Jak się korzysta z klasy

Klasy wykorzystuje się w praktyce tak samo jak struktury. Przykład:
C/C++
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:
C/C++
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.
C/C++
#include <string>
class TwojaKlasa
{
public:
    double liczba; //prawo dostępu: publiczne
    char tablica[ 20 ]; //prawo dostępu: publiczne
   
private:
    int abc; //prawo dostępu: prytatne
    char znak; //prawo dostępu: prytatne
    std::string napis; //prawo dostępu: prytatne
};

int main()
{
    TwojaKlasa nazwaZmiennej;
    return( 0 );
}

Brak komentarzy:

Prześlij komentarz