Michał Stochmiałek Wprowadzenie do programowania aspektowego
|
|
- Kajetan Laskowski
- 9 lat temu
- Przeglądów:
Transkrypt
1 Michał Stochmiałek Wprowadzenie do programowania aspektowego Politechnika Wrocławska, Wrocław, maj 2004
2 Streszczenie Artykuł wprowadza czytelnika w teoretyczne podstawy programowania aspektowego (ang. Aspect Oriented Programming - AOP). Ten nowy paradygmat programistyczny za kilka lat będzie kursem obowiązkowym każdego studenta informatyki. Do tego czasu jednak warto zapoznać się z tym innowacyjnym podejściem do programowania, jak również, w ogólności, do projektowania systemów informatycznych.
3 Wprowadzenie do programowania aspektowego 1 1. Problem przecinających się zagadnień Prawdopodobnie każdy programista spotkał się z poniższym paradoksem. Rozwijana przez niego aplikacja składa się nie tylko z implementacji jej głównego celu, ale również innych pobocznych zagadnień (ang. concern) (można powiedzieć: ortogonalnych względem głównego celu). Na przykład źródła aplikacji biznesowej nie zawierają tylko logiki biznesowej (na przykład obliczenie wartości koszyka z zakupami w sklepie internetowym), ale dodatkowo implementację logowania, spójności transakcyjnej, autoryzacji, bezpieczeństwa, synchronizacji wielowątkowej i wiele innych. Jest to oczywiście zjawisko normalne, będące implikacją złożoności wymagań klienta dotyczących projektowanego systemu. Odbiorca na pewno nie zaakceptowałby aplikacji, która nie implementuje wymaganych ortogonalnych zagadnień. Dobrą metaforą takiego stanu rzeczy jest pryzmat, co ilustruje rysunek 1. Puszczając na niego promień wymagań klienta, uzyskujemy rozczepione poszczególne aspekty. Odpowiedzialnym za ten proces w większości metodyk jest analityk. Jego zadaniem jest przeanalizowanie wymagań klienta oraz wyodrębnienie poszczególnych ich aspektów. Rys. 1. Metafora pryzmatu (źródło: [Laddad2002]) Zjawisko to, jak mówiłem, jest naturalne. Problem jednak leży w innej kwestii: w sposobie przełożenia szeregu ortogonalnych aspektów wymagań klienta na konkretną implementację (czy we wcześniejszych fazach wytwarzania oprogramowania na model projektowy). 2. Paradygmat programowania obiektowego Na przestrzeni ostatnich kilkudziesięciu lat pojawiło się wiele różnych paradygmatów programistycznych. Ich rozwój jest podyktowany coraz większą złożonością systemów informatycznych, ale czasami wydaje się być niewystarczający. Aktualnie powszechne są języki bazujące na paradygmacie programowania obiektowego (np. C#, Java, C++). Dostarczając mechanizmy takie jak klasy, enkapsulacja czy dziedziczenie, pozwalają na modelowanie systemów informatycznych w kategoriach świata rzeczywistego. Człowiek z natury klasyfikuje elementy otoczenia zewnętrznego, więc jest to dla nas naturalne. Pojawiają się jednak sytuacje, gdy języki obiektowe są niewystarczające. Zilustruje to przykładem dużej aplikacji OpenSource zaprojektowanej według paradygmatu obiektowego. Na rysunku 2 został przedstawiony wykres podzbioru klas serwera Apache
4 2 Michał Stochmiałek Tomcat. Każdy słupek obrazuje pojedynczą klasę. Natomiast na czerwono został zaznaczony kod źródłowy odpowiedzialny za przetwarzanie plików formatu XML. Jak widać, kod ten jest znakomicie enkapsulowany w jednej klasie. Rys. 2. Dobra enkapsulacja na przykładzie serwera Apache Tomcat Niestety istnieją także takie wymagania klienta, których enkapsulacja w pojedynczej klasie nie jest już taka prosta. Ich realizacja rozprasza się po całym modelu obiektowym (można powiedzieć: przecina go) i nie sposób zamknąć jej w jednym obiekcie. Zilustruje to przykładem przedstawionym na rysunku 3. Tym razem czerwonym kolorem została zaznaczona implementacja logowania (również w serwerze Apache Tomcat). Jak widać, jest rozproszona po większości przedstawionych klas. Rys. 3. Rozproszenie implementacji logowania w serwerze Apache Tomcat
5 Wprowadzenie do programowania aspektowego 3 3. Problem refaktoryzacyjny? Zastanówmy się, dlaczego niektóre wymagania klienta znakomicie modeluje się przy użyciu paradygmatu obiektowego, a niektóre wręcz przeciwnie. Wydaje się, że rozwiązanie tego problemu można znaleźć w sercu systemów informatycznych, czyli w kodzie źródłowym. Zilustruję powyższe podejście przykładem. Rozważmy szkielet metody realizującej typową akcję biznesową. Jej odpowiedzialnością jest wykonanie operacji zakupu koszulek w pewnym sklepie. Zamawiający dodatkowo wymaga śledzenia wszystkich operacji (obsługa logowania do dziennika systemowego) oraz integralności operacji (obsługa transakcji). public void selltshirts(client client, int num) { super.getlogger().info("klient " + client.getfullname() + " rozpoczął transakcje zakupu koszulek."); UserTransaction ut = getusertransaction(); try { ut.begin(); // *** wykonaj operację zakupu koszulek *** ut.commit(); super.getlogger().info("klient " + client.getfullname() + " pomyślnie zakończył transakcje zakupu koszulek."); catch(exception e) { ut.rollback(); super.getlogger().info("przerwana transakcja zakupu koszulek" + " (klient: " + client.getfullname() + ")."); Powyższy przykład jest realizacją tych wymagań na platformie technologicznej J2EE. Jak widać, aby je zrealizować programista musi poprzeplatać implementacje odpowiedzialne za poszczególne aspekty wymagań klienta. Najpierw loguje rozpoczęcie operacji do dziennika systemowego (kolor czerwony) i rozpoczyna transakcję (kolor niebieski). Dopiero przystępuje do implementacji właściwej odpowiedzialności metody, czyli zakupu koszulek. Ostatecznie kończy transakcję i zapisuje do dziennika systemowego powodzenie operacji. To przeplatanie implementacji odpowiedzialnej za różne aspekty wymagań klienta jest jedną z najważniejszych wad paradygmatu obiektowego. Jej implikacje są następujące: programista nie skupia się na właściwej odpowiedzialności danej klasy czy metody opisane wyżej przeplatanie zmniejsza zdolność do ponownego użycia danego kodu kod związany z ortogonalnymi aspektami wymagań klienta jest rozproszony w wielu modułach pojawia się trudna do refaktoryzacji duplikacja kodu źródłowego Wróćmy jednak do przykładu. Załóżmy, że analogicznych metod w systemie jest więcej i potraktujmy je jak problem refaktoryzacyjny. Jego rozwiązanie jest kluczem tych rozważań. Dobry programista na pewno znajdzie rozwiązanie tego problemu (na przykład używając szablonów), nie będzie to jednak rozwiązanie przejrzyste i eleganckie. Satysfakcjonujące rozwiązanie powinno tak refaktoryzować poprzedni przykład, aby metoda zawierała tylko i wyłącznie jej główną odpowiedzialność. Powinno doprowadzić ją do poniższej postaci.
6 4 Michał Stochmiałek public void selltshirts(client client, int num) { // *** wykonaj operację zakupu koszulek *** 4. Programowanie aspektowe Programowanie aspektowe (ang. Aspect-Oriented Programming) jest odpowiedzią na opisany powyżej problem. Rozszerza paradygmat obiektowy dodając idee aspektów. W rezultacie pozwala na przejrzyste odwzorowanie ortogonalnych aspektów wymagań klienta na ortogonalne aspekty implementacji. Umożliwia unikniecie przedstawionego przed chwilą przeplatania kodu (warkocza). Przykładowo, jeżeli wymagane jest śledzenie operacji zakupów, to programista tworzy nowy aspekt (tak jak jednostką modularności w językach obiektowych jest klasa, tak w językach aspektowych jest to aspekt), który odpowiada za obsługę logowania. Podobnie można enkapsulować wszystkie poboczne aspekty wymagań klienta. W wyniku czego klasy implementujące główny cel aplikacji (np. logikę biznesową) zawierają tylko i wyłącznie to, za co odpowiadają. Aspekty w połączeniu z klasami umożliwiają o wiele lepszą dekompozycję systemu informatycznego niż zastosowanie samych klas. Często mówi się, że jest to dekompozycja wielowymiarowa. Klasy realizujące główny cel są na jednej płaszczyźnie, aspekty na ortogonalnej (patrz rysunek 4). Płaszczyzny te przecinają się, gdzie punktami przecięć są wywołania aspektów. Wracając do przykładu, klasy logiki biznesowej odpowiadające za operację zakupu towarów leżałyby na jednej płaszczyźnie, na ortogonalnej do niej - aspekty odpowiadające za obsługę dziennika systemu itd. Rys. 4. Wielowymiarowość programowania aspektowego Tak naprawdę, przeplatanie kodu źródłowego jest nie do uniknięcia. Ale programując aspektowo przesuwamy ten proces w czasie do przodu. Jest on wykonywany automatycznie podczas kompilacji lub wykonania programu. Proces ten nazywany jest tkaniem (ang. weaving), a odpowiedzialny za niego jest tkacz (ang. weaver). Na czym ten proces polega? Tkanie dodaje w punktach złączeń (ang. join points) do klasy docelowej kod zawarty w aspektach. Przykładowymi punktami złączeń są przed wywołaniem metody lub po rzuceniu wyjątkiem. Przeanalizujmy rolę tkacza w procesie wytwarzania oprogramowania opierając się na metaforze pryzmatu (rysunek 5). Jeżeli rzucimy promień wymagań na pierwszy pryzmat (metafora
7 Wprowadzenie do programowania aspektowego 5 Rys. 5. Tkanie w metaforze przymatu (źródło: [Laddad2002]) analityka), uzyskamy wyodrębnione aspekty wymagań klienta. Każdy z nich, łącznie z głównym celem systemu, jest implementowany i enkapsulowany w jednostkach modularności (w klasach lub aspektach). Następnie padają one na drugi pryzmat (metafora tkacza) i uzyskujemy kod wynikowy zawierający implementację głównego celu oraz aspektów ortogonalnych. 5. Anatomia programu aspektowego na przykładzie Abstrakcyjne teorie najłatwiej wyjaśnia się na konkretnym przykładzie. Poniżej przedstawiam klasę HelloWorld realizującą klasyczny przykład HelloWorld (źródło: [Laddad2002]). public class HelloWorld { public static void say(string message) { System.out.println(message); public static void saytoperson(string message, String name) { System.out.println(name + ", " + message); Dodajmy do niej obsługę zwrotów grzecznościowych, tak aby przed wypisaniem zadanego komunikatu klasa przywitała się ( Good day! ), a po podziękowała ( Thank you! ). public aspect MannersAspect { pointcut callsaymessage() : call(public static void HelloWorld.say*(..)); before() : callsaymessage() { System.out.println("Good day!");
8 6 Michał Stochmiałek after() : callsaymessage() { System.out.println("Thank you!"); Przyjrzyjmy się dokładniej przykładowemu aspektowi. Zawiera on definicję jednej linii cięć (konstrukcja pointcut), która określa zbiór miejsc uruchomienia kodu aspektowego. W przykładzie linia cieć callsaymessage składa się z wywołań publicznych, a zarazem statycznych metod klasy HelloWorld. Dodatkowo ich nazwa musi zaczynać się od prefiksu say. Po określeniu miejsc uruchomienia kodu aspektowego, możemy go teraz napisać. Zawierają go zdefiniowane w przykładzie dwie rady. Pierwsza wywoływana przed cięciem callsaymessage wypisuje komunikat przywitania. Natomiast druga wywoływana po wypisuje komunikat podziękowania. Tak napisany kod jest przetwarzany przez tkacza, który automatycznie przeplata kod obiektowy z aspektowym. W rezultacie uzyskujemy analogiczny wynik, jaki wygenerowałaby nam poniższa klasa. Przy czym modularność obu tych rozwiązań jest nieporównywalna. public class HelloWorld { public static void say(string message) { System.out.println("Good day!"); System.out.println(message); System.out.println("Thank you!"); public static void saytoperson(string message, String name) { System.out.println("Good day!"); System.out.println(name + ", " + message); System.out.println("Thank you!"); 6. Implementacje AOP Macierzystą platformą technologiczną, na której wyrosło programowanie aspektowe jest Java. Dlatego dziwne nie jest, że cieszy się najbardziej dojrzałymi implementacjami paradygmatu AOP. Przede wszystkim trzeba wspomnieć o projekcie AspectJ [AspectJ], którego prekursorem jest Gregor Kiczales - pionier podstaw teoretycznych programowania aspektowego. Ta sama osoba jest głównym założycielem towarzystwa AOSA (Aspect-Oriented Software Association, [AOSA]), której głównym celem jest organizacja konferencji tyczących programowania aspektowego. Oczywiście, programowanie aspektowe nie jest ograniczone tylko do języka Java. Tak jak dla języka C++[AspectC], tak samo dla C# powstają rozszerzenia zorientowane aspektowo. Są to jednak prototypy, eksperymenty naukowe. Brak niestety stabilnej implementacji, którą można byłoby użyć bez obaw w projektach komercyjnych. Jedynym projektem opartym na platformie.net, który został wybrany przez AOSA jako narzędzie dla praktyków jest biblioteka RAPIER-LOOM.NET[LoomNet][Codeguru2004]. Reszta jest określona jako projekty badawcze.
9 Wprowadzenie do programowania aspektowego 7 7. Podsumowanie Programowanie aspektowe na razie się rozwija. Potrzebne jest kilka lat, abyśmy otrzymali stabilne narzędzia czy dobre implementacje tkaczy. To jednak nie wszystko. Oprócz narzędzi, potrzebne jest wypracowanie dobrych praktyk (best practices) oraz wzorców projektowych opartych na programowaniu aspektowych. Brakuje również ustalonej notacji w językach modelowania, takich jak UML. Jednak najbardziej dotkliwy jest brak programistów piszących aspektowo. Nie wystarczy stworzyć narzędzie, trzeba również nauczyć się go używać. Literatura [Laddad2002] [Codeguru2004] [AOSA] [AspectJ] [AspectC] [LoomNet] Laddad Ramnivas, I want my AOP!, Part 1-3, Separate software concerns with aspect-oriented programming, JavaWorld, 2002 Stochmiałek Michał, Wprowadzenie do programowania aspektowego, CodeGuru.pl, 2004 Strona towarzystwa Aspect-Oriented Software Association, Strona projektu AspectJ, Strona projektu AspectC, Strona projektu RAPIER-LOOM.NET,
Programowanie aspektowe: studium empiryczne
Praca Magisterska Programowanie aspektowe: studium empiryczne Michał Stochmiałek Promotor: dr inż. Lech Madeyski Ocena: Wrocław 2005 Niniejszy dokument został złożony w systemie L A TEX. ii Streszczenie
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
Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor
Koszalin, 15.06.2012 r. Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor Zespół projektowy: Daniel Czyczyn-Egird Wojciech Gołuchowski Michał Durkowski Kamil Gawroński Prowadzący: Dr inż.
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
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
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
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):
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
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
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.
Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
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
Programowanie obiektowe
Laboratorium z przedmiotu - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie teoretyczne. Rozważana
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH Modeling and analysis of computer systems Kierunek: Informatyka Forma studiów: Stacjonarne Rodzaj przedmiotu: Poziom kwalifikacji: obowiązkowy
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.
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Kierunek: Inżynieria Biomedyczna Rodzaj przedmiotu: obowiązkowy moduł specjalności informatyka medyczna Rodzaj zajęć: wykład, laboratorium PROGRAMOWANIE OBIEKTOWE Object-Oriented Programming
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Analiza i projektowanie aplikacji Java
Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie
Egzamin / zaliczenie na ocenę*
WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI Zał. nr 4 do ZW33/01 KARTA PRZEDMIOTU Nazwa w języku polskim : INŻYNIERIA OPROGRAMOWANIA Nazwa w języku angielskim: SOFTWARE ENGINEERING Kierunek studiów (jeśli
SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD
Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Streszczenie: W referacie przedstawiono możliwości
Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne
Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH Kierunek: Informatyka Modeling and analysis of computer systems Forma studiów: Stacjonarne Rodzaj przedmiotu: obowiązkowy w ramach specjalności:
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
Programowanie Komponentowe WebAPI
Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,
Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)
Zagadnienia (1/3) Rola modelu systemu w procesie analizy wymagań (inżynierii wymagań) Prezentacja różnego rodzaju informacji o systemie w zależności od rodzaju modelu. Budowanie pełnego obrazu systemu
Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas
Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy
Mariusz Trzaska Modelowanie i implementacja systemów informatycznych
Mariusz Trzaska Modelowanie i implementacja systemów informatycznych Notka biograficzna Dr inż. Mariusz Trzaska jest adiunktem w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych, gdzie zajmuje się
Specyfikowanie wymagań przypadki użycia
Specyfikowanie wymagań przypadki użycia Prowadzący Dr inż. Zofia 1 La1 La2 Forma zajęć - laboratorium Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych
INŻYNIERIA OPROGRAMOWANIA
INSTYTUT INFORMATYKI STOSOWANEJ 2013 INŻYNIERIA OPROGRAMOWANIA Inżynieria Oprogramowania Proces ukierunkowany na wytworzenie oprogramowania Jak? Kto? Kiedy? Co? W jaki sposób? Metodyka Zespół Narzędzia
Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)
Projektowanie obiektowe Wzorce projektowe Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów) 1 Roadmap Adapter Bridge Composite Facade 2 Pojęcia obiekt interfejs typ klasa 3 Co to jest delegacja?
Informatyczne fundamenty
Informatyczne fundamenty Informatyka to szeroka dziedzina wiedzy i praktycznych umiejętności. Na naszych studiach zapewniamy solidną podstawę kształcenia dla profesjonalnego inżyniera IT. Bez względu na
Wprowadzenie do UML, przykład użycia kolizja
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument
Wywoływanie metod zdalnych
Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia
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
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ść
Szablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl
Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z
INFORMATYKA. PLAN STUDIÓW STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2018/19.
PLAN STUDIÓ STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA 2018-2022 STUDIA ROZPOCZYNAJĄCE SIĘ ROKU AKADEMICKIM 2018/19 Semestr I stęp do matematyki 20 20 z oc. 3 Podstawy programowania* 20 45 65 z oc. /E 6
Podstawy programowania III WYKŁAD 4
Podstawy programowania III WYKŁAD 4 Jan Kazimirski 1 Podstawy UML-a 2 UML UML Unified Modeling Language formalny język modelowania systemu informatycznego. Aktualna wersja 2.3 Stosuje paradygmat obiektowy.
Zaawansowane programowanie w języku C++
Kod szkolenia: Tytuł szkolenia: C/ADV Zaawansowane programowanie w języku C++ Dni: 3 Opis: Uczestnicy szkolenia zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów
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,
1 Wprowadzenie do J2EE
Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2
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
INFORMATYKA. PLAN STUDIÓW STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2019/2020.
PLAN STUDIÓ STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA 2019-2023 STUDIA ROZPOCZYNAJĄCE SIĘ ROKU AKADEMICKIM 2019/2020 Semestr I stęp do matematyki 20 20 zal z oc. 3 Podstawy programowania* 20 45 65 zal z
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
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
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Kierunek: Inżynieria Biomedyczna Rodzaj przedmiotu: obowiązkowy moduł specjalności informatyka medyczna Rodzaj zajęć: wykład, laboratorium PROGRAMOWANIE INTERNETOWE Internet Programming
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
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
Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
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
INFORMATYKA. PLAN STUDIÓW NIESTACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2018/19.
PLAN STUDIÓ NIESTACJONARNYCH INŻYNIERSKICH 1-go STOPNIA 2018-2022 STUDIA ROZPOCZYNAJĄCE SIĘ ROKU AKADEMICKIM 2018/19 Semestr I stęp do matematyki 20 20 z oc. 3 Podstawy programowania* 15 30 45 z oc. /E
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
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,
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
INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X
Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl INTERNETOWE BAZY DANYCH PLAN NA DZIŚ zajęcia 1: 2. Procedury składowane
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
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa
1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko
Podrozdziały te powinny zawierać informacje istotne z punktu widzenia przyjętego celu pracy
Uwaga: 1. Praca powinna być napisana z użyciem formy bezosobowej np. wykonano. Nazwa rozdziału Zawartość Liczba stron 1. Wstęp Rozdział ten powinien zawierać zarys najważniejszych elementów pracy Krótki
Michał Olejnik. 22 grudnia 2009
Continuous TDD Politechnika Wrocławska Informatyka 22 grudnia 2009 Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5 Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5 Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5 Agenda
Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe
Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache
Wywoływanie metod zdalnych
Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia
Szablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Wykład I. Wprowadzenie do baz danych
Wykład I Wprowadzenie do baz danych Trochę historii Pierwsze znane użycie terminu baza danych miało miejsce w listopadzie w 1963 roku. W latach sześcdziesątych XX wieku został opracowany przez Charles
Spis treści. Analiza i modelowanie_nowicki, Chomiak_Księga1.indb :03:08
Spis treści Wstęp.............................................................. 7 Część I Podstawy analizy i modelowania systemów 1. Charakterystyka systemów informacyjnych....................... 13 1.1.
Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.
Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,
Projektowanie systemów informatycznych. wykład 6
Projektowanie systemów informatycznych wykład 6 Iteracyjno-przyrostowy proces projektowania systemów Metodyka (ang. methodology) tworzenia systemów informatycznych (TSI) stanowi spójny, logicznie uporządkowany
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
SOA Web Services in Java
Wydział Informatyki i Zarządzania Wrocław,16 marca 2009 Plan prezentacji SOA 1 SOA 2 Usługi Przykłady Jak zacząć SOA Wycinek rzeczywistości Problemy zintegrowanych serwisów : Wycinek Rzeczywistości Zacznijmy
Wzorce projektowe i refaktoryzacja
Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:
Paradygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
TEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Podniesienie poziomu wiedzy studentów z inżynierii oprogramowania w zakresie C.
Systemy Rozproszone Technologia ICE
Systemy Rozproszone Technologia ICE Zespół Systemów Rozproszonych () Katedra Informatyki AGH Kraków Kornel Skałkowski skalkow@agh.edu.pl Opracowano na podstawie książki: Henning M, Spruiell M. Distributed
Rysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak
Programowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ
(INT) Inżynieria internetowa 1.Tryby komunikacji między procesami w standardzie Message Passing Interface. 2. HTML DOM i XHTML cel i charakterystyka. 3. Asynchroniczna komunikacja serwerem HTTP w technologii
Pakiety i interfejsy. Tomasz Borzyszkowski
Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji
76.Struktura oprogramowania rozproszonego.
76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie
Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1
Szkolenie wycofane z oferty Program szkolenia: Enterprise Java Beans 3.0/3.1 Informacje: Nazwa: Enterprise Java Beans 3.0/3.1 Kod: Java-EE-EJB Kategoria: Java EE Grupa docelowa: developerzy Czas trwania:
Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014
Modelowanie diagramów klas w języku UML Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Czym jest UML - Unified Modeling Language - Rodzina języków modelowania graficznego - Powstanie na przełomie lat 80
INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH 2-GO STOPNIA (W UKŁADZIE ROCZNYM) STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2015/16
-learning INFORMATYKA PLAN STUDIÓ NISTACJONARNYCH 2-GO STOPNIA ( UKŁADZI ROCZNYM) STUDIA ROZPOCZYNAJĄC SIĘ ROKU AKADMICKIM 2015/16 Rok I Zajęcia dydaktyczne obligatoryjne ybrane zagadnienia matematyki
Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy
Dokumentacja techniczna Młodzieżowe Pośrednictwo Pracy Spis Treści 1. Widok ogólny architektury MPP... 3 2. Warstwy systemu... 5 3. Struktura systemu/komponentów... 7 3.1 Aplikacje... 7 3.2 Biblioteki...
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Obiekty, aspekty, komponenty
Obiekty, aspekty, komponenty Obiekty, aspekty, komponenty Bartosz Walter Rozdział zagadnień Zasada rozdziału zagadnień (Separation of Concerns) program powinien być zdekomponowany w taki sposób, aby różne
Projektowanie, tworzenie aplikacji mobilnych na platformie Android
Program szkolenia: Projektowanie, tworzenie aplikacji mobilnych na platformie Android Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Projektowanie, tworzenie aplikacji mobilnych
REFERAT PRACY DYPLOMOWEJ
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany
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,
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Programowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
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
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej dr inż. Paweł Czarnul pczarnul@eti.pg.gda.pl Architektury usług internetowych laboratorium
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
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
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
Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz
Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, 2004 Zofia Kruczkiewicz 1. Przedstaw znaczenie oprogramowania we współczesnym świecie x 1 2. Jaki wpływ na ludzi, komunikację
Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: 209216. Aukcjomat
Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Paweł Parys Nr albumu: 209216 Aukcjomat Praca licencjacka na kierunku INFORMATYKA w zakresie INFORMATYKA Praca wykonana pod kierunkiem