26.1 Klasy w C++, Programowanie, Klasa III


Co to jest klasa?

Klasa to jedno z podstawowych pojęć każdego języka obiektowego, jakim również jest C++. Sens języków obiektowych skupia się wokół pojęcia "obiektu". W klasycznym języku C odpowiednikami obiektów były zmienne, tablice, wskaźniki, struktury itd. Każdy "obiekt" należy do jakiejś klasy. Klasa jest więc pewnym rozszerzeniem klasycznych typów jak int czy double.

Definicja klasy:

class osoba
{
public :
  char imie[20];
  char nazwisko[30];
  int wiek;
};

Definicja instancji:

osoba prezes;

Odwołanie:

prezes.imie = "Grzegorz";
prezes.nazwisko = "Schetyna";
prezes.wiek = 49;

Funkcje wewnątrz klas

Klasy, oprócz pól składowych znanych typów, oferują również funkcje, które mogą operować na poszczególnych składnikach. Funkcje składowe klasy są również zwane metodami, jako, że ich istotą jest zazwyczaj wykonanie pewnej czynności na obiekcie. Przykład takiej funkcji podano poniżej.

class osoba
{
public:
  char imie[20];
  char nazwisko[30];
  int wiek;
  void przedstaw_sie()
  {
    cout << imie << " " << nazwisko << endl;
  }
};

Kiedy już mamy zadeklarowany obiekt klasy osoba, możemy wywołać na nim funkcję zdefiniowaną wewnątrz definicji klasy.

osoba prezes;

...

prezes.imie = "Grzegorz";
prezes.nazwisko = "Schetyna";
prezes.przedstaw_sie();

Nietrudno zgadnąć co pojawi się na ekranie. Treść funkcji oczywiście nie musi znajdować się wewnątrz definicji klasy. W definicji wystarczy deklaracja funkcji (poprzez zamieszczenie nagłówka), zaś treść może znajdować się w dowolnym innym miejscu programu (poprzez operator ::). w praktyce wyglądałoby to następująco:

class osoba
{
public:
  char imie[20];
  char nazwisko[30];
  int wiek;
  void przedstaw_sie();
};

...

void osoba::przedstaw_sie()
{
  cout << imie << " " << nazwisko << endl;
}

...

prezes.imie = "Grzegorz";
prezes.nazwisko = "Schetyna";
prezes.przedstaw_sie();

Zakres ważności składników klasy

Drugim, niezmiernie ważnym wyróżnikiem klas jest możliwość kontrolowania zakresu "widoczności" poszczególnych pól składowych. Odpowiedzialne są za to trzy słowa kluczowe, inicjujące nowe sekcje wewnątrz definicji klasy:

private :
public :
protected :

Przed podaniem definicji tych słów kluczowych, warto przyjrzeć się krótkiemu przykładowi:

class osoba
{
public :
  char imie[20];
  char nazwisko[30];
  void przedstaw_sie()
  {
    cout << imie << " " << nazwisko << endl;
  }
  int czy_dobry_pin(int pin2)
  {
    if (pin2 == pin) return(1);
  }

private :
  char numer_konta[50];
  int pin;
};

Krótka analiza powyższej definicji klasy osoba z pewnością rozwieje wiele wątpliwości. Użytkownik klasy może sprawdzić imię i nazwisko danej osoby. Może również poprosić ją
o przedstawienie się. Na koniec może też sprawdzić czy podany PIN jest prawidłowy, nie ma jednak bezpośredniego dostępu do PINu, ani do numeru konta. Pomimo intuicyjności słów "private" i "public", potrzebne jest jednak doprecyzowanie znaczenia każdej sekcji.

Zakresy ważności

private

Składniki są widoczne tylko wewnątrz danej klasy. W praktyce oznacza to, że tylko funkcje danej klasy mogą czytać i zapisywać tego typu składniki. Funkcja wewnątrz tej sekcji może być wywołana tylko z innej funkcji aktualnej klasy. Jeśli składnik klasy nie jest objęty żadną sekcją, to domyślnie należy właśnie do sekcji private.

public

Składniki są widoczne wszędzie gdzie jest użyty obiekt danej klasy.

protected

Składniki są dostępne na nieco bardziej rozszerzonych zasadach niż private. Zakres widoczności jest poszerzony również o klasy wywodzące się z aktualnej klasy.



Wyszukiwarka

Podobne podstrony:
26.5 Klasy - dziedziczenie, Programowanie, Klasa III
23 - Funkcje, Programowanie, Klasa III
10. Operatory arytmetyczne, Programowanie, Klasa III
16a. Petla do while, Programowanie, Klasa III
11. Operatory relacji, Programowanie, Klasa III
2013.04.10 - 3a1 - kartk, Programowanie, Klasa III
12. Operatory logiczne, Programowanie, Klasa III
25.1 Struktury w C++, Programowanie, Klasa III
27.2 wskazniki - zadania, Programowanie, Klasa III
22 Procedury, Programowanie, Klasa III
15.1. Konsola + przestrzenie nazw, Programowanie, Klasa III
27.4 - zadanie, Programowanie, Klasa III
23 - Funkcje, Programowanie, Klasa III
KLASA III - PROGRAM KOLA PRZYRODNICZEGO semestr 1, Klub Miłośników Przyrody - kółko przyrodnicze kla
Zadania dla TRZECIEJ KLASY(1), szkoła, Matematyka, klasa III, zadania
powtórka z III klasy, MATEMATYKA klasa 4
KLASA III - PROGRAM KOLA PRZYRODNICZEGO semestr 1, Klub Miłośników Przyrody - kółko przyrodnicze kla
EDUKACJA POLONISTYCZA 3- sprawdzianik, !Nauka, klasa III
Klasa III SPRAWDZIAN (2)

więcej podobnych podstron