Szukaj

1944

Reklama

Chroń swoje dziecko

w Internecie
Reklama

za darmo ...

Kalendarz

Reklama

Jak odbierasz ...

Wygląd portalu
 

"Musicie od siebie wymagać, nawet jeśli inni by od Was nie wymagali..." JP2 [100%]

Reklama
Konstruktory PDF Drukuj Email
Ocena użytkowników: / 4
SłabyŚwietny 
Instrukcje i materiały do ćwiczeń - Podstawy programowania w C++
Wpisany przez Administrator   

Z tego artykułu dowiesz się:

  1. Co to jest konstruktor;
  2. W jaki sposób wykorzystuje się konstruktory;
  3. Jakie są rodzaje konstruktorów.
  4. Po co potrzebny jest konstruktor, który nadaje polom wartości domyślne. Jak użyć takiego konstruktora?
  5. Kiedy i jak używamy konstruktora przyjmującego parametry?

 



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.