Programowanie Obiektowe i C++ Marcin Benke

Podobne dokumenty
Programowanie Obiektowe i C++

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

Programowanie obiektowe - 1.

Technologie cyfrowe semestr letni 2018/2019

Technologie cyfrowe semestr letni 2018/2019

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

Paradygmaty programowania

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

Języki i paradygmaty programowania. I. Wprowadzenie

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

Podstawy Programowania Obiektowego

Mechanizm dziedziczenia

Programowanie Obiektowe i C++

Laboratorium 1 - Programowanie proceduralne i obiektowe

Programowanie obiektowe. Wprowadzenie

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

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

Projektowanie obiektowe. Roman Simiński Polimorfizm

Programowanie obiektowe

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

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

Paweł Kurzawa, Delfina Kongo

TEMAT : KLASY DZIEDZICZENIE

Dziedziczenie. Ogólna postać dziedziczenia klas:

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.

Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Programowanie obiektowe

Wprowadzenie do programowanie obiektowego w języku C++

Język programowania. Andrzej Bobyk

Dziedziczenie. Tomasz Borzyszkowski

Modelowanie i Programowanie Obiektowe

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

dr inż. Jarosław Forenc

Dziedziczenie. dr Jarosław Skaruz

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

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 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

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

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

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Programowanie obiektowe

Polimorfizm w pigułce

Języki i paradygmaty programowania

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

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Języki programowania deklaratywnego

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

Programowanie obiektowe w języku

Programowanie obiektowe

Programowanie obiektowe język C++

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

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Języki programowania imperatywnego

PARADYGMATY PROGRAMOWANIA Wykład 4

Technologie obiektowe

Mechanizm dziedziczenia

Programowanie obiektowe

hierarchie klas i wielodziedziczenie

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

Wprowadzenie do programowanie obiektowego w języku C++

TEMAT : KLASY POLIMORFIZM

Style programowania - krótki przeglad

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

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

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

1 Atrybuty i metody klasowe

private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne.

Zadanie 2: Arytmetyka symboli

Programowanie obiektowe w C++ Wykład 12

Programowanie obiektowe

Wykład 9: Polimorfizm i klasy wirtualne

Szablony funkcji i szablony klas

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Wyjątki (exceptions)

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

Technologie i usługi internetowe cz. 2

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

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

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Programowanie obiektowe

GUI - projektowanie interfejsów cz. II

Rok akademicki: 2016/2017 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Wykład 0 Informacje Podstawowe

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

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Programowanie w języku C++ Podstawowe paradygmaty programowania

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie Obiektowe i C++

Programowanie obiektowe

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Transkrypt:

Programowanie Obiektowe i C++ Marcin Benke

Dzisiaj Co umiemy Paradygmaty programowania Co będzie na wykładach Zasady zaliczania Programowanie obiektowe

Co umiemy Programowałem w C++ Programowałem w języku obiektowym Programowałem w C Programowałem w innym języku Nigdy nie programowałem

Paradygmaty programowania Ewolucja języków programowania od bliskich maszynie do bliskich rozwiązywanym problemom: Imperatywne proceduralne książka kucharska obiektowe interakcje obiektów Deklaratywne funkcyjne funkcje i wartości logiczne relacje, spełnianie formuł Specyficzne dla dziedziny (domain specific)

Przykłady języków proceduralne: Algol, Pascal, C,... obiektowe: Smalltalk, C++, Java, Python, Ruby,... funkcyjne: Lisp, ML, Haskell,... logiczne: Prolog W praktyce większość języków łączy różne paradygmaty.

Co będzie na wykładach Programowanie proceduralne w C++ Programowanie obiektowe w C++ (klasy, dziedziczenie, metody wirtualne, szablony,... ), Programowanie ekstremalne Interakcja z użytkownikiem Inne języki obiektowe (jeśli starczy czasu)

Dlaczego C++? bardzo popularny, dostępny w wielu implementacjach, efektywne implementacje łatwo dostępna literatura

Zastrzeżenia C++ nie jest jedynym językiem obiektowym, C++ nie jest najlepszym językiem obiektowym, w C++ można pisać programy nie mające nic wspólnego z programowaniem obiektowym, C++ jest trudnym językiem, z bardzo rozbudowaną składnią i subtelną semantyką W każdym języku da się programować w Fortranie

Zaliczenie ćwiczeń obecności, kolokwium w połowie semestru, program zaliczeniowy.

Programowanie obiektowe Wszyscy o nim mówią, wszyscy go używają i nikt nie wie co to jest. Podejście obiektowe wykracza daleko poza programowanie (ogólnie: opis skomplikowanych systemów). Inny sposób widzenia świata Agenci, do których wysyła się komunikaty (zlecenia wykonania pewnych zadań) Metody realizacji zleceń są ukryte (przykłady: poczta, WWW).

