Obiekty, aspekty, komponenty

Wielkość: px
Rozpocząć pokaz od strony:

Download "Obiekty, aspekty, komponenty"

Transkrypt

1 Obiekty, aspekty, komponenty Obiekty, aspekty, komponenty Bartosz Walter

2 Rozdział zagadnień Zasada rozdziału zagadnień (Separation of Concerns) program powinien być zdekomponowany w taki sposób, aby różne jego aspekty znajdowały się w dobrze odseparowanych od siebie modułach każdy aspekt zajmuje się jednym zagadnieniem zagadnienie to szczególny cel programu, koncepcja albo funkcja D. Parnas "On the criteria to be used in decomposing systems..." (1972) G. Polya "How to Solve It?" (1973) E. Dijkstra "A Discipline of Programming" (1976) Wprowadzenie do przedmiotu (2)

3 Wprowadzenie do przedmiotu (3) Plan wykładu Obiektowość Aspekty Komponenty

4 Wprowadzenie do przedmiotu (4) Plan wykładu Obiektowość Aspekty Komponenty

5 Wprowadzenie do przedmiotu (5) Obiektowość Abstrakcja Polimorfizm Obiekt Hermetyzacja Dziedziczenie Odpowiedzialność Elastyczność Powtórne użycie Modularyzacja

6 Wprowadzenie do przedmiotu (6) Czym jest obiekt? Definicja 1 Obiekt w reprezentuje element świata rzeczywistego; jest strukturą posiadającą tożsamość, stan (pola) i zachowanie (metody). Definicja 2 Obiekt w pełni odpowiada za pewien fragment świata rzeczywistego. Sposób realizacji tej odpowiedzialności zależy od samego obiektu.

7 Obiektowość a podejście strukturalne Przykład Wykładowca przeprowadza egzamin. W zależności od oceny oraz rodzaju egzaminu, za który została wystawiona, student zalicza przedmiot, podchodzi do poprawki lub prosi o zaliczenie warunkowe. Wykładowca powinien każdemu studentowi, w zależności od jego indywidualnej sytuacji, przekazać wskazówki dotyczące dalszego postępowania. na podstawie przykładu Wprowadzenie A. Shallowaya do przedmiotu i J. Trotta (7)

8 Obiektowość a podejście strukturalne Rozwiązanie 1 1. Utwórz listę studentów i ich ocen 2. Dla każdego studenta z listy a) określ jego ocenę b) określ dalszy sposób postępowania studenta c) przekaż informacje studentowi Wprowadzenie do przedmiotu (8)

9 Obiektowość a podejście strukturalne Rozwiązanie 2 Wykładowca 1. Opublikuj listę studentów i ich ocen 2. Opublikuj informację o sposobie dalszego postępowania w zależności od oceny Student 1. Znajdź swoją ocenę na liście udostępnionej przez Wykładowcę 2. Określ sposób postępowania na podstawie oceny 3. Postąp zgodnie z instrukcją Wprowadzenie do przedmiotu (9)

10 Obiektowość a podejście strukturalne Pojawiają się nowe wymagania... Studenci powtarzający przedmiot nie mają prawa do egzaminu warunkowego Studenci niepełnosprawni mogą poprosić o jeszcze jeden termin egzaminu Studenci z wymiany zagranicznej nie muszą zdawać tego egzaminu, mogą wybrać inny... Wprowadzenie do przedmiotu (10)

11 Obiektowość a podejście strukturalne Wnioski Podział odpowiedzialności pozwolił uprościć algorytm zmniejszyć powiązania między obiektami zwiększyć otwartość systemu na zmiany Wprowadzenie do przedmiotu (11)

12 Opis klasy Klasa Nauczyciel Odpowiedzialność zarządzanie kolekcją udostępnianie ocen uczniom Współdziałanie Kolekcja: dodawanie i usuwanie ocen Uczeń: udostępnianie ocen Wprowadzenie do przedmiotu (12)

