Począwszy od tego rozdziału będzie już bardzo przyjemnie 🙂 Choć to wcale nie oznacza, że łatwo 🙁 Po prostu struktury oraz klasy to typy danych, za pomocą których można znacznie ułatwić sobie programowanie. Wprowadzenie struktur stanowiło duży krok do przodu w dziedzinie programowania. Dzięki strukturom można w łatwy sposób tworzyć obiekty odzwierciedlające przedmioty z życia codziennego! Domyślasz się co to oznacza? Za ich pomocą można stworzyć niemal wszystko. Aby bardziej przybliżyć jaka jest z tego korzyść przytoczę mały przykład.
Załóżmy, że chcesz napisać małą gierkę. Niech to będzie mało znana gierka z gatunku tetris 🙂 Jak pamiętasz, pisanie programu powinno się rozpocząć od wcześniejszego obmyślenia. Należy więc przygotować jakieś zmienne opisujące planszę oraz klocki istniejące w grze. Plansze najlepiej zrealizować w formie tablicy. Z klockami jest już gorzej. Przecież w takich gierkach istnieje kilka rodzajów klocków. Powiedzmy, że jest ich 20 typów. Można traktować każdy klocek jak liczbę int, short czy long. Jednak co w sytuacji, gdy liczba klocków wzrośnie i wyniesie [będę okrutny 🙂 200]. Operowanie za pomocą numerków jest trochę niewdzięczne. Co więc robić? Jest rada. Najlepiej samemu zdefiniować sobie nowy typ danych opisujący konkretny klocek! Tutaj właśnie przydadzą nam się struktury. Czyż to nie wspaniałe?! Zobacz teraz jak się tworzy nowy typ.

To coś powyżej to definicja struktury. Każda definicja zaczyna się od słowa kluczowego struct. Następnie pojawia się konkretna nazwa. U nas będzie to klocek_kostka, klocek_dwie_kostki i klocek_trzy_kostki itp. Oczywiście w przypadku nazwy obowiązują te same reguły jak przy zmiennych i funkcjach. Ciało struktury, czyli jej zakres określany jest za pomocą klamer. Zauważ podobieństwo do definicji typu enum. Na koniec mały detal. Definicję struktury trzeba zakończyć średnikiem. Pozostało jeszcze wyjaśnić czym są składniki struktury. Składnikami są wszelkie obiekty, które charakteryzują dany obiekt. Dla typu klocek będzie to aktualne położenie, kolor, wygląd itp. Wybór składników zależy już od programisty. Zdefiniujmy zatem strukturę do przechowywania klocka.

Zdefiniowaliśmy sobie strukturę o nazwie klocek. Dzięki temu niejako rozbudowaliśmy C++ o nowy rodzaj danych. Obiekty typu klocek posiadają w sobie po trzy obiekty typu int. Pierwszy z nich to współrzędna 'x’, drugi współrzędna 'y’, a trzeci to kolor. Od teraz w dowolnym momencie możemy korzystać z obiektów typu klocek. Definicja wygląda następująco:

W przykładzie powołaliśmy do życia zmienną typu klocek o nazwie nasz_klocek. Oczywiście automatycznie zostały utworzone trzy zmienne typu int, będące składnikami klocka. Aby odnieść się do poszczególnych składników należy podać nazwę zmiennej [u nas jest to nasz_klocek], później trzeba napisać kropkę i nazwę konkretnego składnika. Wygląda to tak:

Tym sposobem zainicjalizowaliśmy wszystkie składniki klocka. Aby było prościej można to zrobić od razu przy definicji. Wówczas należałoby napisać tak:

Przy takim definiowaniu pamiętaj o właściwej kolejności. Liczba 20 zostanie wstawiona do pierwszego składnika klocka, liczba 30 do drugiego, a liczba 2 do trzeciego. Oczywiście nie trzeba podawać tutaj wszystkich danych. Jeżeli kolor klocka [trzeci składnik] w momencie definiowania jest nieistotny, to można usunąć z przykładu liczbę 2. Wówczas kolor klocka będzie przypadkową liczbą. Chyba jest to zrozumiałe. W strukturze mogą istnieć dowolne zmienne. Można nawet umieścić tam tablice lub wskaźniki. Liczba składników nie ma znaczenia. To już zależy od przeznaczenia samej struktury. Struktury posiadają jeszcze jedną bardzo przydatną cechę. Wszelkie nazwy użyte wewnątrz struktury są znane jedynie w jej wnętrzu. Zatem nie musisz dbać o unikalność nazw. Jak widzisz nie jest to aż takie trudne, a korzyść jest ogromna. Obecnie udział struktur w programowaniu zaczyna być coraz mniejszy. Zostały one wyparte przez klasy, którymi się teraz zajmiemy.

Autor: Kesay

[Artykuł pochodzi ze strony guidecpp.prv.pl, autor wyraził zgodę na publikację]