Programowanie Obiektowew języku C++ Zadania L4

Podobne dokumenty
Programowanie Obiektowew języku C++ Zadania L4

Programowanie Obiektowew języku C++ Zadania L2

Programowanie Obiektowew języku C++ Zadania L8

Programowanie Obiektowew języku C++ Zadania L2

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

Programowanie Obiektowew języku C++ Zadania L9

Podstawy programowania w języku C++ Zadania

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.

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

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory

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

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

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.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

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

Wstęp do Programowania 2

Programowanie proceduralne w języku C++ Podstawy

Plik klasy. h deklaracje klas

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

Techniki Programowania wskaźniki

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

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

Programowanie obiektowe

Wyliczanie wyrażenia obiekty tymczasowe

Operacje wejścia/wyjścia (odsłona druga) - pliki

Języki i paradygmaty programowania

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

Język C++ wykład VIII

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

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Wstęp do Programowania 2

Programowanie proceduralne w języku C++ Funkcje

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

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

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

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

Wprowadzenie do programowania i programowanie obiektowe

Wstęp do Informatyki

Tytuł pracy dyplomowej

TEMAT : KLASY POLIMORFIZM

Operacje wejścia/wyjścia odsłona pierwsza

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

Programowanie proceduralne w języku C++ Pętle, tablice

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

Podstawy Programowania Obiektowego

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

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

Wstęp do programowania

Mechanizm dziedziczenia

Operatory na rzecz typu TString

Wyjątki (exceptions)

Programowanie proceduralne w języku C++ Pojęcia podstawowe - kod źródłowy

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

Dziedziczenie & W slajdach są materiały zapożyczone z

Programowanie obiektowe w C++ Wykład 12

Podstawy programowania skrót z wykładów:

dr inż. Jarosław Forenc

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Podstawy Programowania Obiektowego

Programowanie 2. Język C++. Wykład 3.

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

Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Programowanie w językach

Techniki Programowania wskaźniki 2

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

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

Projektowanie klas c.d. Projektowanie klas przykład

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

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

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

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

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

Szablony funkcji i szablony klas

Programowanie obiektowe i C++ dla matematyków

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

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

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Część 4 życie programu

PARADYGMATY PROGRAMOWANIA Wykład 3

Rzutowanie i konwersje

Podstawy Programowania Podstawowa składnia języka C++

Wprowadzenie do szablonów klas

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Hermetyzacja oraz pola i metody statyczne

Programowanie - wykład 4

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

Język C++ zajęcia nr 1

I - Microsoft Visual Studio C++

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

Informacja o programowaniu w c++ Dr Maciej Bobrowski

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

1 Definiowanie prostych klas

Szablon klasy std::vector

Transkrypt:

Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki Stosowanej i Modelowania 2 Uniwersytet im. Jana Kochanowskiego w Kielcach Wydział Matematyczno-Przyrodnmiczy Instytut Fizyki Zakład Informatyki Listopad 2016 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 1 / 19

Spis treści 1 Zadanie L4-1 2 Zadanie L4-2 3 Podpowiedzi do zadań L4 4 Przykładowe rozwiązanie zadania L4-1 5 Przykładowe rozwiązanie zadania L4-2 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 2 / 19