13 Spójność obiektu Spójność obiektu (ang. cohesion) opis współpracy elementów obiektu stopień powiązania metod i pól obiektu przy wypełnieniu nałożonej na niego odpowiedzialności A a c b d e Wniosek Prawidłowo zaprojektowana klasa jest spójna Wprowadzenie do przedmiotu (13)

14 Powiązania między obiektami Powiązania między obiektami (ang. coupling) opis zależności pomiędzy obiektami stopień powiązania obiektów, które nie są spokrewnione B1 A B2 Wniosek Niski stopień powiązań wspiera abstrakcję i hermetyzację w systemie Wprowadzenie do przedmiotu (14)

15 Wprowadzenie do przedmiotu (15) Asocjacja Użytkownik +posiada Telefon Telefon należy do Użytkownika Telefon może zmienić Użytkownika, Użytkownik może zmienić Telefon Użytkownik zna swój Telefon, Telefon nie wie, kto jest jego właścicielem Istnienie Użytkownika nie ma wpływu na istnienie Telefonu i vice wersa

16 Wprowadzenie do przedmiotu (16) Agregacja Katalog Książka Katalog zawiera Książki Książka może należeć do wielu Katalogów jednocześnie Istnienie Katalogu nie ma wpływu na istnienie Książki i vice versa

17 Wprowadzenie do przedmiotu (17) Kompozycja Książka Rozdział Książka składa się z Rozdziałów, Rozdział jest częścią Książki Rozdział może należeć tylko do jednej Książki Istnienie Książki decyduje o istnieniu jej Rozdziałów

18 Wprowadzenie do przedmiotu (18) Interfejsy «Interface» Komunikator komunikator.zadzwon() zadzwon() odbierz() Telefon Tel. komórkowy Tel. satelit. zadzwon() odbierz() zadzwon() odbierz() zadzwon() odbierz() Wnioski Interfejs mówi CO robi klasa, a nie W JAKI SPOSÓB. Interfejs opisuje ROLĘ obiektu.

19 Wprowadzenie do przedmiotu (19) Wielokrotne interfejsy «Interface» Komunikator zadzwon() odbierz() Komunikator Telefon Tel. komórkowy Tel. satelit. zadzwon() odbierz() zadzwon() odbierz() zadzwon() odbierz() Zegarek czas() «Interface» Czasomierz czas() Komunikator komunikator = new TelefonKomorkowy(); komunikator.zadzwon();

20 Wprowadzenie do przedmiotu (20) Wielokrotne interfejsy «Interface» Komunikator zadzwon() odbierz() Telefon Tel. komórkowy Tel. satelit. zadzwon() odbierz() zadzwon() odbierz() zadzwon() odbierz() Zegarek czas() «Interface» Czasomierz Czasomierz Czasomierz czasomierz = new Zegarek(); czasomierz.czas(); czas()

21 Wprowadzenie do przedmiotu (21) Wielokrotne interfejsy «Interface» Komunikator zadzwon() odbierz() Komunikator Telefon Tel. komórkowy Tel. satelit. zadzwon() odbierz() zadzwon() odbierz() zadzwon() odbierz() Zegarek czas() «Interface» Czasomierz Czasomierz czas() Komunikator komorka = new TelefonKomorkowy(); Czasomierz komorka = new TelefonKomorkowy();

22 Wprowadzenie do przedmiotu (22) Dziedziczenie Odrzutowiec jest rodzajem Samolotu Odrzutowiec może zastąpić Samolot Odrzutowiec posiada niejawną instancję Samolotu związek między Odrzutowcem i Samolotem jest nierozerwalny

23 Wprowadzenie do przedmiotu (23) Dziedziczenie vs. użycie interfejsu Zegarek czas() «Interface» Komunikator zadzwon() odbierz() Zegar ścienny czas() Telefon zadzwon() odbierz() Telefon kom. zadzwon() odbierz() czas() Zegar ścienny jest rodzajem Zegarka. Posiada wszystkie jego cechy i działa tak samo Zegar ścienny dziedziczy zarówno typ, jak i implementację Telefon i Telefon kom. są Komunikatorami. Oba obiekty mogą inicjować i odbierać rozmowy Telefon i Telefon kom. współdzielą tylko typ

