Programowanie Obiektowe i C++

Podobne dokumenty
Programowanie Obiektowe i C++ Marcin Benke

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

Programowanie obiektowe - 1.

Paradygmaty programowania

Języki i paradygmaty programowania. I. Wprowadzenie

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

Programowanie obiektowe. Wprowadzenie

Paweł Kurzawa, Delfina Kongo

Język programowania. Andrzej Bobyk

Modelowanie i Programowanie Obiektowe

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

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

Programowanie obiektowe

Dziedziczenie. Tomasz Borzyszkowski

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

Dziedziczenie. dr Jarosław Skaruz

Języki programowania deklaratywnego

Podstawy Programowania Obiektowego

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

Języki programowania imperatywnego

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

Technologie obiektowe

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

Programowanie obiektowe

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

Programowanie obiektowe

Projektowanie obiektowe. Roman Simiński Polimorfizm

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

Technologie cyfrowe semestr letni 2018/2019

Programowanie obiektowe

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

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

Programowanie Obiektowe i C++

TEMAT : KLASY DZIEDZICZENIE

Style programowania - krótki przeglad

Technologie cyfrowe semestr letni 2018/2019

Wykład 0 Informacje Podstawowe

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

Programowanie obiektowe

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

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

Technologie i usługi internetowe cz. 2

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Wykład 9: Polimorfizm i klasy wirtualne

GUI - projektowanie interfejsów cz. II

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie w języku C++ Podstawowe paradygmaty programowania

Paradygmaty programowania

Język JAVA podstawy. wykład 1, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

PARADYGMATY PROGRAMOWANIA Wykład 4

hierarchie klas i wielodziedziczenie

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

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

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

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

Dziedziczenie. Ogólna postać dziedziczenia klas:

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Historia modeli programowania

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Programowanie obiektowe

Programowanie obiektowe

Języki programowania do zastosowań biomedycznych

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

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Wstęp do Informatyki dla bioinformatyków

Enkapsulacja, dziedziczenie, polimorfizm

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Języki programowania deklaratywnego

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie Obiektowe i C++

Wykład 1 Informacje Podstawowe

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

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

Diagramy klas. dr Jarosław Skaruz

Wykład 9: Metody wirtualne i polimorfizm

Programowanie obiektowe Object-Oriented Programming. Automatyka i Robotyka II stopień ogólnoakademicki

Programowanie obiektowe w języku

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Mechanizm dziedziczenia

Programowanie obiektowe. Grzegorz Jabłoński Katedra Mikroelektroniki i Technik Informatycznych (K-25) Budynek B18

Wstęp do programowania obiektowego. Wykład 2

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

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

Programowanie obiektowe

Programowanie i projektowanie obiektowe

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania

Wprowadzenie do systemów informacyjnych

Wprowadzenie do programowanie obiektowego w języku C++

UML cz. II. UML cz. II 1/38

Wykład 1: Wprowadzenie

Obiektowe bazy danych

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

Związek między pojęciami Zasada podstawialności Podklasy muszą realizować kontrakt zawarty przez nadklasy

Spis treści. Wprowadzenie 15

Język UML. dr inż. Piotr Szwed C3, pok

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Transkrypt:

Programowanie Obiektowe i C++ Marcin Benke 2.10.2006 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) 1

Przykłady języków proceduralne: Algol, Pascal, C,... obiektowe: Smalltalk, C++, Java, Python, Ruby,... funkcyjne: Lisp, ML, Haskell,... logiczne: Prolog, Mercury,... 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, C++ jest trudnym językiem, z bardzo rozbudowaną składnią i subtelną semantyką w C++ można pisać programy nie mające nic wspólnego z programowaniem obiektowym, W każdym języku da się programować w Fortranie 2

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. Obiekty i klasy Obiekt: stan (atrybuty), 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). 3

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): Ewolucja delegowanie zadań daje agentom większą samodzielność, komponenty stają się mniej zależne od siebie, to z kolei ułatwia ich ponowne wykorzystanie. Kolejny etap ewolucji mechanizmów abstrakcji: procedury bloki moduły ATD programowanie obiektowe 4

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++.) 5

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. Point String Przykład: 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. 6