Konstruktory |
Instrukcje i materiały do ćwiczeń - Podstawy programowania w C++ |
Wpisany przez Administrator |
Z tego artykułu dowiesz się:
Aby w sposób uporządkowany przyswoić wiedzę i umiejętności z tego artykułu upewnij się, że w pełni rozumiesz materiał z artykułu poprzedniego, dotyczącego struktur danych.
Na początek, w ramach przypomnienia, napiszmy prosty program bazujący na strukturze prostokąt. Struktura ta definiowana jest przez 3 pola: string kolor,int dlugosc_a, dlugosc_b.
Oto kod programu:
efekt uruchomienia programu:
Program działa i grupuje zmienne w struktury. Napiszmy także program, który definiuje tablicę (zbiór) 100 obiektów typu prostokąt i pozwala użytkownikowi wprowadzić wartości pól tych obiektów (prostokątów)
Efekt wywołania programu:
Programowanie obiektowe zostało bardzo uproszczone poprzez wprowadzenie tzw. Konstruktorów. Konstruktor to taki zbiór procedur, który jest nazwany tak, jak dana struktura i który tworzy nowy obiekt danej struktury definiując wartości jego pól. Konstruktory znacznie upraszczają programowanie dlatego, że wewnątrz konstruktora tylko raz definiujemy dowolną ilość procedur potrzebnych, aby stworzyć "ustawić" daną strukturę i używam ich dowolną ilość razy w programie, nie musząc za każdym razem powtarzać tych samych instrukcji. Jest to bardzo wygodne rozwiązanie i znacznie zmniejsza objętość programu. W naszym przypadku może być np. konstruktor, który podczas tworzenia nowego obiektu typu prostokąt nadaje mu jakieś domyślne wartości pól, np. kolor-zielony, wartości boków a = 2 oraz b= 4. Napiszmy taki program. Ćwiczenie 2: Napisz program, który używa konstruktora dla obiektu prostokat. Konstruktor nadaje domyślne wartości polom: string kolor: zielony, float bok_a = 3, bok_b = 4.
kod programu:
Efekt wywołanie programu:
Program tworzy zadany obiekt przyjmując parametry, które zdefiniował programista. Informacja o tym, jaki obiekt został stworzony jest wyświetlana w konsoli (czarnym oknie interfejsu tekstowego). Następnie można np. użyć kodu, który modyfikuje stworzony obiekt. System działałby tak: tworzony jest obiekt o parametrach domyślnych, a w dalszej części programu np. użytkownik może dowolnie zmienić wartości tych pól. Jednak konstruktory stworzono nie tylko po to, aby tworzyły (konstruowały) obiekty o domyślnych wartościach pól. Konstruktory mogą pobierać dowolne parametry i na podstawie tych parametrów tworzyć obiekt (strukturę). Takie parametry zapisuje się w nawiasie, zaraz po nazwie konstruktora. Przykład jest w programie poniżej: Ćwiczenie 3: Napisz program, w którym konstruktor tworzy nowy element danego typu otrzymując dane poprzez parametry konstruktora.
Jak widać program działa. Ma jednak jeden mankament: po co komu program, który tworzy z góry już zdefiniowany obiekt? O wiele lepszym programem byłby taki, który tworzył by obiekt prostokat o parametrach zadanych przez użytkownika. Czyli użytkownik decyduje o tym, jaki prostokat ma być wygenerowany. Ćwiczenie 3: Napisz program, który używa konstruktora dla obiektu prostokat. Program prosi użytkownika o podanie wartości pól struktury.
Program tworzy dokładnie taki obiekt, jaki zdefiniuje użytkownik.
Ćwiczenie 5: Napisz program, który tworzy obiekt o nazwie trojkat, o bokach a,b,c podanych przez uzytkownika. Dla wyjątkowo ambitnych: Program sprawdza, czy długości podane przez użytkownika w ogóle stworzą trójkąt (bok najdłuższy ma być krótszy niż suma dwóch pozostałych boków) Ćwiczenie 6: Napisz program, który tworzy macierz 10 obiektów o typu trojkat. Użytkownik Czyli użytkownik może stworzyć do 10 takich obiektów (może też stworzyć np.: 4), przy czym za każdym razem użytkownik musi podać długości boków a,b oraz c.
Można przeciążać konstruktory, czyli w jednej strukturze używać kilka rodzajów konstruktorów (np. jeden służy do tworzenia obiektów o wartościach domyślnych, drugi pobiera wartości pól z argumentów w nawiasie) i używać dowolnie każdego z nich w różnych miejscach programu. Oto przykład takiego programu:
Ćwiczenie 7: Napisz program, w którym przeciążono konstruktor struktury trojkat. Jeden konstruktor pobiera długości boków od użytkownika, drugi tworzy obiekt o wartościach domyślnych.
Podsumowanie: Konstruktory to zestawy procedur, które tworzą obiekt danego typu. Konstruktory mogą ustawiać parametry "domyślne" lub mogą pobierać te parametry jako argumenty w nawiasie. Dzięki temu jest możliwość, aby program lub użytkownik wprowadził dane potrzebne do stworzenia danego obiektu. Nie ma więc potrzeby, aby programista w momencie pisania programu znał wartości pól struktury. Można przeciążać konstruktory, czyli w jednej strukturze używać kilka rodzajów konstruktorów (np. jeden służy do tworzenia obiektów o wartościach domyślnych, drugi pobiera wartości pól z argumentów w nawiasie) i używać dowolnie każdego z nich w różnych miejscach programu.
|