Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

Podobne dokumenty
Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - OPERATORY BITOWE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Informatyka 1

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: KLASY I OBIEKTY, DANE I FUNKCJE SKŁADOWE, PRAWA DOSTĘPU, KONSTRUKTORY I DESTRUKTORY.

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Metodyki i techniki programowania

Spis treści JĘZYK C - ŚLEDZENIE WYKONANIA PROGRAMU, DEBUGGER. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, INSTRUKCJA WARUNKOWA IF. Informatyka 1

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05

dr inż. Jarosław Forenc

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Metodyki i techniki programowania

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

BHP JĘZYK C - INSTRUKCJE ITERACYJNE

Spis treści JĘZYK C - FUNKCJE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia MITP10

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

dr inż. Jarosław Forenc

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO. Informatyka 2

dr inż. Jarosław Forenc

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Spis treści OPERACJE WEJŚCIA-WYJŚCIA W JĘZYKU C++. STEROWANIE FORMATEM, MANIPULATORY. Informatyka 2

TEMAT : KLASY DZIEDZICZENIE

Języki i paradygmaty programowania

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, ZAGNIEŻDŻANIE IF-ELSE.

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Wykład 8: klasy cz. 4

Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Informatyka 2. Informatyka 2. Wykład nr 1 ( ) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2)

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

C++ Przeładowanie operatorów i wzorce w klasach

Programowanie - wykład 4

BADANIE ROZKŁADU TEMPERATURY W PIECU PLANITERM

Wykład 5: Klasy cz. 3

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO, TWORZENIE INTERFEJSU UŻYTKOWNIKA.

Mechanizm dziedziczenia

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Zaliczenie przedmiotu:

Spis treści JĘZYK C - TABLICE DWU- I WIELOWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05Z

Podstawy Programowania

Podstawy Programowania Obiektowego

Przeciążanie operatorów

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Metodyki i techniki programowania

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 1. Wprowadzenie, środowisko programistyczne, pierwsze programy

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

13 JĘZYK C - OPERATOR WARUNKOWY,

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Programowanie Obiektowe i C++

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wstęp do Programowania 2

Wprowadzenie do programowania i programowanie obiektowe

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie:

Podstawy algorytmiki i programowania - wykład 4 C-struktury

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Programowanie obiektowe i C++ dla matematyków

Podstawy Programowania Obiektowego

Do czego służą klasy?

POLITECHNIKA BIAŁOSTOCKA

Programowanie, część I

Do czego służą klasy?

PARADYGMATY PROGRAMOWANIA Wykład 3

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

PROE wykład 1. dr inż. Jacek Naruniec

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Podstawy Programowania Obiektowego

Programowanie Obiektowew języku C++ Zadania L4

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Wyliczanie wyrażenia obiekty tymczasowe

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie I C6

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Transkrypt:

Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne) Spis treści 1. Opis stanowiska... 3 1.1. Stosowana aparatura... 3 1.2. Oprogramowanie... 3 2. Wiadomości teoretyczne... 3 2.1. Funkcje zaprzyjaźnione z klasą... 3 2.2. Przeładowanie (przeciążanie) operatorów... 6 3. Przebieg ćwiczenia... 12 4. Literatura... 13 5. Zagadnienia na zaliczenie... 14 PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW 6. Wymagania BHP... 14 Numer ćwiczenia INF27 Autor: dr inż. Jarosław Forenc Białystok 2013 Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB. Wydział Elektryczny, Politechnika Białostocka, 2013 (wersja 1.0) Wszelkie prawa zastrzeżone. Żadna część tej publikacji nie może być kopiowana i odtwarzana w jakiejkolwiek formie i przy użyciu jakichkolwiek środków bez zgody posiadacza praw autorskich. Informatyka 2 2 z 15 Instrukcja INF27

