Wzorce projektowe i refaktoryzacja

Podobne dokumenty
Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Wzorce projektowe Michał Węgorek

PRZEWODNIK PO PRZEDMIOCIE

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Programowanie Zespołowe

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Technologie obiektowe Object-oriented technologies. Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

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

Analiza i projektowanie aplikacji Java

Wprowadzenie do programowania aplikacji mobilnych

E-I2S-2005-s1. Technologie obiektowe. Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Programowanie obiektowe

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Rok akademicki: 2014/2015 Kod: IEL s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Egzamin / zaliczenie na ocenę*

Analiza i projektowanie obiektowe 2016/2017. Wykład 1: Wprowadzenie oraz cykl życia oprogramowania i faza określenia wymagań

Zaawansowane programowanie w C++ (PCP)

E-1IZ3-06-s6. Inżynieria Programowania. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2011/2012

Podstawy Programowania Obiektowego

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

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Wzorce projektowe. dr inż. Marcin Pietroo

Wykład 1 Inżynieria Oprogramowania

Pojęcie wzorca projektowego Sposób opisu wzorców projektowych Notacja UML podstawowe diagramy zapisu wzorców projektowych

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Rok akademicki: 2012/2013 Kod: IET SW-s Punkty ECTS: 3. Kierunek: Elektronika i Telekomunikacja Specjalność: Systemy wbudowane

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Testowanie oprogramowania Wzorce projektowe

E-ID1S-08-s5. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Zaawansowane programowanie obiektowe - wykład 5

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

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

Programowanie obiektowe

Michał Olejnik. 22 grudnia 2009

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Modelowanie i Programowanie Obiektowe

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

Inżynieria oprogramowania. Jan Magott

METODY PROGRAMOWANIA

Technologie obiektowe

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

dr Ilona Bluemke inż. Anna Stepień Instytut Informatyki Wydział Elektroniki i Technik Informacyjnych Politechnika Warszawska

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

Podstawy modelowania programów Kod przedmiotu

OPIS MODUŁU KSZTAŁCENIA (przedmiot lub grupa przedmiotów)

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

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

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Analiza i projektowanie obiektowe w UML Kod przedmiotu

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Programowanie obiektowe - 1.

Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz

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

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

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Zmiana specyfikacji istotnych warunków zamówienia

Metodyki zwinne wytwarzania oprogramowania

Dokument Detaliczny Projektu

Język programowania. Andrzej Bobyk

WPROWADZENIE DO UML-a

Projektowanie obiektowe Wzorce projektowe

Programowanie zwinne

Technologia programowania

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Inżynieria oprogramowania - opis przedmiotu

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

ASP.NET Wprowadzenie. provided by Przemysław Bykowski

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

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

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

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Technologia Programowania 2016/2017 Wykład 4

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (2) Wykład 10 Inversion of Control Wiktor Zychla 2013

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

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

Język Java część 2 (przykładowa aplikacja)

Wprowadzenie do systemów informacyjnych

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

Programowanie obiektowe

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

IBM Rational Software Architect uproszczona instrukcja użytkowania

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7


JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

Refaktoryzacja. Na podstawie

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Transkrypt:

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: dr Janusz Jabłonowski

Cele: Wsparcie pracy programisty prowadzące do: Przyspieszenia pisania kodu Wzrostu: Rozszerzalności Skalowalności Niezawodności Terminowości tworzenia Polepszenia jakości kodu

Jakość kodu

Sposób osiągnięcia celów Wprowadzenie w kodzie wzorców projektowych Przez generowanie wzorcowego kodu w konkretnych zastosowaniach (nowy kod tworzony jest od zera) Przez refaktoryzację do wzorców projektowych (modyfikowany jest istniejący kod)

Wzorce projektowe - definicja Każdy wzorzec opisuje problem, który powtarza się wielokrotnie w naszym środowisku, a następnie opisuje modelowe rozwiązanie tego problemu w taki sposób, że można to rozwiązanie wykorzystać milion razy, tak, że żadne dwa wykorzystania nie będą identyczne

