Polimorfizm w pigułce

Podobne dokumenty
dr inż. Jarosław Forenc

TEMAT : KLASY POLIMORFIZM

Mechanizm dziedziczenia

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

Listy powiązane zorientowane obiektowo

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

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

Laboratorium 1 - Programowanie proceduralne i obiektowe

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

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

Mechanizm dziedziczenia

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

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

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

#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;

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

Programowanie obiektowe

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Wstęp do Programowania 2

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

Język C++ Różnice między C a C++

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.

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

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

Plik klasy. h deklaracje klas

Język C++ wykład VIII

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

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

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

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

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

Praca semestralna CENTRUM EDUKACJI AKADEMIA SUKCESU

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

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

Programowanie Obiektowew języku C++ Zadania L2

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

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

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.

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

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

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

Programowanie Obiektowew języku C++ Zadania L9

Wyjątki (exceptions)

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie proceduralne w języku C++ Podstawy

Jak napisać listę jednokierunkową?

Programowanie obiektowe język C++

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

Programowanie - wykład 4

Ćwiczenia podstawowe, zestaw 5, część 1

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

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

Programowanie obiektowe i C++ dla matematyków

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

Programowanie w języku C++

Projektowanie klas c.d. Projektowanie klas przykład

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

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

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

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

Programowanie komputerowe. Zajęcia 1

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

Wprowadzenie do programowania i programowanie obiektowe

Wstęp do Informatyki

Programowanie obiektowe w C++ Wykład 12

Programowanie Obiektowe i C++ Marcin Benke

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

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

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

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

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

Owad():waga(1),jadowitosc(false) {cout<<"konstruktor domyslny owada\n";}

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

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

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

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

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

Technologie cyfrowe semestr letni 2018/2019

Środowisko programistyczne GEANT4

Technologie cyfrowe semestr letni 2018/2019

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

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

Program 22. #include <iostream> using namespace std; struct Osoba { string Imie; string Nazwisko; char Plec; int RokUr; };

C++ - [4-7] Polimorfizm

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

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Wprowadzenie do programowania i programowanie obiektowe

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

C++ - [1-3] Debugowanie w Qt Creator

Transkrypt:

Polimorfizm w pigułce

Kwadrat kwadr( 5 );... wypiszdane( &kwadr );... void wypiszdane( Kwadrat * k ) cout << "\ndługosc boku : " << (*k).podajdlboku(); cout << "\npole kwadratu: " << (*k).obliczpole(); //ALBO ŁADNIEJ: void wypiszdane( Kwadrat * k ) cout << "\ndługosc boku : " << k->podajdlboku(); cout << "\npole kwadratu: " << k->obliczpole();

Kwadrat * kwadr; kwadr = new Kwadrat( 5 ); if( kwadr!= 0 ) cout << "\ndługosc boku : " << kwadr->podajdlboku(); cout << "\npole kwadratu: " << kwadr->obliczpole(); delete kwadr;

class Osoba public: Osoba() : nrdowodu(0) void piszkimjestes() cout << "Osoba\n"; int nrdowodu; ; class Student : public Osoba public: Student() : Osoba(), nrindeksu(0) void piszkimjestes() cout << "Student\n"; int nrindeksu; ;

class Absolwent : public Student public: Absolwent() : Student(), nrdyplomu(0) void piszkimjestes() cout << "Absolwent\n"; int nrdyplomu; ; //gdzieś w main() Osoba o; Student s; Absolwent a; o.piszkimjestes(); s.piszkimjestes(); a.piszkimjestes();

int main() Osoba o; Student s; Absolwent a; o.piszkimjestes(); o = s; o.piszkimjestes(); o = a; o.piszkimjestes(); int main() Osoba * wo; wo = &o; wo->piszkimjestes(); wo = &s; wo->piszkimjestes(); wo = &a; wo->piszkimjestes();

class Osoba public:... virtual void piszkimjestes() cout << "Osoba\n";... ;