1. Opis stanowiska 1.1. Stosowana aparatura Podczas zajęć wykorzystywany jest komputer klasy PC z systemem operacyjnym Microsoft Windows (XP/Vista/7). 1.2. Oprogramowanie Na komputerach zainstalowane jest środowisko programistyczne Microsoft Visual Studio 2008 Standard Edition lub Microsoft Visual Studio 2008 Express Edition zawierające kompilator Microsoft Visual C++ 2008. 2. Wiadomości teoretyczne 2.1. Funkcje zaprzyjaźnione z klasą Funkcja zaprzyjaźniona z klasą jest to funkcja, która nie będąc składnikiem klasy ma dostęp do wszystkich (także prywatnych) składników klasy. W poniższym programie znajduje się definicja klasy opisującej trójkąt. Klasa zawiera dwie dane składowe (a, h), konstruktor oraz dwie funkcje składowe. Funkcja drukuj() wyświetla na ekranie dane składowe klasy, zaś funkcja pole() oblicza pole trójkąta. Program zawierający definicję klasy opisującej trójkąt. #include <iostream> #include <cmath> using namespace std; class trojkat float a; float h; public: trojkat(float wa, float wh) : a(wa), h(wh) float pole(); void drukuj(); ; void trojkat::drukuj() cout << "<a=" << a << ",h=" << h << ">"; float trojkat::pole() return a * h / 2; int main() float wa, wh, p; cout << "Podstawa: "; cin >> wa; cout << "Wysokosc: "; cin >> wh; cout << "---------------------" << endl; trojkat T1(wa,wh); cout << "Trojkat: "; T1.drukuj(); cout << endl; p = T1.pole(); cout << "Pole: " << p << endl; Funkcja pole() jest funkcją składową klasy. Z tego względu nie są do niej przekazywane żadne argumenty. Funkcja składowa klasy jest zawsze wywoływana na rzecz konkretnego obiektu. p = T1.pole(); Funkcja pole() może być zdefiniowana jako funkcja zaprzyjaźniona z klasą. Kod źródłowy programu po wprowadzeniu odpowiednich zmian przedstawiony jest poniżej. Informatyka 2 3 z 15 Instrukcja INF27 Informatyka 2 4 z 15 Instrukcja INF27

Program zawierający definicję klasy trojkat i funkcję pole() zaprzyjaźnioną z klasą. #include <iostream> #include <cmath> using namespace std; class trojkat float a, h; public: trojkat(float wa, float wh) : a(wa), h(wh) void drukuj(); friend float pole(trojkat tr); ; void trojkat::drukuj() cout << "<a=" << a << ",h=" << h << ">"; float pole(trojkat tr) return tr.a * tr.h / 2; int main() float wa, wh, p; cout << "Podstawa: "; cin >> wa; cout << "Wysokosc: "; cin >> wh; cout << "---------------------" << endl; trojkat T1(wa,wh); cout << "Trojkat: "; T1.drukuj(); cout << endl; p = pole(t1); cout << "Pole: " << p << endl; Ponieważ funkcja pole() nie jest funkcją składową klasy, to nie jest wywoływana na rzecz określonego obiektu. Obiekt ten jest przekazywany do funkcji jako jej argument. Definicja funkcji wygląda następująco: float pole(trojkat tr) return tr.a * tr.h / 2; zaś jej wywołanie ma postać: p = pole(t1); Zaprzyjaźnienie funkcji z klasą następuje poprzez umieszczenie deklaracji przyjaźni w definicji klasy. Deklaracja taka zawiera nagłówek funkcji poprzedzony słowem kluczowym friend i zakończony średnikiem. friend float pole(trojkat tr); Nie ma znaczenia, w którym miejscu w definicji klasy pojawia się deklaracja przyjaźni (sekcja private, protected, public). Ta sama funkcja może przyjaźnić się z więcej niż jedną klasą. 2.2. Przeładowanie (przeciążanie) operatorów Przeładowanie operatora polega na nadaniu mu specjalnego znaczenia w momencie, gdy stoi on obok obiektu jakiejś klasy: obiekta operator obiektb Poniżej znajduje się deklaracja trzech obiektów (A, B, C) klasy NazwaK. Wykonanie operacji dodania obiektów A i B oraz przypisanie otrzymanej sumy obiektowi C wymaga przeładowania operatora +. W przypadku niektórych klas konieczne może być także przeładowanie operatora przypisania (=). NazwaK A, B, C; C = A + B; Informatyka 2 5 z 15 Instrukcja INF27 Informatyka 2 6 z 15 Instrukcja INF27