24 Dziedziczenie klas vs. dziedziczenie interfejsów Zegarek czas() «Interface» Czasomierz czas() Zegar ścienny czas() Zegar ścienny czas() «Interface» Zegar cyfr. czas() wyswietl() Zegarek ręczny czas() wyswietl() Wnioski Dziedziczenie klas przekazuje podklasie typ i implementację Dziedziczenie interfejsów dotyczy tylko typu Wprowadzenie do przedmiotu (24)

25 Wprowadzenie do przedmiotu (25) Hermetyzacja Definicja 1 Hermetyzacja oznacza ukrywanie danych przed niepożądanym dostępem Definicja 2 Hermetyzacja oznacza ukrywanie każdej decyzji projektowej, która może ulec zmianie: interfejsu, implementacji, zachowania metody, danych Wniosek Należy identyfikować zmienność w systemie i hermetyzować ją

26 Hermetyzacja danych (1) Przykład Ocena może zmienić swoją wartość Konstruktor tworzy ułomny obiekt Ocena ocena = new Ocena(); ocena.ustawwartosc(ocena.bdb); Wprowadzenie do przedmiotu (26)

27 Hermetyzacja danych (2) Przykład Wykładowca wystawia oceny Kto jeszcze może wystawić oceny? Kolekcja oceny = nauczyciel.oceny(); oceny.dodaj(new Ocena(Ocena.BDB)); Wprowadzenie do przedmiotu (27)

28 Wprowadzenie do przedmiotu (28) Zadanie Oceń jakość tego projektu

29 Rozwiązanie Wprowadzenie do przedmiotu (29)

30 Wprowadzenie do przedmiotu (30) Plan wykładu Obiektowość Aspekty Komponenty

31 Rozdział zagadnień Zasada rozdziału zagadnień (Separation of Concerns) program powinien być zdekomponowany w taki sposób, aby różne jego aspekty znajdowały się w dobrze odseparowanych od siebie częściach systemu każdy aspekt zajmuje się jednym zagadnieniem zagadnienie to szczególny cel programu, koncepcja albo funkcja D. Parnas "On the criteria to be used in decomposing systems..." (1972) G. Polya "How to Solve It?" (1973) E. Dijkstra "A Discipline of Programming" (1976) Wprowadzenie do przedmiotu (31)

32 Wprowadzenie do przedmiotu (32) Nisza aspektowa W programowaniu obiektowym system jest zbiorem współdziałających, samodzielnych i odpowiedzialnych jednostek obiektów klasy ukrywają implementację, prezentując jedynie interfejsy polimorfizm jest podstawowym mechanizmem łączenia podobnych koncepcji...ale jak prawidłowo zaimplementować cechy, które przecinają wiele niespokrewnionych ze sobą obiektów?

33 Wprowadzenie do przedmiotu (33) Podział wymagań Wymagania podstawowe (biznesowe) Wymagania systemowe (techniczne)

34 Wprowadzenie do przedmiotu (34) Modularyzacja kodu funkcje podstawowe aspekt 1 aspekt 2 program obiektowy program aspektowy

35 Wprowadzenie do przedmiotu (35) OOP a AOP Programowanie obiektowe grupowanie podobnych koncepcji za pomocą hermetyzacji i dziedziczenia podstawowa jednostka modularyzacji: klasa Programowanie aspektowe grupowanie podobnych koncepcji w niezwiązanych ze sobą klasach, niezależnie od dziedziczenia dodatkowy mechanizm modularyzacji: aspekt

36 Język AspectJ AspectJ G. Kiczales (2001), Xerox Palo Alto Research Center aspektowe rozszerzenie Javy aspekt jako specyficzna klasa możliwość zmiany zachowania i struktury kodu łączenie aspektów i klas na poziomie bajtkodu własny kompilator ajc AspectJ Java Wprowadzenie do przedmiotu (36)

