Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Podobne dokumenty
WPROWADZENIE. Programowanie Obiektowe Mateusz Cicheński

Tematy projektów 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

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

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

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

Projektowanie klas c.d. Projektowanie klas przykład

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

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

Część 4 życie programu

I - Microsoft Visual Studio C++

Pracownia specjalistyczna. Materiały przygotowali: mgr inż. Wojciech Frohmberg, mgr inż. Michał Kierzynka

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

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

Technologie cyfrowe semestr letni 2018/2019

Laboratorium 1 - Programowanie proceduralne i obiektowe

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

Programowanie obiektowe język C++

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.

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

Technologie cyfrowe semestr letni 2018/2019

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

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

Język C++ wykład VIII

Szablony funkcji i klas (templates)

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

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

TEMAT : KLASY POLIMORFIZM

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

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

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

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

Programowanie obiektowe - 1.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Mechanizm dziedziczenia

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

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

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Wstęp do programowania. Wykład 1

Podstawy Programowania Obiektowego

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

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

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

1 Podstawy c++ w pigułce.

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zofia Kruczkiewicz, ETE8305_2 1

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

Wstęp do Programowania 2

Programowanie Proceduralne

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

Podstawy języka skryptowego Lua

Wstęp do programowania

Programowanie proceduralne w języku C++ Podstawy

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

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

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

1 Podstawy c++ w pigułce.

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

Qt sygnały i designer

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

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

dr inż. Jarosław Forenc

Polimorfizm w pigułce

Programowanie obiektowe

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Programowanie obiektowe

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

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

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

Programowanie Obiektowe i C++

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

Zaawansowane programowanie w C++ (PCP)

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

tablica: dane_liczbowe

Zaawansowane programowanie w języku C++ Klasy w C++

Programowanie strukturalne i obiektowe

Listy powiązane zorientowane obiektowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Programowanie - wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 2

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

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

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

Język programowania PASCAL

Programowanie MorphX Ax

Programowanie obiektowe

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Programowanie obiektowe

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Technologie i usługi internetowe cz. 2

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Transkrypt:

Wprowadzenie Programowanie Obiektowe Mateusz Cicheński

Paradygmaty programowania C++ Krótki przykład Kompilacja i linkowanie Makefile Przydatne flagi kompilatora Zaliczenie przedmiotu Harmonogram roku Omówienie Projektu 1 Plan zajęć

Aplikacja posiada kod składający się z hierarchicznie ułożonej sekwencji struktur programistycznych. Sekwencje Instrukcje wyboru Pętle Instrukcje skoku cout << Witaj świecie\n ; int i = 5; result = result % 15; if (i == 0) { result = result 15; } swith (option) { case 1: cout << option 1 ; break; case 2: cout << option 2 ; break; default: cout << none ; break; } for (int i = 0; i < 5; i++) { result += i; } while (n > 0) { n--; } do { n--; } while (n > 0); break; continue; label: goto label; Programowanie strukturalne

Aplikacja podzielona jest na niezależne części (procedury, funkcje), które przetwarzają dane. Dane przekazywane są przez parametry jako wskaźniki lub referencje. Procedura void sum(int a, int b, int& result) { result = a + b; } Funkcja int sum(int a, int b) { return a+b; } Programowanie proceduralne

Aplikacja zdefiniowana jest przez zbiór obiektów, które są wystąpieniami klas. Sterowanie odbywa się poprzez wymianę komunikatów między obiektami. Obiekty posiadają swój stan (pola) oraz komunikaty (metody), które umożliwiają wymianę informacji. Programowanie obiektowe

Deklaracja klasy obiektu class Car { private: int wheels; protected: int maxspeed; public: Car(int wheels); void printinfo(); } Implementacja jego metod Car::Car(int wheels) { this->wheels = wheels; maxspeed = 10; } void Car::printInfo() { cout << Ten samochód ma << wheels; cout << oraz osiąga prędkość maksymalną << maxspeed; cout << \n ; } Programowanie obiektowe c.d.