Operator przeładowuje się poprzez napisanie funkcji przedstawionej na Rys. 1. Funkcja przeładowująca operator może być zdefiniowana jako funkcja składowa klasy lub jako funkcja globalna. Załóżmy, że w celu wykonania operacji na dwóch obiektach pewnej klasy, przeładowywany jest operator @: obiekta @ obiektb Definicja funkcji przeładowującej operator w postaci funkcji składowej klasy będzie miała następującą strukturę: Rys. 1. Struktura funkcji przeładowującej operator Można przeładować praktycznie wszystkie operatory. Nie można wymyślać swoich operatorów ani zmieniać ich priorytetu. W każdej klasie automatycznie tworzone są operatory: - przypisania (=); - pobrania adresu (&); - new, new [], delete i delete [] (tworzenie i usuwanie obiektów). Aby przeładowanie było możliwe, jako co najmniej jeden z argumentów funkcji przeładowującej operator musi wystąpić obiekt klasy zdefiniowanej przez użytkownika. Ten sam operator można przeładować wielokrotnie, ale za każdym razem funkcja operatorowa musi mieć inny typ lub kolejność argumentów. NazwaK A, B, C; C = A + B; C = A + 5; C = 5 + A; W powyższym przykładzie, przeładowanie operatora + wymaga zdefiniowania trzech różnych funkcji. W pierwszym przypadku oba argumenty operatora są obiektami klasy NazwaK. W drugim przypadku po lewej stronie operatora znajduje się obiekt klasy NazwaK, zaś po prawej stronie - wartość standardowego typu int. W ostatniej instrukcji po lewej stronie operatora znajduje się wartość typu int, zaś po prawej stronie - obiekt klasy NazwaK. typ_zwracany NazwaK::operator @ (NazwaK obiektb)... Do funkcji przekazywany jest tylko jeden argument (obiektb), natomiast argument obiekta przekazywany jest przez wskaźnik this (funkcja operatorowa jest wywoływana na rzecz obiektu obiekta). Wynika stąd, że obiekt stojący po lewej stronie operatora musi być obiektem tej klasy. Dopuszczalne jest zatem przeładowanie operatora umożliwiające wykonanie operacji typu: obiekta @ obiektb obiekta @ inny_typ Nie jest natomiast możliwe wykonanie operacji typu: inny_typ @ obiekta W poniższym programie znajduje się definicja klasy trojkat, w której przeładowano operator +. Jako sumę dwóch trójkątów przyjęto trójkąt, którego długość podstawy i wysokość są sumami długości podstaw i wysokości dodawanych trójkątów. Funkcję przeładowującą operator zdefiniowano jako funkcję składową klasy. Informatyka 2 7 z 15 Instrukcja INF27 Informatyka 2 8 z 15 Instrukcja INF27

Przeładowanie operatora + w postaci funkcji składowej klasy. #include <iostream> #include <cmath> using namespace std; class trojkat float a, h; public: trojkat(float wa, float wh) : a(wa), h(wh) trojkat operator +(trojkat T2); void drukuj(); ; void trojkat::drukuj() cout << "<a=" << a << ",h=" << h << ">"; trojkat trojkat::operator +(trojkat T2) trojkat TW(0,0); TW.a = a + T2.a; TW.h = h + T2.h; return TW; int main() trojkat TR1(4,5), TR2(5,3), TR3(0,0); cout << "TR1: "; TR1.drukuj(); cout << endl; cout << "TR2: "; TR2.drukuj(); cout << endl; TR3 = TR1 + TR2; cout << "TR3: "; TR3.drukuj(); cout << endl; Wynik działania programu jest następujący: TR1: <a=4,h=5> TR2: <a=5,h=3> TR3: <a=9,h=8> Jeśli funkcja przeładowująca operator jest definiowana w postaci funkcji globalnej to powinna być zaprzyjaźniona z klasą. Jej struktura jest następująca: typ_zwracany operator @ (NazwaK obiekta, NazwaK obiektb)... Do funkcji przekazywane są dwa argumenty. obiekta jest argumentem stojącym po lewej stronie przeładowywanego operatora, zaś obiektb - argumentem stojącym po jego prawej stronie. Stosując przeładowanie w postaci funkcji zaprzyjaźnionej z klasą można wykonywać operacje typu: obiekta @ obiektb obiekta @ inny_typ inny_typ @ obiekta W przypadku programu zawierającego definicję klasy trojkat zmiana funkcji przeładowującej operator z funkcji składowej klasy na funkcję zaprzyjaźnioną z klasą wymaga zastąpienia deklaracji funkcji w definicji klasy przez deklarację przyjaźni: friend trojkat operator +(trojkat T1, trojkat T2); oraz zmianę samej definicji funkcji: trojkat operator +(trojkat T1, trojkat T2) trojkat TW(0,0); TW.a = T1.a + T2.a; TW.h = T1.h + T2.h; return TW; Informatyka 2 9 z 15 Instrukcja INF27 Informatyka 2 10 z 15 Instrukcja INF27