37 Aspekt Aspekt (w języku AspectJ) specjalizowana klasa, która może przecinać inne klasy podlega dziedziczeniu jednostka modularyzacji (obok klasy) posiada typowe elementy klasy łączy punkty cięcia i porady Aspekt.aj Aspekt.class kompilacja Wprowadzenie do przedmiotu (37)

38 Wprowadzenie do przedmiotu (38) Zasada działania AspectJ aspekt aspekt aspekt pliki *.aj weaver obiekt obiekt obiekt pliki *.java pliki *.class

39 Prosty aspekt w AspectJ public class HelloWorld { } public static void hej(string tekst) { System.out.println(tekst); } public static void hejkolego(string tekst, String imie) { System.out.println(imie + ", " + tekst); } public static int hejludzie(string tekst, String[] imiona) { for (int i = 0; i < imiona.length; i++) System.out.println(imiona[i] + ", " + tekst); return imiona.length; } na podstawie Wprowadzenie przykładu do R. Laddada przedmiotu (2002) (39)

40 Prosty aspekt w AspectJ public aspect Maniery { pointcut wywolaniehej () : call(public static void HelloWorld.hej*(..)); before() : wywolaniehej() { System.out.println("Dzień dobry!"); } } after() : wywolaniehej() { System.out.println("Dziękuję!"); } na podstawie przykładu R. Laddada (2002) Wprowadzenie do przedmiotu (40)

41 Punkty złączeń Punkty złączenia (ang. joinpoints) są dowolnymi, identyfikowalnymi miejscami w programie. Przykłady: wywołanie metody i konstruktora wykonanie metody i konstruktora dostęp do pola obsługa wyjątku statyczna inicjacja klasy Wprowadzenie do przedmiotu (41)

42 Punkty cięcia Punkt cięcia (ang. pointcut) jest zdefiniowaną kolekcją punktów złączenia. nazwa punktu cięcia pointcut wywolaniehej () : call(public static void HelloWorld.hej*(..)); definicja punktu złączenia Wprowadzenie do przedmiotu (42)

