Programowanie obiektowe

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

Podstawy Programowania Obiektowego

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

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

Szablony funkcji i szablony klas

Programowanie obiektowe - 1.

Technologie obiektowe

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie i projektowanie obiektowe


Podstawy programowania obiektowego

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

Technologie i usługi internetowe cz. 2

Programowanie obiektowe

Modelowanie i Programowanie Obiektowe

Języki i paradygmaty programowania

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie obiektowe

Programowanie, algorytmy i struktury danych

Definiowanie własnych klas

Języki i paradygmaty programowania. I. Wprowadzenie

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Technologie cyfrowe semestr letni 2018/2019

Programowanie Obiektowe i C++

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

Programowanie obiektowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Programowanie obiektowe

Wykład 5: Więcej o Klasach i Metodach

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

Wprowadzenie do szablonów szablony funkcji

Wstęp do programowania obiektowego. Wykład 2

Wykład 1 Informacje Podstawowe

Style programowania - krótki przeglad

Wprowadzenie do szablonów szablony funkcji

Wykład 4: Klasy i Metody

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Podstawy Języka Java

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Programowanie Obiektowe i C++ Marcin Benke

Szablony funkcji i klas (templates)

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

Paradygmaty programowania

PRZEWODNIK PO PRZEDMIOCIE

Zaawansowane programowanie w C++ (PCP)

Programowanie obiektowe

Programowanie obiektowe

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Programowanie w Ruby

Programowanie obiektowe

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

Praktyka Programowania

Technologie cyfrowe semestr letni 2018/2019

Wykład 0 Informacje Podstawowe

Programowanie w języku C++ Podstawowe paradygmaty programowania

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

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

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

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Programowanie obiektowe

Wykład 1 Informacje Podstawowe

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

Problem Próby rozwiązania Maszyna stanów Inne zastosowania Podsumowanie. Maszyny stanów. Programowanie gier bez Unity, cz. 3.

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

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

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

Wstęp do Programowania 2

Enkapsulacja, dziedziczenie, polimorfizm

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

Paradygmaty i języki programowania. Wprowadzenie. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ 1

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

Zaawansowane programowanie w C++ (PCP)

Języki programowania imperatywnego

Materiały do zajęć VII

Laboratorium 8 Diagramy aktywności

Paradygmaty programowania

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

Modelowanie obiektowe

Polimorfizm. dr Jarosław Skaruz

Java: interfejsy i klasy wewnętrzne

Język ludzki kod maszynowy

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Style programowania - krótki przeglad

TEMAT : KLASY DZIEDZICZENIE

Język programowania. Andrzej Bobyk

Programowanie obiektowe

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

Podstawy programowania. Wprowadzenie

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Diagram stanów Laboratorium 9

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Programowanie obiektowe

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Współbieżność w środowisku Java

Transkrypt:

Wykład 1 21 lutego 2019

Plan wykładu 1 Opis wykładu Zaliczenie i egzamin Literatura 2 3 Modelowanie obiektowe Abstrakcja Hermetyzacja Dziedziczenie Polimorfizm 4

Opis wykładu Zaliczenie i egzamin Literatura Plan wykładu 1 Opis wykładu Zaliczenie i egzamin Literatura 2 3 Modelowanie obiektowe Abstrakcja Hermetyzacja Dziedziczenie Polimorfizm 4

Strona i konsultacje Opis wykładu Zaliczenie i egzamin Literatura Konsultacje pok. 303, poniedziałek 10-12 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/obiekty

Cele wykładu Opis wykładu Zaliczenie i egzamin Literatura Poznanie pojęć związanych z programowaniem obiektowym Nabycie sprawności w posługiwaniu się mechanizmami obiektowymi Zdobycie umiejętności tworzenia dobrego oprogramowania za pomocą mechanizmów obiektowych

Plan wykładu Opis wykładu Zaliczenie i egzamin Literatura Java, C, Ruby

Plan wykładu Opis wykładu Zaliczenie i egzamin Literatura Java, C, Ruby Projektowanie i analiza obiektowa

Plan wykładu Opis wykładu Zaliczenie i egzamin Literatura Java, C, Ruby Projektowanie i analiza obiektowa Przegląd innych zagadnień związanych z programowaniem obiektowym