Co dają wzorce Wzrost jakości oprogramowania Wspólny język dla programistów Ułatwiają wymianę doświadczeń Ułatwiają specyfikację wymagań Spadek czasu tworzenia oprogramowania: Projektowania Kodowania Testowania Stanowią zbiór dobrze zdefiniowanych i sprawdzonych (przetestowanych) gotowych rozwiązań

Założenia pracy Duża część kodu w zastosowaniach wzorców projektowych jest zawsze taka sama Duża część pozostałego kodu zależy od niewielu parametrów i może być generowana automatycznie

Generowanie kodu Wspomaga pracę programisty Znane np. z narzędzi programistycznych Szablony klas Kreatory klas Stosowane także w narzędziach typu Javadoc, Xdoclet czy Embeded SQL Jest wygodne, przyspiesza pracę, pozwala uniknąć pomyłek

Przykłady wzorców projektowych Singleton Zapewnia istnienie dokładnie jednej instancji (jednego obiektu) danej klasy w ramach jednej maszyny wirtualnej Fabryka Umożliwia tworzenie obiektów o identycznym interfejsie i realizujących te same zadania, ale w różny sposób. Np. dostęp do plików Dekorator Dostarcza sposobu na zmianę własności indywidualnych obiektów bez potrzeba tworzenia klasy pochodnej. Np. Lampa

Przykłady wzorców projektowych (c.d) Fasada Upraszcza złożoność skomplikowanych podsystemów dostarczając dla nich prostego interfejsu Iterator Pozwala przechodzić po elementach kolekcji bez wiedzy o jej implementacji Obserwator Pozwala na informowanie zależnych obiektów o zmianie stanu pewnego innego obiektu

Wzorce literatura Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison- Wesley, 1995. Allan Shalloway, James R. Trott, Projektowanie zorientowane obiektowo: Wzorce projektowe, Helion, 2001. James W. Cooper, Java: Wzorce projektowe, Helion 2001.

Refaktoryzacja definicja Przekształcenie zmieniające strukturę kodu nie zmieniające jego działania (program przed i po przekształceniu uruchomiony na tych samych danych da dokładnie ten sam wynik) Jak w matematyce - liczbę 6432 można reprezentować jako 32 * 3 * 67. Refaktoryzując ja do 8 * 12 * 67 otrzymamy dokładnie ten sam produkt (6432) ale o innej strukturze.

Refaktoryzacja - cele Ułatwia ona budowę i pielęgnację oprogramowania, umożliwiając utrzymanie systemu komputerowego w stanie pozwalającym na łatwą rozbudowę. Refaktoryzacja jest znacznie tańsza niż przepisywanie kodu od nowa Zmiana struktury programu ma na celu poprawę jakości kodu

Refaktoryzacja - automatycacja W niektórych przypadkach możemy ręcznie zmienić kod. W dużych programach niezbędna jest automatyzacja refaktoryzacji. Bardziej złożone refaktoryzacje można wykonać jako złożenie kilku prostszych

Refaktoryzacja - przykłady Zmiana nazwy metody, pola, parametru Mało mówiącą nazwę parametru void C::cos() { String zm150 = jakiś ; zm150 += napis ; wypisz(zm); } zmieniamy na: void C::cos() { String informacja = jakiś ; informacja += napis ; wypisz(informacja); }

Refaktoryzacja przykłady (c.d.) Wydzielenie metody dzieli metodę jeśli jest ona za długa, robi więcej niż jedną rzecz lub miesza nisko- i wysokopoziomowe operacje, np: void C::cos() { for(int i; i<a.length(); i++) a[i] = rand(); wypisz(a); } zmieniamy na: void C::wylosuj() { for(int i; i<a.length(); i++) a[i] = rand(); } void C::cos() { wylosuj(); wypisz(); }

Refaktoryzacja przykłady (c.d.) Przeniesienie metody Wydzielenie wartości wyrażenia w postaci stałej. Przeniesienie funkcji w górę hierarchi dziedziczenia Rozwinięcie metody (inline) Wyodrębnienie interfejsu z klasy

Refaktoryzacja - literatura Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999. refactoring.com