Zadanie L4-1 Zdefiniować klasę complex tak, aby program Code wygenerował strumień wyjściowy Output przedstawiony na następnym przeźroczu. Code complex sumcmplint(complex c, int i){ return complex(c.re() + static_cast<double>(i),c.im()); int main(){ complex c(-3., -2.), *pc = &c, cmpl = c; cout << c.modul() << endl; int i = 7; double d = 3.72; cout << sumcmplint(c, i) << endl; cout << sumcmplint(*pc, d) << endl; cout << sumcmplint(cmpl, c) << endl; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 3 / 19

Zadanie L4-1 Klasa liczb zespolonych complex powinna zawierać następujące pola prywatne: Pola klasy class complex{ static int lp; const int nrcmpl; double re, im; double *modul; ; Output 5 (4, -2) (0, -2) (-6, -2) Wskaźnik modul powinien pokazywać na obszar pamięci, gdzie zapiany jest moduł liczby, który powinien być zwracany przez funkcję Modul() o dostępie publicznym Pole lp jest licznikiem powstających liczb zespolonych. Pole nrcmpl jest numerem liczby. Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 4 / 19

Spis treści 1 Zadanie L4-1 2 Zadanie L4-2 3 Podpowiedzi do zadań L4 4 Przykładowe rozwiązanie zadania L4-1 5 Przykładowe rozwiązanie zadania L4-2 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 5 / 19

Zadanie L4-2 Rozszerzyć definicję klasy complex tak, aby pole nrcmpl, które jest zwracane przez funkcję NrCmpl() było typu const, a program i strumień były następujące: int main(){ complex c(-3., -2.), *pc = &c, cmpl = c; cout << "Nr obiektu cmpl: " << cmpl.nrcmpl() << endl; char chr = 'D'; bool b = true; cout << sumcmplint(chr, chr) << endl; cout << sumcmplint(b, b) << endl; cout << "Liczba utworzonych obiektow complex: " << complex::lp() << endl; return 0; Nr obiektu cmpl: 2 (136, 0) (2, 0) Liczba utworzonych obiektow complex: 6 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 6 / 19

Spis treści 1 Zadanie L4-1 2 Zadanie L4-2 3 Podpowiedzi do zadań L4 4 Przykładowe rozwiązanie zadania L4-1 5 Przykładowe rozwiązanie zadania L4-2 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 7 / 19

Podpowiedzi do zadań L4 Instrukcja: complex c(-3., -2.), *pc = &c, cmpl = c; wymaga zdefiniowania konstruktora kopiującego do utworzenia obiektu cmpl, wskaźnik pc pobiera adres c bez udziału żadnego z konstruktorów. Instrukcja: cout << sumcmplint(c, i) << endl; nie wymaga żadnych konwersji - parametry aktualne c i i dokładnie pasują do formalnych. Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 8 / 19

Podpowiedzi do zadań L4 Instrukcja: cout << sumcmplint(*pc, d) << endl; pierwszy z parametów *pc dokładnie pasuje do formalnego. drugi z parametrów wymaga konwersji z typu double na typ int - konwersje dla typów wbudowanych są jednak predefiniowane. Instrukcja: cout << sumcmplint(cmpl, c) << endl; wymaga konwersji drugiego z parametrów z typu complex na typ int - potrzebny jest operator konwersji w klasie complex pierwszy parametr jest zgodny z formalnym. Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 9 / 19

Podpowiedzi do zadań L4 Instrukcje: cout << sumcmplint(chr, chr) << endl; cout << sumcmplint(b, b) << endl; wymagają utworzenia konstruktorów konwertujących: char complex oraz bool complex konwersje: char int oraz bool int są predefiniowane. Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 10 / 19

Spis treści 1 Zadanie L4-1 2 Zadanie L4-2 3 Podpowiedzi do zadań L4 4 Przykładowe rozwiązanie zadania L4-1 5 Przykładowe rozwiązanie zadania L4-2 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 11 / 19

Przykładowe rozwiązanie zadania L4-1/1 #include <iostream> #include <cmath> using namespace std; class complex{ double re, im; double *modul; public: complex(double r = 0, double i = 0.); complex(const complex& wzor); operator int(){return static_cast<int>(re); double Re(){return re; double Im(){return im; ; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 12 / 19

Przykładowe rozwiązanie zadania L4-1/2 complex::complex(double r, double i): re(r), im(i){ modul = new double; *modul = sqrt(re*re + im*im); complex::complex(const complex& wzor){ re = wzor.re; im = wzor.im; modul = new double; *modul = *wzor.modul; complex sumcmplint(complex c, int i){ return complex(c.re() + static_cast<double>(i),c.im()); ostream& operator<<(ostream& str, complex c){ return str << "(" << c.re() << ", " << c.im() << ")"; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 13 / 19

Przykładowe rozwiązanie zadania L4-1/3 int main(){ complex c(-3., -2.), *pc = &c, cmpl = c; int i = 7; double d = 3.72; cout << sumcmplint(c, i) << endl; cout << sumcmplint(*pc, d) << endl; cout << sumcmplint(cmpl, c) << endl; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 14 / 19

Spis treści 1 Zadanie L4-1 2 Zadanie L4-2 3 Podpowiedzi do zadań L4 4 Przykładowe rozwiązanie zadania L4-1 5 Przykładowe rozwiązanie zadania L4-2 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 15 / 19

Przykładowe rozwiązanie zadania L4-2/1 #include <iostream> #include <cmath> using namespace std; class complex{ static int lp; const int nrcmpl; double re, im; double *modul; public: complex(double r = 0, double i = 0.); complex(const complex& wzor); complex(char chr): re(static_cast<double>(chr)), im(0.), nrcmpl(++lp){ complex(bool b); static int LP(){return lp; operator int(){return static_cast<int>(re); Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 16 / 19

Przykładowe rozwiązanie zadania L4-2/2 double Re(){return re; double Im(){return im; double NrCmpl(){return nrcmpl; double Modul(){return *modul; ; int complex::lp; complex::complex(double r, double i): re(r), im(i), nrcmpl(++lp){ modul = new double; *modul = sqrt(re*re + im*im); complex::complex(const complex& wzor):nrcmpl(++lp){ re = wzor.re; im = wzor.im; modul = new double; *modul = *wzor.modul; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 17 / 19

Przykładowe rozwiązanie zadania L4-2/3 complex::complex(bool b): nrcmpl(++lp){ if(b) re = 1.; else re = 0; im = 0.; complex sumcmplint(complex c, int i){ return complex(c.re() + static_cast<double>(i),c.im()); ostream& operator<<(ostream& str, complex c){ return str << "(" << c.re() << ", " << c.im() << ")"; int main(){ complex c(-3., -2.), *pc = &c, cmpl = c; cout << "Nr obiektu cmpl: " << cmpl.nrcmpl() << endl; char chr = 'D'; bool b = true; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 18 / 19

Przykładowe rozwiązanie zadania L4-2/4 cout << sumcmplint(chr, chr) << endl; cout << sumcmplint(b, b) << endl; cout << "Liczba utworzonych obiektow complex: " << complex::lp() << endl; return 0; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 19 / 19