class Osoba public: Osoba() : imie( "" ), nazwisko( "" ), nrdowodu( 0 ) Osoba( string i, string n, int nr ) : imie( i ), nazwisko( n ), nrdowodu( nr ) virtual void piszkimjestes() cout << "\nosoba\n"; virtual void wypiszdane() piszkimjestes(); cout << imie << " " << nazwisko << endl; cout << "Nr dowodu: " << nrdowodu << endl; int nrdowodu; string imie; string nazwisko; ;

class Student : public Osoba public: Student() : Osoba(), nrindeksu( 0 ) Student( string i, string n, int nr, int nri ) : Osoba( i, n, nr ), nrindeksu( nri ) void piszkimjestes() cout << "\nstudent\n"; void wypiszdane() Osoba::wypiszDane(); cout << "Nr indeksu: " << nrindeksu << endl; int nrindeksu; ;

class Absolwent : public Student public: Absolwent() : Student(), nrdyplomu( 0 ) Absolwent( string i, string n, int nr, int nri, int nrd ): Student( i, n, nr, nri ), nrdyplomu( nrd ) void piszkimjestes() cout << "\nabsolwent\n"; void wypiszdane() Student::wypiszDane(); cout << "Nr dyplomu: " << nrdyplomu << endl; int nrdyplomu; ;

Osoba * wo = new Student("Jan", "Nowak", 2222, 3333);... wo->wypiszdane();... delete wo;... Osoba * wo = new Absolwent("Jan", "Nowak", 2222, 3333, 4444);... wo->wypiszdane();... delete wo;

Zaprojektować i zrealizować w technologii obiektowej prostą grę komputerową, w ramach której użytkownik steruję przy użyciu klawiatury ruchomym obiektem, poruszającym się w labiryncie (gra klasy Pacman). Obiekt powinien zbierać rozmieszczone w labiryncie obiekty-nagrody, unikając jednocześnie obiektówpułapek (np. min). Gra kończy się po zebraniu wszystkich nagród lub po utraceniu przez obiekt ruchomy życia w wyniku wejścia w pułapki. Grę należy rozbudować o ruchome obiekty-realizujące aktywny pościg za sterowanym przez użytkownika obiektem ruchomym.

Na ocenę 3.0: Obiekt porusza się w konsoli pod wpływem działań użytkownika (naciśnięcia przycisków strzałek na klawiaturze). Obiekt nie może wyjść poza obszar planszy. Zjedzenie każdego obiektu nagrody skutkuje dodaniem jednego punktu do liczby ogółem uzyskanych przez gracza. Gra kończy się po zjedzeniu wszystkich nagród na planszy, wyświetleniem napisu o wygranej. Gra na dole planszy wyświetla aktualny stan zdobytych przez użytkownika punktów. Na ocenę 4.0: Obiekt ma 3 życia do wykorzystania najechanie na pułapkę powoduje utratę jednego życia oraz restart pozycji wszystkich obiektów. Utrata wszystkich 3 żyć, skutkuje napisem o przegranej. Istnieją co najmniej 2 rodzaje nagród, których zjedzenie powoduje dopisanie różnej liczby punktów. Po przegranej bądź wygranej, użytkownik może podać swoje imię i jego dane oraz wynik zapisywane są do pliku. Gra umożliwia jej rozpoczęcie lub wyświetlenie listy osób z pięcioma najwyższymi wynikami. Na ocenę 5.0: Implementacja obiektów ścigających poruszają się automatycznie po planszy, i gdy tylko w ich zasięgu znajdzie się obiekt poszukiwany, rozpoczynają za nim pościg. Zjedzenie przez obiekt ścigający powoduje utratę życia. Program musi stosować zasady hermetyzacji, dziedziczenia i polimorfizmu. Tam gdzie to możliwe należy walidować dane od użytkownika

Materiały z Wykładu dr Simińskiego oraz przykład programu RunnerWithTrace. http://programowanie.siminskionline.pl/?page_id=7 Bibliografia z C++. Pytania do prowadzącego.

#include <iostream> #include <windows.h> using namespace std; HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); COORD CursorPosition = 0, 0; void gotoxy (int x, int y) CursorPosition.X = x; CursorPosition.Y = y; SetConsoleCursorPosition(console, CursorPosition); int main() gotoxy(25,50); cout << "Hello world!" << endl; return 0;