Nowy wspaniały świat Więcej niż jedynie dodanie do języka programowania kilku nowych cech, inny sposób myślenia o projektowaniu i tworzeniu programów. Na programowanie obiektowe można patrzeć jako na symulowanie rozważanego świata. W programowaniu obiektowym mamy do czynienia z zupełnie innym modelem obliczeń: zamiast komórek pamięci i ciągu instrukcji mamy obiekty (agentów) komunikaty i zobowiązania.

Obiekt: stan (atrybuty), Obiekty i klasy zachowanie (operacje, metody). Każdy obiekt jest egzemplarzem pewnej klasy. Zachowanie obiektu jest określone w jego klasie. Z każdym obiektem jest związany pewien zbiór zobowiązań protokół Inaczej: protokół określa na jakie komunikaty obiekt odpowiada (jakie zlecenia wykonuje.

Komunikaty Zachowanie obiektu można zaobserwować wysyłając do niego komunikat; w odpowiedzi obiekt wykona swoją metodę związaną z tym komunikatem; To jakie akcje zostaną wykonane zależy od obiektu obiekt innej klasy może wykonać w odpowiedzi na ten sam komunikat zupełnie inne akcje (polimorfizm).

Komunikaty i metody Wysłanie komunikatu jest podobne do wywołania procedury. Istotna różnica: to jakie akcje zostaną wykonane zależy od odbiorcy komunikatu. Wiązanie nazwy komunikatu z metodą odbywa się w czasie wykonania, a nie kompilacji (metody wirtualne, wczesne i późne wiązanie metod).

Delegacja i komponenty Staramy się co tylko się da zrzucić na innych (agentów), a nie robić wszystko samemu. Sprzyja to tworzeniu komponentów nadających się do ponownego wykorzystania w inych programach (reuse) Projektowanie sterowane zobowiązaniami (Responsibility Driven Design): delegowanie zadań daje agentom większą samodzielność, komponenty stają się mniej zależne od siebie, to z kolei ułatwia ich ponowne wykorzystanie.

Ewolucja Kolejny etap ewolucji mechanizmów abstrakcji: procedury bloki moduły ATD programowanie obiektowe

Własności OOP Alan Kay (1993): Wszystko jest obiektem. Obliczenie realizują obiekty przesyłając między sobą komunikaty. Obiekt ma swoją pamięć zawierającą inne obiekty (odwołania do nich). Każdy obiekt jest egzemplarzem klasy. Klasa jest wzorcem zachowania obiektu. Klasy są zorganizowane w hierarchię dziedziczenia.

Dziedziczenie Jeden z fundamentów podejścia obiektowego. Klasy obiektów można kojarzyć w hierarchie klas (prowadzi to do drzew lub grafów dziedziczenia). Atrubuty i zachowanie klas-przodków są dostępne w klasach potomków (pośrednio lub bezpośrednio). Potomek może mieć odmienne zachowanie niż przodek. Nadklasy i podklasy (klasy bazowe i pochodne). Zasada podstawialności: zawsze powinno być możliwe podstawienie obiektów podklas w miejsce obiektów nadklas.

Przykład dziedziczenia Point Rozważmy następującą klasę: class Point { attributes: int x, y methods: setx(int newx) getx() sety(int newy) gety() } (Uwaga: to jest pseudokod, jeszcze nie w pełni C++.)

Przykład dziedziczenia Circle class Circle inherits from Point { attributes: int radius methods: setradius(int newradius) getradius() } Circle acircle acircle.setx(1) /* Dziedziczone z Point */ acircle.sety(2) acircle.setradius(3) /* Dodane przez Circle */

Wielodziedziczenie Wielodziedziczenie (multiple inheritance) oznacza, że klasa dziedziczy po 2 lub więcej niezwiązanych ze sobą klasach. Dziedziczenie po babce i matce nie jest jeszcze wielodziedziczeniem. Przykład: Point String DrawableString DrawableString dziedziczy po klasach Point i String.

Wielodziedziczenie przykład class DrawableString inherits from Point, String { atributes: /* tylko dziedziczone z nadklas */ methods: /* tylko dziedziczone z nadklas */ } DrawableString dstring dstring.setx(10) dstring.append("pójdź, kiń-że tę chmurność...") dstring odpowiada na komunikaty z protokołów klas Point i String.

Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include <iostream> using namespace std ; main() // Program główny { // do obiektu cout wysyłamy komunikat << // argument - co wypisać cout << "Hello, brave new world" ; cout << endl ; // koniec linii }