Programowanie proceduralne Skupia się na: Algorytmie Danych Podstawowa jednostka danych Struktura Programowanie obiektowe Klasa Podstawowa operacja Funkcja (procedura) Metoda (komunikat) Cel operacji Wykonanie zadania Manipulacja obiektem Sposób dostępu do danych Wszystko jest publiczne (z wyjątkiem zmiennych lokalnych) Klasy posiadają zdefiniowany zbiór metod dostępnych publicznie Różnice między PP a PO

Abstrakcja możliwość definiowania własnych klas odzwierciedlających rzeczywistość Hermetyczność ukrywanie informacji obiekty stają się niezależne od siebie pod względem implementacji, liczy się tylko interfejs wymiany informacji Dziedziczenie możliwe jest tworzenie hierarchii klas, bez konieczności redefiniowania funkcjonalności obiektu z którego dziedziczymy Polimorfizm możliwość podstawiania pod zmienną określonego typu wystąpień różnych klas, przy równoczesnym zapewnieniu zgodności z pełnym typem obiektu Własności PO

1. #ifndef _CAR 2. #define _CAR car.h Dyrektywy preprocesora 3. 4. class Car { 5. private: 6. int wheels; 7. protected: 8. int maxspeed; 9. public: 10. Car(int wheels); 11. void printinfo(); 12. }; 13. 14. #endif Przykład w C++ (1)

1. #include <iostream> 2. #include "car.h" 3. 4. using namespace std; 5. 6. Car::Car(int wheels) { 7. this->wheels = wheels; 8. maxspeed = 10; 9. } 10. 11. void Car::printInfo() { 12. cout << "This car has " << wheels; 13. cout << " wheels and max speed equals to " << maxspeed; 14. cout << "\n"; 15. } Przykład w C++ (2) car.cpp

1. #include <iostream> 2. #include "car.h" main.cpp 3. 4. using namespace std; 5. 6. int main(int argc, char** argv) 7. { 8. Car* car = new Car(4); 9. car->printinfo(); 10. return 0; 11. } Przykład w C++ (3)

$ g++ main.cpp o main 1. In function `main': 2. main.cpp:(.text+0x94): undefined reference to `Car::Car(int)' 3. main.cpp:(.text+0xa5): undefined reference to `Car::printInfo()' car.h main.cpp car.cpp Kompilacja C++

$ g++ c car.cpp o car.o $ g++ c main.cpp o main.o $ g++ *.o o main main main.o car.o Linkowanie C++

Ułatwia kompilację złożonych systemów Posiada prostą składnię: <cel> : [ <zależności> ]* [ <TAB> <polecenie> <endl> ]+ Oraz ciekawe rozszerzenia, np. makra: <nazwa> = <wartość> Makefile

1. OBJS = car.o main.o 2. CC = g++ 3. DEBUG = -g 4. CFLAGS = -Wall -c $(DEBUG) 5. LFLAGS = -Wall $(DEBUG) 6. 7. all : $(OBJS) 8. $(CC) $(LFLAGS) $(OBJS) -o main 9. 10. main.o : main.cpp car.h 11. $(CC) $(CFLAGS) main.cpp 12. 13. car.o : car.h car.cpp 14. $(CC) $(CFLAGS) car.cpp 15. 16. clean: 17. rm *.o main 18. Makefile Makefile - przykład

-c kompilacja bez linkowania -o plik docelowy -g dodaje informacje wykorzystywane przez debugger -Wall włączenie wszystkich flag dotyczących ostrzeżeń, pozwala m.in. wykryć konstrukcje, które uważane są za wątpliwe, a które łatwo zmienić -MM generuje wpis dla Makefile dotyczący zależności $ g++ -MM main.cpp main.o: main.cpp car.h Flagi kompilatora g++

Zaliczenie przedmiotu harmonogram i zasady

Data Zadanie 12-10-2015 Wybór Projektu 1 26-10-2015 Przesłanie sprawozdania do Projektu 1 23-11-2015 Oddanie Projektu 1 w trakcie zajęć 7-12-2015 Wybór Projektu 2 21-12-2015 Przesłanie sprawozdania do Projektu 2 18-01-2016 Oddanie Projektu 2 w trakcie zajęć Harmonogram

