background image

P

ROGRAMOWANIE 

O

BIEKTOWE 

 

L

ABORATORIUM 

 

Ć

WICZENIE 

5

 

 

W

PROWADZENIE DO POLIM

ORFIZMU I PRZECIĄŻANIA OPERATORÓW

 

 

 

Celem  ćwiczenia  jest  zapoznanie  się  z  jednym  z  podstawowych  filarów  programowania 
obiektowego (polimorfizmu) oraz z 

przeciążaniem operatorów w języku C++.  

1. 

Należy stworzyć 2 klasy macierz i wektor 

 

a. 

Każda  klasa  powinna  zawierać  3  konstruktory  i  destruktor.  Konstruktor 
podstawowy  powinien  przyjmować  parametry  wielkości  macierzy/wektora, 
natomiast  drugi  konstruktor  powinien 

zawierać  dodatkowo  wskaźnik  na 

macierz/wektor 

inicjalizujący elementy w tworzonej klasie. Ostatni konstruktor to 

konstruktor  kopiujący,  który  powinien  stworzyć  nowy  obiekt  wykorzystując 
informacje o obiekcie kopiowanym. 

b. 

Klasa musi zawierać metody dostępowe do wartości macierzy/wektora oraz jego 
rozmiarów, 

c. 

Klasa  powinna  zawierać  metody  pozwalające  na  dodawanie,  odejmowanie, 
mnożenie i dzielenie macierzy/wektorów, 

d. 

Każda  z  metod  powinna  być  napisana  kilka  razy  (musi  mieć  te  same  nazwy  i 
inne  parametry)  tak  ab

y  można  było  wykonywać  operacje  zamiennie  pomiędzy  

klasą macierz i klasą wektor. 
 

2. 

W  każdej  klasie  należy  przeciążyć  operatory  dodawania,  odejmowania,  mnożenia  i 
dzielenia: 

 

a. 

Operatory  powinny  być  dostępne  publicznie  i  powinny  wywoływać  prywatne 
metody z zadania 1, 

b. 

W  miarę  możliwości  należy  mieszać  typy  parametrów  (np.  w  klasie  macierz 
można zrobić prawostronne mnożenie przez wektor), 

c. 

Należy zwrócić uwagę na typ zwracany przez operatory – powinien być to obiekt 
stworz

ony za pomocą konstruktora kopiującego. 

 

Uwagi: 

  W metodach klas n

ie wolno używać funkcji typu : printf, scanf, std::cout, std::cin. 

Warstwa prezentacji musi zostać zaimplementowana w pętli głównej (poza klasą), 

 

W plikach nagłówkowych (*.h) nie wolno zawierać źródła/rozwinięcia funkcji i metod 
klasowych (dotyczy to także konstruktorów i destruktora), 

 

Powyższe uwagi obowiązują na wszystkich laboratoriach.