Pracownia Opis wykładu Zaliczenie i egzamin Literatura Pracownia Listy zadań, z każdej listy będą zadania do wyboru. Zadania są do oddania na pracowni.

Pracownia Opis wykładu Zaliczenie i egzamin Literatura Pracownia Listy zadań, z każdej listy będą zadania do wyboru. Zadania są do oddania na pracowni. Projekt Samodzielnie zaprojektowanie i implementacja wybranego zadania, przedstawienie projektu na pracowni.

Zaliczenie pracowni Opis wykładu Zaliczenie i egzamin Literatura Na ocenę z pracowni składają się punkty za: zaprogramowane zadaniaz list; punkty uzyskane za projekt.

Zaliczenie pracowni Opis wykładu Zaliczenie i egzamin Literatura Na ocenę z pracowni składają się punkty za: zaprogramowane zadaniaz list; punkty uzyskane za projekt. Warunek zdobycia zaliczenia zdobycie co najmniej połowy z maksimum do zdobycia punktów (pracownia i projekt); zaliczenie projektu na przynajmniej połowę maksymalnej liczby punktów.

Ocena zadań z listy Opis wykładu Zaliczenie i egzamin Literatura Progamy są oceniane na pracowni przez prowadzącego.

Ocena zadań z listy Opis wykładu Zaliczenie i egzamin Literatura Progamy są oceniane na pracowni przez prowadzącego. Zdobyte punkty Zdobyte punkty będą prezentowane w systemie USOSWeb.

Egzamin Opis wykładu Zaliczenie i egzamin Literatura Ocena z egzaminu jest przepisywana z zaliczenia

Źródła wiedzy Opis wykładu Zaliczenie i egzamin Literatura Dokumentacja firmowa i Internet Książki Wykład ;-)

Opis wykładu Zaliczenie i egzamin Literatura Bibliografia, języki programowania C, Java i Ruby Dokumentacja firmowa, internet

Bibliografia (1) Opis wykładu Zaliczenie i egzamin Literatura M. Weisfeld. Myślenie obiektowe w programowaniu H. Ledgard. Mała księga programowania obiektowego B. Meyer. Programowanie zorientowane obiektowo Brett D. McLaughin et. al. Object Oriented Analysis & Design

Bibliografia (2) Opis wykładu Zaliczenie i egzamin Literatura E. Gamma et. al. Wzorce projektowe I. Graham. Metody obiektowe w teorii i praktyce E. Yourdon G. Booch

Bibliografia (3) Opis wykładu Zaliczenie i egzamin Literatura Inne języki B. Stroustrup. Język C++ G. Shlossnagle. PHP Zaawansowane programowanie Teoria języków programowania M. Abadi, L. Cardelli. Theory of Objects K. Bruce. Foundations of Object-Oriented Languages: Types and Semantics

Plan wykładu 1 Opis wykładu Zaliczenie i egzamin Literatura 2 3 Modelowanie obiektowe Abstrakcja Hermetyzacja Dziedziczenie Polimorfizm 4

Programowanie funkcjonalne (funkcyjne) Niektóre cechy program jest reprezentowany przez funkcję (funkcje); redukcja efektów ubocznych; przykłady: LISP, ML czy Haskell.