Aby zaliczyć przedmiot należy zrealizować dwa projekty. Projekty oceniane są wg skali punktowej, która jest następnie przeliczana na wartości procentowe wg tabeli: Przedział procentowy <0-50) <50-60) <60-70) <70-80) <80-90) <90-100) Ocena 2.0 3.0 3.5 4.0 4.5 5.0 Oceną końcową jest średnia arytmetyczna ocen z projektów. Spóźnienie względem harmonogramu skutkuje uzyskaniem oceny o pół stopnia niższej za każdy tydzień opóźnienia Ocena z laboratorium

Można: używać grafiki z Internetu używać bibliotek zewnętrznych wzorować się na istniejących programach (kopiować pomysły) Nie można: wykorzystywać cudzego kodu Warunki realizacji projektu

Sprawozdanie powinno zawierać: Imiona i nazwiska autorów z numerami indeksu Krótki opis projektu Wymagane biblioteki Diagram klas wykorzystywanych w aplikacji Spis wymagań (specyfikacja projektu) Wymagania

Finalny projekt powinien zawierać: Kod źródłowy aplikacji Skompilowane biblioteki używane przez aplikację (.dll) Sposób kompilacji (zwłaszcza gdy nietypowy) Skompilowaną wersję aplikacji (release) Zaktualizowane sprawozdanie Opis działania aplikacji (np. opis interakcji z użytkownikiem, opis sztucznej inteligencji) Wymagania c.d.

Sprawozdanie [6 pkt], w tym: [3 pkt] diagram klas [3 pkt] spis wymagań Finalny projekt [14 pkt], w tym: [2 pkt] zgodność ze sprawozdaniem [4 pkt] zastosowanie paradygmatu PO (abstrakcja, enkapsulacja, dziedziczenie, polimorfizm) [4 pkt] wykorzystanie mechanizmów języka C++ (wskaźniki, konstruktory, destruktory, metody wirtualne, późne wiązanie, dyrektywy preprocesora, wyjątki, przestrzenie nazw, wzorce, STL etc.) [4 pkt] bezawaryjna praca aplikacji, formatowanie kodu, komentarze w kodzie Punktacja

Nazwa projektu Single-User Dungeon Okręty Scorched Earth Labirynt Generator wierszy Manager zasobów Kalendarz Arkanoid Gra platformowa Wyścigi Typ Gra Gra Gra Gra Aplikacja użytkowa Aplikacja Użytkowa Aplikacja użytkowa Gra Gra Gra Spis projektów

Możliwość wydawania poleceń, które wpływają na osiągane postępy w grze Możliwość zapisania/odczytania stanu gry Tematyka gry dowolna Single-User Dungeon

Popularna gra w statki Możliwość zapisania/odczytania stanu gry Prosta sztuczna inteligencja Okręty

Obliczanie trajektorii pocisku Możliwość zapisania/odczytania stanu gry Prosta sztuczna inteligencja Scorched Earth - wariacja

Generowanie losowych labiryntów Możliwość zapisania/odczytania stanu gry Wprowadzenie statystki: liczba ruchów gracza względem minimalnej liczby ruchów Labirynt

Możliwość wczytania słownika, z którego mają powstać wiersze Określanie parametrów wiersza Zastosowanie zasad gramatyki przy konstrukcji zdań Generator wierszy

Np. ewidencja pracowników firmy, katalogowanie zbiorów muzycznych Możliwość zapisania/odczytania stanu aplikacji (tj. danych użytkownika) Manager zasobów

Zarządzanie wpisami w kalendarzu Możliwość zapisania/wczytania wydarzeń (format ical) Kalendarz

Możliwość tworzenia własnych poziomów (prosty format pliku lub edytor) Zapisywanie listy rekordów Sterowanie klawiaturą Arkanoid

Możliwość tworzenia własnych poziomów (prosty format plików lub edytor) Sterowanie klawiaturą Możliwość zapisania/wczytania stanu gry Wykrywanie kolizji Gra platformowa

Wykrywanie kolizji Tryb ducha powtórzenie przejazdu gracza przez komputer Sterowanie klawiaturą Wyścigi

Dziękuję za uwagę następne zajęcia: Składnia C++, cz. 1