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

Podobne dokumenty
Programowanie obiektowe. Wprowadzenie

Programowanie obiektowe - 1.

Podstawy Programowania Obiektowego

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

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

Programowanie Obiektowe i C++

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

Technologie i usługi internetowe cz. 2

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

Programowanie Obiektowe i C++ Marcin Benke

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

Technologie obiektowe

Modelowanie i Programowanie Obiektowe

Wykład 1: Wprowadzenie

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

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

Historia modeli programowania

Podstawy Języka Java

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

Projektowanie obiektowe. Roman Simiński Polimorfizm

Aplikacje w środowisku Java

Programowanie obiektowe

Język programowania. Andrzej Bobyk

Polimorfizm. dr Jarosław Skaruz

Technologie cyfrowe semestr letni 2018/2019

Szablony funkcji i szablony klas

Mechanizm dziedziczenia

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

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

Dziedziczenie. dr Jarosław Skaruz

Programowanie obiektowe

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Materiały do zajęć VII

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

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

Paweł Kurzawa, Delfina Kongo

Diagramy klas. dr Jarosław Skaruz

Programowanie obiektowe

Wprowadzenie do szablonów szablony funkcji

TEMAT : KLASY DZIEDZICZENIE

Zaawansowane programowanie w C++ (PCP)

Wprowadzenie do szablonów szablony funkcji

Technologie cyfrowe semestr letni 2018/2019

Definiowanie własnych klas

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

Programowanie obiektowe

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Języki i paradygmaty programowania

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

Style programowania - krótki przeglad

Wprowadzenie do programowanie obiektowego w języku C++

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

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

UML w Visual Studio. Michał Ciećwierz

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

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

Język C++ Programowanie obiektowe

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

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

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

hierarchie klas i wielodziedziczenie

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

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie obiektowe

Dziedziczenie. Tomasz Borzyszkowski

Scala - programowanie obiektowo-funkcyjne

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Programowanie obiektowe

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Programowanie obiektowe

Klasy abstrakcyjne, interfejsy i polimorfizm

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

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

GUI - projektowanie interfejsów cz. II

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Mechanizm dziedziczenia

Programowanie w języku C++ Podstawowe paradygmaty programowania

Wykład 0 Informacje Podstawowe

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

Programowanie obiektowe

Analiza obiektowa. Analiza obiektowa. Analiza obiektowa. Analiza obiektowa. Analiza obiektowa PROJEKTOWANIE OBIEKTOWE

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Wprowadzenie do systemów informacyjnych

Zaawansowane programowanie w C++ (PCP)

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Wstęp do programowania obiektowego. Wykład 2

Programowanie obiektowe język C++

Programowanie obiektowe w języku

Java Język programowania

Transkrypt:

Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki

Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego Podejście tradycyjne (proceduralne): program jako kolekcja funkcji (a wcześniej lista instrukcji) Podejście obiektowe: program jako kolekcja współpracujących ze sobą obiektów Obiekty łączą dane i operacje na nich Zalety programowania obiektowego: Ułatwia współpracę i podział zadań między programistów Ułatwia pielęgnację i rozbudowę aplikacji Ułatwia ponowne wykorzystywanie wcześniej napisanego kodu Często umożliwia naturalne modelowanie rzeczywistości Odpowiednie dla dużych projektów, popularne w inżynierii oprogramowania 2

I Kod maszynowy II Assembler (RISC, CISC) Imperatywne Deklaratywne III Proceduralne (C, Pascal) Obiektowe (C++, Java, C#) Funkcyjne (Haskell) Logiczne (Prolog) 3

Podejście strukturalne (C++) struct Punkt { int x, y; }; void narysuj (struct Punkt P) { // ciało funkcji } Podejście obiektowe (C++) class Punkt { int x, y; public: void narysuj () { // ciało funkcji } }; 4

Klasa definiuje charakterystykę czegoś ; wyznacza modularną strukturę programu zorientowanego obiektowo Charakterystyka obejmuje atrybuty (pola, właściwości) i zachowanie (metody) Pola i metody klasy są określane jako składowe klasy Przykład: klasa Punkt opisująca cechy i zachowanie wspólne dla wszystkich punktów np. współrzędne Obiekt instancja (wystąpienie) klasy Np. konkretny Punkt punkt o współrzędnych (3,4) Zbiór wartości atrybutów obiektu w danej chwili jest określany mianem stanu obiektu 5

Metoda operacja, która może być wykonana na obiekcie, reprezentująca jego funkcjonalność Np. metoda narysuj() klasy Punkt, która może być wywołana na rzecz konkretnego obiektu klasy Punkt Przekazywanie komunikatów proces polegający na przekazaniu danych z obiektu do obiektu lub zleceniu wywołania metody na rzecz obiektu 6

Hermetyzacja ukrycie szczegółów implementacji klasy przed kodem korzystającym z klasy Składowe klasy dostępne z zewnątrz stanowią interfejs klasy Składowe niedostępne z zewnątrz mogą być zmieniane bez wpływu na pozostały kod aplikacji Realizowane poprzez kwalifikatory dostępu do składowych klasy Podstawowe kwalifikatory dostępu do składowych: public dostęp publiczny protected dostępne w klasie definiowanej i klasach pochodnych private dostępne tylko w definiowanej klasie 7

Dziedziczenie definiowanie podklasy (klasy pochodnej) jako specjalizacji klasy istniejącej (klasy bazowej, nadklasy) Np. klasa Piksel jako specjalizacja klasy Punkt Podklasa dziedziczy z klasy bazowej atrybuty i metody Podklasa może posiadać dodatkowe atrybuty i metody oraz redefiniować metody odziedziczone Dziedziczenie wielobazowe polega na definiowaniu klasy jako dziedziczącej bezpośrednio z więcej niż jednej klasy Dostępne nie we wszystkich językach Prowadzi do skomplikowanych programów 8

Abstrakcja praca z obiektami na poziomie ogólności (względem hierarchii dziedziczenia) odpowiednim dla rozwiązywanego problemu Np. traktowanie w danym kontekście instancji klasy Piksel jako instancji klasy Punkt, jeśli nie są w nim wykorzystywane atrybuty i metody niewystępujące w klasie Punkt Umożliwia np. traktowanie kolekcji wystąpień konkretnych podklas klasy Punkt ogólnie jako punktów Polimorfizm różne zachowanie w odpowiedzi na takie samo wywołanie metody w zależności od konkretnej klasy obiektu W połączeniu z dziedziczeniem i abstrakcją Późne wiązanie decyzja o tym, z której klasy metodę wywołać podejmowana w trakcie działania programu, a nie na etapie kompilacji 9

10

zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne jak i obiektowe C++ posiada bardzo rozbudowaną składnię żaden popularny kompilator nie jest w pełni zgodny z obowiązującym standardem języka, choć to się poprawia posiada rzadkie w innych językach obiektowych: dziedziczenie wielobazowe, unie, bezpośrednie zarządzanie wolną pamięcią, operacje arytmetyczne na wskaźnikach 11