Programowanie obiektowe w języku C++.Cz.1 Klasy oraz struktury

Cześć!

Dzisiaj zajmiemy się programowaniem obiektowym. Rozszyfrujmy na samym początku znaczenie tego sformułowania. Programowanie obiektowe - Programujemy w sposób obiektowy. Czyli używając obiektów. Czym jest obiekt?

Jest to reprezentacja szczegółowa klasy lub struktury. Zobaczmy na prosty przykład

class MyClass ///Przyjęło się nazywać nazwy klas z dużej litery
{



};///Średnik na końcu jest związany z bezpośrednim tworzeniem obiektu klasy. Ale o tym później

int main()
{

MyClass myClass;///Obiekt

}

Jak widzimy obiekt to reprezentacja klasy lub struktury(Zamiast class możemy wstawić struct. Zadziała w ten sam sposób). Wróćmy do klasy. Pojawia się pytanie:

Po co mi klasa ?

Do definiowania w jej wnętrzu metod(funkcji w klasie), oraz zamiennych.

Dlaczego klasa lub struktura, a nie porozrzucane po całym programie ?

Ta kwestia jest złożona. Pierwszym powodem dla którego warto stosować klasę jest porządek, ale to subiektywna kwestia. Najważniejszym jest to, że programowanie obiektowe jest najbliższe do pojęcia świata przez człowieka. Wyobraźmy sobie, że pracujemy jako mechanik samochody i dostajemy co miesiąc dostawy silników. Dla Nas ważne jest to, żeby to co dostaniemy działało tak jak chcemy. Czyli, żeby po włożeniu do samochodu sprawiało, że samochód Nam ruszy. Nas jednak nie interesuje w jaki sposób jest on wykonany. Dla Nas ważne jest to, że jeśli włożę zadziała. Podobnie jest z programowaniem obiektowym. Dostajemy klasę, która zamienia stringa na inta. Nas nie interesuje jak to jest złożone(choć jest ciekawe). Dla Nas ważne jest efekt jaki to uzyskuje.

Dla lepszego zrozumienia posłużmy się prostym przykładem.

struct MyStruct
{

void showValue(int value)
{

std::cout<<value<<'\n';

}

}myStruct;///Dzięki temu że jest średni można definiować obiekt bezpośrednio po nawiasach

int main()
{

myStruct.showValue(10);

}

showValue z obiektu myStruct pokazał Nam wartość 10.

I właśnie o to chodzi. Duża część wysokopoziomowych funkcji są klasami lub strukturami. Teraz rodzi się pytanie. Dlaczego użyłeś struct, a nie class. Spróbujmy to przerobić na klasę.

class MyClass
{

void showValue(int value)
{

std::cout<<value<<'\n';

}

}myClass;///Dzięki temu że jest średni można definiować obiekt bezpośrednio po nawiasach

int main()
{

myClass.showValue(10);

}

I co ? Nie działa. Wyskakuje komunikat, że showValue is private. Tutaj należy wskazać na różnice między struct, a class. Struct ma domyślnie atrubuty(zmienne) publiczne. Klasa ma prywatne. Czyli nie dostępne dla każdego. Klasa generalnie powinna służyć do bardziej złożonych deklaracji, natomiast struktura do prostych. Co musimy zrobić, że powyższy kod zadziałał ? Zmienić metodę showValue na dostępną dla każdego. Robi się to dzięki atrybutowi public. Tym zajmiemy się jednak w następnej lekcji

Komentarze

Popularne posty z tego bloga

Co dokładnie oznacza std::cout<<"Witaj Swiecie!"<<'\n''; w C++ ?

Klasy, Przestrzenie nazw, Nonlocal, Global i Local. Czy Python ma zmienne prywatne ?

Przeciążanie operatorów w C++