C++ kurs programowania obiektowego (#4) zacznij myśleć obiektowo, obiekty

Zacznij myśleć obiektowo

Co to w ogóle jest programowanie obiektowe? To taki wzorzec (sposób) tworzenia kodu (programu), który polega na definiowaniu przez programistę obiektów i zarządzaniu komunikacją tych obiektów w celu wykonania jakiegoś konkretnego zadania (osiągnięcia założonego celu).

Po co nam w ogóle ta obiektowość? Kiedy zaczynamy swoją przygodę z programowaniem, najczęściej zaczynamy od podejścia proceduralnego i często przy małych projektach na początku nie widzimy potrzeby korzystania z programowania obiektowego. W miarę upływu czasu kiedy nasze potrzeby rosną ale rośnie także nasza świadomość programisty, zaczynamy zauważać pewne ograniczenia i szukamy innych rozwiązań. Nie będę w tym miejscu w punktach wymieniał zalet jakie zyskujesz dzięki programowaniu obiektowemu, będziemy je odkrywać z każdą kolejną częścią tego kursu i sam zauważysz zalety takiego podejścia.

Najfajniejsze w tym wszystkim jest to, że zasady dotyczące „obiektowości” przedstawione w tym kursie będą miały zastosowanie wszędzie nie tylko w C++.

Jeżeli nie zrozumiesz „obiektowości” od razu, nie zrażaj się tylko przeczytaj daną część nawet kilkukrotnie do pełnego zrozumienia danego tematu a uwierz mi Twoja cierpliwość będzie nagrodzona J Może nawet uznasz, że wiedza którą próbujesz przyswoić zupełnie nie jest do niczego potrzebna a poszczególne jej fragmenty nie łączą się ze sobą, to nie zniechęć się, bo w trakcie pracy z tym kursem dojdziesz do wniosku, że to jednak ma sens, że nagle poszczególne kawałki zaczynają się łączyć w większą całość jak układanie puzzli. Tego Ci życzę 🙂

Obiekty

Pierwszym pojęciem jakie poznamy to obiekt. Kiedy mówimy obiekt od razu staje nam przed oczami jakiś realny przedmiot np. smartfon, telewizor, auto itd. Jest to jak najbardziej poprawne skojarzenie bo to są dobre przykłady obiektów. Każdy z tych obiektów ma jakieś właściwości które go cechują (opisują). Te właściwości nazywamy cechami, rzadziej atrybutami lub po prostu właściwościami. Poniżej przykład cech  opisujących obiekt smartfon.

Obiekt: smartfon

Cechy:

  • waga
  • szerokosc
  • wysokosc
  • grubosc
  • ile_cali
  • bateria

Poprzestańmy na tylu cechach, oczywiście moglibyśmy pewnie znaleźć jeszcze kilka ale myślę, że na nasze potrzeby to wystarczy.

Taki opis wystarczy nam ludziom bo my wiemy jakie dane (typy danych) można by było przypisać  tym cechom, ale dla komputera nie jest to wystarczające i musimy mu określić jakie typy danych mogą się znaleźć w poszczególnych cechach np.

  • int waga; // wyrażona w g
  • szerokosc;  // wyrażona w mm
  • wysokosc;  // wyrażona w mm
  • grubosc;  // wyrażona w mm
  • ile_cali;  // wyrażone w calach
  • bateria;  // pojemnosc baterii mierzona w mAh

gdzie int oznacza liczbę całkowitę a float liczbę zmiennoprzecinkową. PAMIĘTAJ w C++ po określeniu cechy dajemy znak średnika ‘;’.

Ktoś powie,  że niektóre z ww. wymiarów powinny być typu float np. szerokość, przecież szerokośc smartfona może być liczbą zmiennoprzecinkową. Tak to prawda jeżeli chcemy aby szerokość była wyrażona w centymetrach, ale jeżeli chcemy ją już wyrazić w milimetrach to już możemy korzystać z typu int. Widzisz więc, że typ danych dla poszczególnej cechy będzie uzależniony od jednostek w jakich będziemy wyrażać jej wartość.

Do tej pory zajmowaliśmy się obiektami rzeczywistymi, czyli realnymi przedmiotami. Może się zdziwisz ale obiekty mogą być także abstrakcyjne, czyli nienamacalne. Przykładem takiego obiektu może być np. sen. Czy jest to coś namacalnego? Nie. A czy może być obiektem który posiada  cechy? Tak. Cechami snu mogą być np. właściciel snu, treść snu, częstotliwość powtarzania się snu, ładunek emocjonalny snu itd. Pewnie dużo częściej będziesz spotykał się z tymi realnymi obiektami ale chcę żebyś wiedział, że te abstrakcyjne także istnieją.

Na razie poznaliśmy cechy obiektów czyli określenie ich stanu. Oprócz tego możemy określić jego zachowanie, czyli wykonywanie przez ten obiekt jakichś czynności, zadań np. smartfon: dzwonienie, odbieranie SMS-ów, budzenie (funkcja budzika); np. pralka: pranie, wirowanie, suszenie itd. Określenie takich zadań nazywamy metodami. Metoda to nic innego jak funkcja wewnątrz klasy, która służy do zdefiniowania zadania wykonywanego przez nasz obiekt z wykorzystaniem cech, które ma ten obiekt.

Przykład metody dla obiektu Smartfon

int CzasPracy(parametry)

{

   // obliczenia na parametrach

   return czas;

}

Spójrz na powyższy przykład. Zdefiniowaliśmy metodę CzasPracy, która ma za zadanie, na podstawie pobranych parametrów, obliczyć (oczywiście szacunkowo) jak długo będzie działał nasz smartfon. Na razie w miejsce parametrów i obliczeń nic nie podstawiam. Chcę żebyś zrozumiał najpierw zasadę technikaliami zajmiemy się w dalszej części kursu.

Teraz trzeba to ubrać w jaką bardziej formalną postać (definicję). Taką definicją jest klasa, to taki opis (schemat) za pomocą którego komputer wie później jak utworzyć dany obiekt.

W kolejnej części dowiesz się jak się tworzy klasę i jak później za pomocą tej klasy tworzymy konkretny egzemplarz danego obiektu.


c++ kurs programowania obiektowego spis treści  c++ kurs programowania obiektowego spis treścic++ kurs programowania obiektowego spis treści