43 Wprowadzenie do przedmiotu (43) Porada Porada (ang. advice) jest fragmentem kodu programu wykonywanym przed, po lub zamiast osiągnięcia przez program punktu cięcia. brak kontekstu punkt cięcia z określeniem momentu obsługi before() : call (public * Klasa.metoda(..)) { // kod porady, który będzie wykonany przed // wywołaniem metody metoda w klasie Klasa }

44 Rodzaje porad Rodzaje porad w AspectJ before() wykonywana tuż przed punktem cięcia after() {returning throwing} wykonywana tuż po punkcie cięcia (poprawnym lub zgłaszającym wyjątek) around(context) otaczająca punkt cięcia i decydująca o jego wykonaniu lub nie Wprowadzenie do przedmiotu (44)

45 Przykład: aspekt logujący wywołania metod public aspect Logger { pointcut wywolaniemetody() : call(* * (..)) &&! within(logger); } before() : wywolaniemetody() { } System.out.println("Przed wywołaniem metody " + thisjoinpoint.getsignature()); after() returning : wywolaniemetody() { System.out.println("Po wywołaniu metody " + thisjoinpoint.getsignature()); } after() throwing : wywolaniemetody() { System.out.println("Metoda " + thisjoinpoint.getsignature() + " zgłosiła wyjątek"); } Wprowadzenie do przedmiotu (45)

46 Przykład: do czego służy ten aspekt? Jaki jest efekt użycia tego aspektu? aspect A { before(): call(* *(..)) { System.out.println("przed"); } after(): call(* *(..)) { System.out.println("po"); } } Wprowadzenie do przedmiotu (46)

47 Przykład: wersja 2 Jaki jest efekt użycia tego aspektu? aspect A { before(): call(* *(..)) { System.out.println("przed"); } after() returning: call(* *(..)) { System.out.println("po"); } } Wprowadzenie do przedmiotu (47)

48 Przykład: wersja 3 Ta wersja nie posiada tej wady... aspect A { before(): call(* *(..)) &&!within(a) { System.out.println("przed"); } after() returning: call(* *(..)) &&!within(a) { System.out.println("po"); } } Wprowadzenie do przedmiotu (48)

49 Wprowadzenie do przedmiotu (49) Plan wykładu Obiektowość Aspekty Komponenty

50 Wprowadzenie do przedmiotu (50) Obiekty a komponenty Czego jeszcze brak obiektom? Programowanie obiektowe łączenie obiektów w kodzie programu późne wiązanie wywołań opcjonalna hermetyzacja użycie polimorfizmu użycie dziedziczenia klas Programowanie komponentowe łączenie przez konfigurację późne wiązanie wywołań i ładowanie kodu na żądanie obowiązkowa hermetyzacja dziedziczenie interfejsów powtórne użycie na poziomie binariów

51 Komponent Komponent jest podstawową jednostką oprogramowania z kontraktowo (deklaratywnie) opisanymi interfejsami, i podanymi wprost zależnościami. Komponent może zostać skonfigurowany i wdrożony niezależnie od programisty, który go stworzył. Clemens Szyperski "Oprogramowanie komponentowe. Obiekty to za mało" (1998) Wprowadzenie do przedmiotu (51)

52 Wprowadzenie do przedmiotu (52) Własności komponentu Podstawowe własności komponentu Komponenty nigdy nie sprawują kontroli nad sobą zasada hollywoodzka: proszę do nas nie dzwonić, to my oddzwonimy... Kontener jest specjalnym elementem zarządzającym wszystkimi komponentami steruje procesem tworzenia komponentami rozwiązuje zależności pomiędzy komponentami zarządza cyklem życia komponentów

53 Wprowadzenie do przedmiotu (53) Przykład zawiera Sprawny Samochód musi zawierać Silnik.

54 Wprowadzenie do przedmiotu (54) Tradycyjne rozwiązywanie zależności 4. zmontuj A i B 1. utwórz komponent A komponent A (Samochód) Klient 5. zwróć zmontowane komponenty A i B 2. A zależy od B 3. utwórz komponent B komponent B (Silnik) komponent C (Przyczepa)

55 Kontener zarządzający komponentami Wprowadzenie do przedmiotu (55) Odwrócone rozwiązywanie zależności 2. znajdź A komponent A (Samochód) 3. A zależy od B Klient 1. utwórz komponent A 5. zwróć komponent A zmontowany z B 4. znajdź B komponent B (Silnik) komponent C (Przyczepa)

56 Wprowadzenie do przedmiotu (56) Wybrane sposoby rozwiązywania zależności Interface injection Setter injection Komponenty implementują dedykowany interfejs, poprzez który otrzymują obiekt służący do wyszukiwania zależności Zależności są przekazywane przez właściwości obiektu (metody setxxx() zgodne z konwencją JavaBeans)

57 Wyszukiwanie zależności poprzez interfejs public interface Serviceable { public void service(servicemanager manager); } public class Samochod implements Serviceable { private ServiceManager manager = null; private Silnik silnik = null; public void service(servicemanager manager) { this.manager = manager; } } public void zbuduj() { this.silnik = (Silnik) manager.lookup("silnik"); } Wprowadzenie do przedmiotu Apache Avalon (57)

58 Wstrzykiwanie zależności przez właściwości public class Samochod { private Silnik silnik = null; public Samochod() { } } public void setsilnik(silnik silnik) { } this.silnik = silnik; Kontener Samochód -> Silnik -> Silnik1_6 Wprowadzenie do przedmiotu (58)

59 Odwrócenie sterowania Odwrócenie sterowania pasywne API komponentu komunikacja przez interfejsy automatyczne spełnianie zależności przeniesienie odpowiedzialności za rozwiązanie zależności na kontener Wprowadzenie do przedmiotu (59)

60 Wprowadzenie do przedmiotu (60) Podsumowanie Obiektowość jest podejściem do problemu modularyzacji programu Istotą obiektowości jest pojęcie odpowiedzialności Aspekty stanowią rozszerzenie obiektowości o nowy rodzaj jednostki Komponenty, w odróżnieniu od obiektów, są zewnętrznie konfigurowalne

Programowanie aspektowe

Programowanie aspektowe Programowanie aspektowe Prowadzący: Bartosz Walter Programowanie aspektowe 1 Plan wykładu Rozdział zagadnień (ang. Separation of Concerns) Elementy języka AspectJ Inne implementacje AOP Programowanie aspektowe

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Technologie obiektowe

Technologie obiektowe WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność

Bardziej szczegółowo

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

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

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

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

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Programowanie aspektowe na przykładzie AspectJ JUG Poznań, Jacek Pospychała

Programowanie aspektowe na przykładzie AspectJ JUG Poznań, Jacek Pospychała Programowanie aspektowe na przykładzie AspectJ Plan prezentacji Co to programowanie aspektowe i AspectJ Szybki start z AspectJ (przykład) Uruchamianie aplikacji z aspektami Jak to działa Możliwości wplatania

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

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

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 O mnie prowadzący wykład: Dariusz Wardowski pokój: A334 dyżur: środa, godz. 10.00 12.00 e-mail: wardd@math.uni.lodz.pl

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki

Bardziej szczegółowo

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

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

problem w określonym kontekście siły istotę jego rozwiązania

problem w określonym kontekście siły istotę jego rozwiązania Wzorzec projektowy Christopher Alexander: Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego

Bardziej szczegółowo

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

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego. Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Programowanie komponentowe

Programowanie komponentowe Programowanie komponentowe Prowadzący: Bartosz Walter Programowanie komponentowe 1 Plan wykładu Pojęcie komponentu Rozwiązywanie zaleŝności Metody wstrzykiwania zaleŝności Cykl Ŝycia komponentu Przykłady

Bardziej szczegółowo

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

Zaawansowane programowanie w języku C++ Klasy w C++ Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

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

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 8 Początki Javy Java została pierwotnie zaprojektowana dla telewizji interaktywnej, ale była to zbyt zaawansowaną technologią dla branży cyfrowej telewizji kablowej. James Gosling, Mike Sheridan i Patrick

Bardziej szczegółowo

Materiały do zajęć VII

Materiały do zajęć VII Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Pico. Wstęp do kontenerów IoC.

Pico. Wstęp do kontenerów IoC. Pico Wstęp do kontenerów IoC Michal.Malecki@man.poznan.pl Plan prezentacji Wzorzec Inversion of Control (IoC) Wyszukiwanie zależności (Dependency Injection) PicoContainer Case Study Podsumowanie Inversion

Bardziej szczegółowo

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Zofia Kruczkiewicz 1 Zunifikowany iteracyjno- przyrostowy proces tworzenia oprogramowania kiedy? Przepływ działań Modelowanie przedsiębiorstwa

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Wykład Ćwiczenia Laboratorium Projekt Seminarium WYDZIAŁ ELEKTRONIKI KARTA PRZEDMIOTU Nazwa w języku polskim Języki programowania Nazwa w języku angielskim Programming languages Kierunek studiów (jeśli dotyczy): Informatyka - INF Specjalność (jeśli dotyczy):

Bardziej szczegółowo

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

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1 Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wymagania 4. Problemy z podejściem nieobiektowym

Bardziej szczegółowo

Podstawy Języka Java

Podstawy Języka Java Podstawy Języka Java Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 24.02.2014 WYKŁAD 1 Wzorce projektowe Znaczenie

Bardziej szczegółowo

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

Języki i metody programowania Java. Wykład 2 (część 2) Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc

Bardziej szczegółowo

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

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h Programowanie II Lista 3 Modyfikatory dostępu plik TKLientBanku.h plik z funkcją main Przyjaźń Dziedziczenie Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to

Bardziej szczegółowo

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:

Bardziej szczegółowo

Programowanie obiektowe. Wprowadzenie

Programowanie obiektowe. Wprowadzenie 1 Programowanie obiektowe Wprowadzenie 2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 10 - klasy abstrakcyjne i interfejsy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 17 maja 2017 1 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

Wprowadzenie do systemów informacyjnych

Wprowadzenie do systemów informacyjnych Uwagi ogólne: Wprowadzenie do systemów informacyjnych Projektowanie obiektowe Obiektowość jest nową ideologią, która zmienia myślenie realizatorów SI z zorientowanego na maszynę na zorientowane na człowieka.

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

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

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double

Bardziej szczegółowo

Programowanie komponentowe 5

Programowanie komponentowe 5 Budowa warstwy klienta w architekturze typu klient-serwer zbudowanych z komponentów typu EE - klient desktopowy i internetowy. Zastosowanie komponentów opartych na technologii EJB 3.2. na podstawie https://docs.oracle.com/javaee/7/jeett.pdf

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 12 Marcin Młotkowski 16 maja 2018 Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 482 / 537 Dziedziczenie Dziedziczenie a składanie Plan wykładu 1 Analiza

Bardziej szczegółowo

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Historia modeli programowania

Historia modeli programowania Języki Programowania na Platformie.NET http://kaims.eti.pg.edu.pl/ goluch/ goluch@eti.pg.edu.pl Maszyny z wbudowanym oprogramowaniem Maszyny z wbudowanym oprogramowaniem automatyczne rozwiązywanie problemu

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

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

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 13 Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ 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

Bardziej szczegółowo

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie

Bardziej szczegółowo

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

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: - Nazwa modułu: Programowanie obiektowe Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3 Wydział: Zarządzania Kierunek: Informatyka i Ekonometria Specjalność: - Poziom studiów: Studia I stopnia

Bardziej szczegółowo

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

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów. Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów. Paweł Świątek Agenda 1. Sprawy organizacyjne 2. Zasady zaliczenia 3. Cele kursu 4.

Bardziej szczegółowo

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

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016 Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016 1 Wzorce strukturalne 1.1 Facade Motto: uproszczony interfejs dla podsystemu z wieloma interfejsami class SmtpFacade

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Dziedziczenie jednobazowe, poliformizm

Dziedziczenie jednobazowe, poliformizm Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie

Bardziej szczegółowo

Obiektowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Obiektowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012 Obiektowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012 Obiekt jest abstrakcją pewnego konkretnego bytu ze świata rzeczywistego, reprezentujący rzecz (obiekt fizyczny), pojęcie

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 1: Wprowadzenie do programowania obiektowego Dr hab. inż. Stanisław Deniziak, prof.pk, p.101, 410 sdeniziak@pk.edu.pl Informacje organizacyjne Wykład 30h Zaliczenie: egzamin

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Modelowanie obiektowe

Modelowanie obiektowe Modelowanie obiektowe ZPO 2018/2019 Dr inż. W. Cichalewski Materiały wykonane przez W. Tylman Diagramy klas Diagramy klas Zawiera informacje o statycznych związkach między elementami (klasami) Są ściśle

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 7 - sprytne wskaźniki. 20 kwietnia 2007 Potrzeba współdzielenia kodu źródłowego Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania największego elementu) Szablony mechanizm

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

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

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

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

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor

Bardziej szczegółowo

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne Przykład 1 metody i atrybuty statyczne public class Napis1 { static String wynik; public static void Inicjuj() {wynik = ""; PODEJŚCIE OBIEKTOWE public static void Dopisz_do_wyniku(char ch) { wynik+="\nkod

Bardziej szczegółowo

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

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne) Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Programowanie obiektowe (Java) Nazwa modułu w języku angielskim Object oriented

Bardziej szczegółowo