Przykład programu funkcyjnego Definicja silni definicja matematyczna { 1 gdy n = 0 silnia(n) = n silnia(n 1) wpp Implementacja w Ocaml u let rec silnia n = if n=0 then 1 else n*silnia(n-1);;

Programowanie deklaratywne Cechy programista określa jaki wynik go interesuje; nie podaje jak to zrobić; algorytm wyszukiwania jest częścią języka; przykład: Prolog, SQL.

Programowanie deklaratywne Cechy programista określa jaki wynik go interesuje; nie podaje jak to zrobić; algorytm wyszukiwania jest częścią języka; przykład: Prolog, SQL. member(x, [X _]). member(x, [_ Y]) :- member(x, Y).

Programowanie deklaratywne Cechy programista określa jaki wynik go interesuje; nie podaje jak to zrobić; algorytm wyszukiwania jest częścią języka; przykład: Prolog, SQL. member(x, [X _]). member(x, [_ Y]) :- member(x, Y). SELECT Nr_albumu FROM Studenci WHERE obiekty_punkty > 30;

Programowanie strukturalne Algorytmy + struktury danych = programy Cechy program jest dzielony na bloki z jednym punktem wejścia; zakaz używania instrukcji skoku; przykłady języków: Pascal, Ada, Modula.

Cechy programy są implementowane za pomocą obiektów; przykłady: SIMULA, SmallTalk, Java, C.

Modelowanie obiektowe Plan wykładu 1 Opis wykładu Zaliczenie i egzamin Literatura 2 3 Modelowanie obiektowe Abstrakcja Hermetyzacja Dziedziczenie Polimorfizm 4

Modelowanie obiektowe Pisanie programów na zamówienie Specyfikacja programu Napisz mi program, w którym bym notował elektronicznie różne fakty związane z moim akwarium, na przykład liczbę i gatunki ryb, temperaturę, częstotliwość karmienia.

Modelowanie obiektowe Pisanie programów na zamówienie Specyfikacja programu Napisz mi program, w którym bym notował elektronicznie różne fakty związane z moim akwarium, na przykład liczbę i gatunki ryb, temperaturę, częstotliwość karmienia.

Modelowanie obiektowe Pisanie programów na zamówienie Specyfikacja programu Napisz mi program, w którym bym notował elektronicznie różne fakty związane z moim akwarium, na przykład liczbę i gatunki ryb, temperaturę, częstotliwość karmienia.

Analiza specyfikacji Modelowanie obiektowe Implementacja obiektów świata rzeczywistego, np. osób, procesów, dokumentów, zdarzeń. Niewiele informacji o tym, co należy zrobić z danymi. Specyfikacja jest bardzo nieformalna, dalsze uszczegółowienie może sporo pozmieniać. Na pewno coś się zmieni (potrzeby użytkownika, prawo, system operacyjny etc).

Modelowanie danych Modelowanie obiektowe Naturalne jest najpierw zdefiniowanie pojęcia (danej), a potem określenie operacji, jakie będziemy na tym pojęciu wykonywali

Obiekty Modelowanie obiektowe Obiekt rzeczywisty Obiekt: rzeczywiste pojęcie (osoba, przedmiot, zdarzenie etc) posiadające pewne właściwości (rozmiar, czas, kolor). Reprezentacja obiektu Obiekt: reprezentacja rzeczywistego pojęcia w programie. Obiekty mają cechy reprezentowane za pomocą pól, zwane stanem obiektu, oraz zbiór operacji.

Modelowanie obiektowe Zalety programowania obiektowego Implementacja obiektowa w naturalny sposób reprezentuje obiekty rzeczywiste.

Modelowanie obiektowe Zalety programowania obiektowego Implementacja obiektowa w naturalny sposób reprezentuje obiekty rzeczywiste. pojęcie rzeczywiste = klasa cechy rzeczywistego obiektu = pola obiektu operacje na obiekcie = metody obiektu

Modelowanie obiektowe class Dog {

Modelowanie obiektowe class Dog { Color color;

Modelowanie obiektowe Hau hau class Dog { Color color; public void szczekanie() { System.out.println("Hau hau"); } }

Modelowanie obiektowe Cechy programowania obiektowego abstrakcja hermetyzacja (enkapsulacja) dziedziczenie polimorfizm

Abstrakcja Modelowanie obiektowe Nieformalna definicja abstrakcji Definiujemy co należy zrobić, nie definiujemy jak.

Abstrakcja Modelowanie obiektowe Nieformalna definicja abstrakcji Definiujemy co należy zrobić, nie definiujemy jak. Definicja stosu liczb całkowitych: operacje void push(int element) int pop() boolean empty() Własności listy x : {lista.push(x); y = lista.pop()} x = y

Modelowanie obiektowe Pojęcie hermetyzacji (enkapsulacji) Ukrywanie "pomocniczych" elementów obiektu (pól i metod) i jawne udostępnianie wskazanych funkcjonalności: interfejs. Zalety hermetyzacji: odporność na zepsucie; łatwa zmiana implementacji.

Modelowanie obiektowe Pojęcie hermetyzacji (enkapsulacji) Ukrywanie "pomocniczych" elementów obiektu (pól i metod) i jawne udostępnianie wskazanych funkcjonalności: interfejs. Zalety hermetyzacji: Przykład odporność na zepsucie; łatwa zmiana implementacji. Implementacja listy jednokierunkowej

Strukturalna implementacja listy struct listelem { int elem; struct listelem * l i s t a ; } void wstaw( struct listelem * l i s t a, int elem ) ; int szukaj ( struct listelem * l i s t a, int elem ) ;

Strukturalna implementacja listy struct listelem { int elem; struct listelem * l i s t a ; } void wstaw( struct listelem * l i s t a, int elem ) ; int szukaj ( struct listelem * l i s t a, int elem ) ; Komentarz Dane i operacje na danych są rozdzielone Jawna implementacja struktury danych Niebezpieczeństwo naruszenia integralności danych przez "obcy" kod.

Schemat implementacji obiektowej class Lista { int arr[] = new int[1000]; int pos = 0; } public void wstaw(int elem) {... } public boolean szukaj(int elem) {... }

Schemat implementacji obiektowej class Lista { int arr[] = new int[1000]; int pos = 0; } public void wstaw(int elem) {... } public boolean szukaj(int elem) {... } Próba zepsucia lista.pos = -3

Implementacja obiektowa, wersja 1. class Lista { int arr[] = new int[1000]; int pos = 0; } public void wstaw(int elem) { arr[pos] = elem; pos++; } public boolean szukaj(int elem) { for (int i = 0; i < pos; i++) if (arr[i] == elem) return true; return false; }

Implementacja obiektowa, wersja 2. class Lista { Lista next; int store; public void wstaw(int elem) { Lista cursor = this; while (cursor.next!= null) cursor = cursor.next; cursor.next = new Lista(); cursor.next.store = elem; } } public boolean szukaj(int elem) { Lista cursor = this; while (cursor!= null) { if (cursor.store == elem) return true; cursor = cursor.next; } return false; }

Cechy implementacji obiektowej Modelowanie obiektowe Struktura danych i operacje są w jednym miejscu; dostęp do implementacji tylko poprzez wyspecyfikowane metody; stała lista operacji (wstaw i szukaj); zmienna implementacja, niewidoczna "z zewnątrz".

Definicja dziedziczenia Modelowanie obiektowe Dziedziczenie: utworzenie klasy na podstawie innej, już istniejącej klasy.

Przykład dziedziczenia Modelowanie obiektowe Pojazd + włączsilnik() + wyłączsilnik() Wywrotka + przechyl() + ustaw() +tankowanie() Dźwig + wciągaj() + opuszczaj() + tankowanie()

Zalety dziedziczenia Modelowanie obiektowe uporządkowanie podobnych pojęć; wielokrotne wykorzystanie tego samego kodu.

Co to jest polimorfizm Modelowanie obiektowe Opis Z polimorfizmem mamy do czynienia gdy jedna nazwa (np. nazwa metody) może oznaczać różne (w sensie implementacji) faktyczne metody.

Przykład polimorfizmu Modelowanie obiektowe 1 Pojazd p = new Wywrotka ( ) ; 2 p. tankowanie ( ) ; 3 p = new Dzwig ( ) ; 4 p. tankowanie ( ) ;

Przykład polimorfizmu Modelowanie obiektowe 1 2 p. tankowanie ( ) ; 3 4 p. tankowanie ( ) ;

Inny polimorfizm: +, Modelowanie obiektowe Liczby typu int 2 + 2 3 4 x (y + z) Liczby typu float 2.71 + 3.0 2 3.14 x (y + z)

Inny polimorfizm: +, Modelowanie obiektowe Liczby typu int 2 + 2 3 4 x (y + z) Liczby typu float 2.71 + 3.0 2 3.14 x (y + z) Macierze [ ] 1 0 + 0 1 [ 0 1 1 0 ] [ ] 1 0 0 1 [ ] 0 1 1 0 x (y + z)

Plan wykładu 1 Opis wykładu Zaliczenie i egzamin Literatura 2 3 Modelowanie obiektowe Abstrakcja Hermetyzacja Dziedziczenie Polimorfizm 4

Języki obiektowe Java, SmallTalk, Ocaml, C++, Python, Self, C, Simula, Eiffel, CommonLisp,...

uwagi Uwaga 1. Można programować w stylu obiektowym w językach nieobiektowych.

uwagi Uwaga 1. Można programować w stylu obiektowym w językach nieobiektowych. Uwaga 2. Używanie języka obiektowego nie oznacza że się programuje obiektowo.