Jednym z częściej przeładowanych operatorów jest operator wstawiania danych do strumienia, czyli <<. W przypadku klasy trojkat przeładowanie tego operatora zastępuje funkcję drukuj(). Po lewej stronie operatora << występuje referencja do obiektu klasy ostream. W związku z tym funkcja przeładowująca operator może być zdefiniowana tylko jako funkcja zaprzyjaźniona z klasą. cout << "TR1: " << TR1 << endl; cout << "TR2: " << TR2 << endl; TR3 = TR1 + TR2; cout << "TR3: " << TR3 << endl; Program zawierający przeładowanie operatorów + oraz <<. #include <iostream> #include <cmath> using namespace std; class trojkat float a; float h; public: trojkat(float wa, float wh) : a(wa), h(wh) friend trojkat operator +(trojkat T1, trojkat T2); friend ostream & operator <<(ostream &ekran, trojkat T); ; trojkat operator +(trojkat T1, trojkat T2) trojkat TW(0,0); TW.a = T1.a + T2.a; TW.h = T1.h + T2.h; return TW; ostream & operator <<(ostream &ekran, trojkat T) ekran << "<a=" << T.a << ",h=" << T.h << ">"; return ekran; int main() trojkat TR1(4,5), TR2(5,3), TR3(0,0); 3. Przebieg ćwiczenia Na pracowni specjalistycznej należy wykonać zadania wskazane przez prowadzącego zajęcia. W różnych grupach mogą być wykonywane inne zadania. 1. W klasie TComplex (Instrukcja INF26, zadanie nr 2) dokonaj następujących zmian: - zastąp funkcję wyświetlającą liczbę zespoloną przeładowaniem operatora <<; - zastąp funkcję obliczającą i zwracającą sumę liczb zespolonych, funkcją przeładowującą operator +; - zastąp funkcję obliczającą i zwracającą różnicę liczb zespolonych, funkcją przeładowującą operator -; - zastąp funkcję obliczającą i zwracającą iloczyn liczb zespolonych, funkcją przeładowującą operator *; - zastąp funkcję obliczającą i zwracającą iloraz liczb zespolonych, funkcją przeładowującą operator /. 2. Zdefiniuj klasę TCena opisującą cenę produktu. Klasa powinna przechowywać, jako pola prywatne, cenę netto (Netto), stawkę VAT w procentach (VAT). W klasie powinny znaleźć się następujące funkcje: - konstruktor dwuargumentowy - zapisujący cenę netto i stawkę VAT, - konstruktor jednoargumentowy - zapisujący cenę netto i przyjmujący 23% jako stawkę VAT, - konstruktor domniemany - zapisujący wartość 0 jako cenę netto i 23% jako stawkę VAT, Informatyka 2 11 z 15 Instrukcja INF27 Informatyka 2 12 z 15 Instrukcja INF27

