Serwis został przeniesiony pod nową domenę: http://cpp0x.pl/
PowrótPowrótHistoria odwiedzonych stron
Poprzednia lekcjaKurs C++Następna lekcja

XXIX. Klasy (obiekty)

29.1. 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++.

29.1.1. 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.

29.1.2. 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.

29.1.3. 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.

29.2. 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
{
  //w tym miejscu piszemy definicje typów, zmienne  i funkcje jakie mają należeć do klasy.
};//tutaj średnik jest bardzo ważny!

29.3. Jak się korzysta z klasy

Klasy wykorzystuje się w praktyce tak samo jak struktury. Przykład:

class TwojaKlasa
{
};

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

29.4. 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.

29.5. 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.

29.5.1. 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.

29.5.2. 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.

29.5.3. 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++).

29.6. 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;//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);
}

29.7. 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.



Poprzednia lekcjaKurs C++Następna lekcja

Wszelkie prawa zastrzeżone. Autor: Piotr Szawdyński
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści bez wyraźnej zgody jego autora jest zabronione.


PowrótPowrótHistoria odwiedzonych stron
Panel Logowania
Login:
Hasło:

Użytkowników
Obecnie aktywnych:26
Zalogowanych:0
Zarejestrowanych:4367
Ostatnie 24h:736
Non-cookie 24h:2138
Wszystkich:214808
Ostatnia Aktualizacja
2010-09-01 19:27:34 (6 dni temu)
Ostatnio aktywni
fish134 godz
wiewiorka10 godz
Koni10 godz
BuZuz10 godz
Prezmen13 godz
trupank13 godz
szczgl15 godz
filipesq15 godz
KRIIS55117 godz
kuba181717 godz
extra218 godz
pixelmaster19 godz

Wynajem Sopot - wakacje
Pokój 2 osobowy 130zł/doba;
Lokalizacja: Sopot


O portaluArchiwumHistoriaIndeksRegulaminWyszukiwarkaLinki
Kurs HTML - strona WWW za darmoRestauracja "ATOL" - SopotValid HTML 4.01 TransitionalValid CSS!HTML CSS JavaScript FLASH PHP MySQL