- funkcja getbrutto() zwracająca cenę brutto (funkcja składowa klasy, definicja funkcji umieszczona poza definicją klasy), - funkcja wyświetlająca cenę brutto w postaci xx.xx PLN (przeładowanie operatora <<), - funkcja getnetto() zwracająca wartość pola Netto (funkcja składowa klasy, definicja funkcji umieszczona wewnątrz definicji klasy), - funkcja getvat() zwracająca wartość pola VAT (funkcja składowa klasy, definicja funkcji umieszczona wewnątrz definicji klasy), - funkcja setnetto() zapisująca nową wartość pola Netto (funkcja składowa klasy, definicja funkcji umieszczona wewnątrz definicji klasy), - funkcja setvat() zapisująca nową wartość pola VAT (funkcja składowa klasy, definicja funkcji umieszczona wewnątrz definicji klasy), - funkcja Przecena(Procent) zmniejszająca cenę netto o Procent starej ceny netto, np. Przecena(50) zmniejsza cenę o połowę (funkcja składowa klasy, definicja funkcji umieszczona poza definicją klasy). Pokaż w programie zastosowanie wszystkich zdefiniowanych funkcji. 4. Literatura [1] Grębosz J.: Symfonia C++ standard: programowanie w języku C++ orientowane obiektowo. Tom 1 i 2. Wydawnictwo Edition 2000, Kraków, 2008. [2] Stroustrup B.: Programowanie. Teoria i praktyka z wykorzystaniem C++. Wydanie II poprawione. Helion, Gliwice, 2013. [3] Eckel B.: Thinking in C++. Edycja polska. Helion, Gliwice, 2002. [4] Prata S.: Język C++. Szkoła programowania. Wydanie VI. Helion, Gliwice, 2012. [5] Stroustrup B.: Język C++. Kompendium wiedzy. Helion, Gliwice, 2014. [6] Wileczek R.: Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows. Helion, Gliwice, 2009. [7] http://www.cplusplus.com/reference/ - C++ Reference 5. Zagadnienia na zaliczenie 1. Wyjaśnij, co to są i kiedy są stosowane funkcje zaprzyjaźnione z klasą. 2. Wyjaśnij na czym polega przeładowanie operatora w klasie. 3. Przedstaw różnice w definicji funkcji przeładowującej operator, w przypadku, gdy jest ona funkcją składową klasy i funkcją globalną. 6. Wymagania BHP Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest zapoznanie się z instrukcją BHP i instrukcją przeciw pożarową oraz przestrzeganie zasad w nich zawartych. W trakcie zajęć laboratoryjnych należy przestrzegać następujących zasad. - Sprawdzić, czy urządzenia dostępne na stanowisku laboratoryjnym są w stanie kompletnym, nie wskazującym na fizyczne uszkodzenie. - Jeżeli istnieje taka możliwość, należy dostosować warunki stanowiska do własnych potrzeb, ze względu na ergonomię. Monitor komputera ustawić w sposób zapewniający stałą i wygodną obserwację dla wszystkich członków zespołu. - Sprawdzić prawidłowość połączeń urządzeń. - Załączenie komputera może nastąpić po wyrażeniu zgody przez prowadzącego. - W trakcie pracy z komputerem zabronione jest spożywanie posiłków i picie napojów. - W przypadku zakończenia pracy należy zakończyć sesję przez wydanie polecenia wylogowania. Zamknięcie systemu operacyjnego może się odbywać tylko na wyraźne polecenie prowadzącego. Informatyka 2 13 z 15 Instrukcja INF27 Informatyka 2 14 z 15 Instrukcja INF27

- Zabronione jest dokonywanie jakichkolwiek przełączeń oraz wymiana elementów składowych stanowiska. - Zabroniona jest zmiana konfiguracji komputera, w tym systemu operacyjnego i programów użytkowych, która nie wynika z programu zajęć i nie jest wykonywana w porozumieniu z prowadzącym zajęcia. - W przypadku zaniku napięcia zasilającego należy niezwłocznie wyłączyć wszystkie urządzenia. - Stwierdzone wszelkie braki w wyposażeniu stanowiska oraz nieprawidłowości w funkcjonowaniu sprzętu należy przekazywać prowadzącemu zajęcia. - Zabrania się samodzielnego włączania, manipulowania i korzystania z urządzeń nie należących do danego ćwiczenia. - W przypadku wystąpienia porażenia prądem elektrycznym należy niezwłocznie wyłączyć zasilanie stanowiska. Przed odłączeniem napięcia nie dotykać porażonego. Informatyka 2 15 z 15 Instrukcja INF27