wzorce projektowe

wzorce projektowe
KA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 11 lat
  • Postów:6
0

Witam,

Piszę pracę magisterską na temat wzorców projektowych. Żeby nie było za łatwo, nie wystarczy żebym przedstawiła wzorce opisane przez Gang of Four, muszę dołożyć rozdział trochę bardziej analityczny. Miałaby to być krytyczna analiza (np. które z wzorców są już przestarzałe) oraz jakieś rozwinięcia (tak jk np. dla Visitora powstało rozwinięcie Dynamic Visitor). O ile podstawy są łatwe do znalezienia w książkach i w necie, o tyle zupełnie nie wiem gdzie szukać materiałów dotyczących tej trudniejszej części. Może ktoś z was ma pojęcie na ten temat?
Z góry dzięki za pomoc :)

somekind
Czemu ten wątek jest w dziale Java?
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

o_O przepraszam a gdzie w tej pracy jest "twoja" część? Bo mam wrażenie że chcesz po prostu przepisać całą treść skądś a to chyba chodzi właśnie o to żebyś to ty taką analizę przeprowadziła.
Ale oczywiście warto powoływać sie na juz przeprowadzone wcześniej analizy. Proponuje zacząć szukać tutaj:
http://scholar.google.pl/

Sporo ciekawych informacji można też znaleźć na różnych konferencjach.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
KA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 11 lat
  • Postów:6
0

Zajęłam się tematem bo pisząc pracę chciałam się czegoś nauczyć, na razie moje pojęcie o wzorcach projektowych jest bardzo elementarne. To że piszę pracę magisterską nie znaczy że aspiruję do roli eksperta, bo nim nie jestem. Jeśli nie mam wiedzy praktycznej na temat wzorców projektowych, to jak mam przeprowadzić analizę? Po to piszę post na forum żeby otrzymać wskazówki, nie proszę nikogo o pisanie pracy za mnie. Pisanie magisterki to zajęcie studentów (czyli tych co się uczą) a nie profesorów (czyli tych którzy już wszystko wiedzą).

Konkretnie - chodzi mi o rozwinięcia wzorców jakie znacie, może artykuły dotyczące tematu, wasze własne doświadczenia. Cokolwiek, co pomogłoby mi ugryźć temat.

n0name_l
Czesto sie zdarza jednak tak, ze to profesorowie wiedza mniej niz niejeden student ;)
KR
Jednak znacznie częściej zdarza się tak, że to studentom wydaje się, iż wiedzą więcej niż profesor, zwłaszcza na informatyce, a prawda jest zgoła odwrotna.
PI
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 6 lat
  • Postów:61
0

Kobieto - wzorce projektowe jest to bardzo ambitny i wymagający temat. Ja mam nadzieję, iż wybrałaś go w pełni świadomie..... oby tak było
Piszesz że nie jesteś ekspertką - z takim nastawieniem jeszcze długo nią nie zostaniesz. Google naprawdę nie gryzie ;)
Skoro narzekasz na brak wiedzy praktycznej, to powiem Ci, że 1) analiza jest z założenia teoretyczna, 2) w pracy mgr ciężko jest zawrzeć praktykę (no chyba że robisz mgr. inż), 3) to właśnie od Ciebie oczekuje się, że w swojej pracy wykonasz ładną analizę teorii problemu.
No a przede wszystkim obrałaś złą kolejność - najpierw się naucz ile się da o wzorcach, a dopiero później zabierz się za pisanie pracy.

edytowany 2x, ostatnio: pixelplus
KA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 11 lat
  • Postów:6
0

Ok, skoro część "użyj google" (hej, serio? nie wpadłam na to) oraz "no kochana zabierasz się za to źle/masz złe założenia/jesteś leniwa/jesteś głupia" mamy już za sobą, to może jakieś konkretne odpowiedzi?
Panowie, jeśli nie macie do powiedzenia nic mądrego w temacie, to uwagi dotyczące tego jak się pisze pracę magisterską zostawcie dla siebie. Zbieranie rzetelnych informacji jest chyba podstawowym elementem nauki do której mnie tak gorąco zachęcacie, więc proszę, możecie się wykazać i przekazać biednej, zagubionej na forum programistów niuni jakieś przydatne informacje.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

@katiusha a jesteś pewna że teza którą próbujesz przepchnąć ma pokrycie w rzeczywistości? Bo z tego co ja wiem to wzorce nadal są stosowane i żadnej rewolucji w tym zakresie nie było. Niektóre stały się rzadziej używane bo technologia na to pozwoliła (np. Dependency Injection zastąpiło w wielu miejscach Singleton i ServiceLocator, bo powstały złożone kontenery IoC) ale nie znaczy to ze nagle zniknęły czy okazały się "błędne". Dlatego może trudno ci znaleźć informacje do "twojej analizy"...
Obawiam się że jedyne źródła które będą traktowały o tym problemie to będą zupełnie nie-cytowalne rzeczy typu blogi i wykłady na konferencjach programistycznych.

Patrzyłaś na link który ci podałem? To jest "zwykłe" google tylko wyszukiwarka prac naukowych i od niej powinnaś zacząć swoje poszukiwania materiałów do pracy.
Nie sposób nie zgodzić się z kolegą @pixelplus w kwestii kolejności kroków jakie powinnaś podjąć w trakcie pisania pracy. Najpierw musisz poczytać sporo na temat wzorców i analiz już wykonanych a potem zająć się dopiero pisaniem kiedy będziesz już "trochę ekspertem" w tej dziedzinie. W drugą stronę nie bardzo da sie to zrobić.

Zapytam retorycznie - "Ile publikacji naukowych na ten temat już przeczytałaś?". Bo rozumiesz chyba ze opis wzorców na wikipedii i GOF book to trochę mało...

Pierwsza ciekawa publikacje które google-scholar mi podrzuca:

@book{kuhlemann2007design,
title={Design patterns revisited},
author={Kuhlemann, Martin},
year={2007},
publisher={Univ., Fak. f{"u}r Informatik}
}


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
KA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 11 lat
  • Postów:6
0

Dzięki za kilka konkretniejszych informacji oraz za link, skorzystałam i będę korzystać.
Teza którą "próbuję przepchnąć" to sugestia mojego promotora, ale co on tam wie, to z pewnością niekompetentny bęcwał. Myślę że chodziło mu właśnie o to że "Niektóre stały się rzadziej używane".

Jestem ciekawa jak Wy zabralibyście się za autorską analizę problemu? Bo z tego co czytam, poza odpytywaniem mnie na ile jestem kompetentna i poważna (przepraszam, to forum na którym zadajemy pytania czy bractwo ważniaków gardzące maluczkimi? dajcie spokój, to trochę żenujące), powinnam się zabrać za pracę jak już wszystko będę wiedzieć, ergo- jak się nauczę. A staram się nauczyć pytając was właśnie o źródła wiedzy. Rozumiem że ta prosta logika umyka wam w trakcie tej publicznej hłosty, ale spoko, nie chowam urazy, nadal czekam na poważne odpowiedzi.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

ale co on tam wie, to z pewnością niekompetentny bęcwał

Gdyby był kompetentny w dziedzinie inżynierii oprogramowania to nie wykładałby na uczelni za 5k miesięcznie tylko pracował w jakiejś firmie za 15 czy 20 ;) (Swoją drogą dziwię się że na 5 roku wierzysz jeszcze w to że wykładowcy na uczelni prezentują jakiś poziom merytoryczny. Zgaduje że wynika to z faktu że masz zapewne 0 doświadczenia zawodowego. Jak tylko to nadrobisz to odkryjesz w jakim byłaś błędzie) Ale ja nie o tym chciałem...

Jestem ciekawa jak Wy zabralibyście się za autorską analizę problemu?

Ja widzę dwa możliwe podejścia w tym względzie:

  1. Analiza konkretnego przypadku - wymyślenie sobie jakiegoś przykładowego systemu a następnie zaimplementowanie jego fragmentów w oparciu o różne wzorce i analiza uzyskanych rozwiązań zgodnie z pewnymi przyjętymi kryteriami. Kryteria mogą być różne - podatność na modyfikacje, ilość kodu, związanie z konkretną technologią lub jego brak etc.
    Zobacz sobie ten wykład:
  2. Analiza istniejących systemów open-source pod kątem stosowanych w nich wzorców. Nie wymagałoby to implementowania niczego, ale może być dość skomplikowane i czasochłonne bo wymaga analizy dużej ilości kodu.

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
KR
Nie wiem jak u Was, ale u mnie na PW duża część profesorów pracuje w prywatnych firmach jako konsultanci, albo mają prywatne firmy i zarabiają te 20 tys., natomiast uczą na uczelni bo lubią po prostu pracę naukową lub dydaktyczną. Inna rzecz, że profesor tytularny nie zarabia 5k miesięcznie tylko znacznie więcej; 5k to raptem podstawa; dorzuć dodatki funkcyjne i granty, i masz 3x tyle.
KA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 11 lat
  • Postów:6
0

Chyba powinnam zmienić nick na bezbronna_16, byłoby łatwiej mnie rozszyfrować. Źle zgadujesz. A swojego wykładowcę mimo wszystko cenię, idąc tropem który wskazałeś wyszłoby na to że wszyscy doktorzy i profesorowie to banda gamoni. Skoro tak to po co czytać te ich wszystkie "publikacje naukowe"? ;)

Moja praca ma obowiązkową część praktyczną, więc implementacji nie uniknę, analizy zastosowania też nie, ale nie to jest problemem. Problemem są rzeczy niestandardowe - takie jak analiza tego co jest przestarzałe a co nie (do czego punktem wyjściowym jest wiedza wynikająca z praktyki w stosowaniu), czy np. informacje o rozwinięciach wzorców (które się zna jak się je stosuje - ja nie stosuję więc nie znam. A że nie znam, to pytam).

n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
0
Zobacz pozostały 1 komentarz
n0name_l
Moze i masz racje, jednak bez szerszego spojrzenia nie da sie tresciwie przedstawic wezszej czesci dziedziny ;)
KR
Taka dygresja: Nie lubię Fowlera. Gościu myśli, że skoro jest popularny, to może ideologizować na różnych konferencjach i do tego traktować z góry ludzi, którzy się z nim nie zgadzają. Radzę traktować jego rewelacje z pewną dozą dystansu. Zresztą ta uwaga jest prawdziwa do większości piewców Agile (ze szczególnym naciskiem na TDD).
n0name_l
@Krolik, ta uwaga jest prawdziwa do kazdej koncepcji w kazdej dziedzinie :)
KA
Link na pewno się przyda, dzięki.
KR
@n0name_l znam osobiście kilku gości, którzy mają dorobek podobny do Fowlera ale nie są aroganccy i nie uważają się za nie wiadomo jakie gwiazdy. Kumpel chciał sobie z nim zdjęcie na konferencji zrobić (jako że jest jego fanem i przeczytał chyba wszystkie książki), a Fowler tylko skwitował to "a po co?" i sobie poszedł.
KR
Moderator
  • Rejestracja:prawie 21 lat
  • Ostatnio:dzień
  • Postów:2964
0

Myślę, że wszystko, co miało być napisane w tym temacie, zostało napisane, a robi się tylko niepotrzebny flame. Zamykam wątek.

Zobacz pozostałe 2 komentarze
KR
PI
@madmike oraz @Krolik - dobrze ok :) ale i tak nie daje za wygraną. Nie będę nikogo obrażał, ale sugeruje aby autorka zrezygnowała z pisania pracy mgr przy takim nastawieniu do jej pisania.....
KA
@pixelplus - chłopcze odpuść, to jest żenujące
PI
@katiusha - kobiecino zamilcz :)
wiciu
  • Rejestracja:ponad 11 lat
  • Ostatnio:4 dni
  • Postów:1205
0

Moim zdaniem, wybrałaś sobie zbyt ogólny temat, ale już trudno.
Wzorce projektowe, to nie tylko GoF. Oprócz tego dochodzą takie zagadnienia, jak: SOLID, cohesion, coupling, granulity (fine/coarse grained code), dziedziczenie, kompozycja, etc.
Wymienione elementy dotyczą tylko wzorców związanych ze strukturą kodu. Oprócz tego, dochodzą też wzorce związane ze strukturą programów, tj. chociażby koncepcje typu Domain Driven Design. Ponadto, istnieją też wzorce architektoniczne związane ze strukturą aplikacji i systemów informatycznych. Operują one na wyższym poziomie abstrakcji, niż wzorce GoF. Martin Fowler napisał o tym książkę: Patterns of Enterprise Application Architecture. Sam bym sobie takiego tematu nie wybrał, ponieważ jest zbyt szeroki, mało konkretny i zbyt ogólnikowy.

Niemniej jednak, jeśli miałbym napisać pracę na ten temat, to podzieliłbym ją na następujące główne części :

  1. Wprowadzenie
  2. Zasady tworzenia dobrego kodu (zagadnienia wymienione w pierwszej części mojej wypowiedzi)
  3. Wzorce GoF
  4. Wzorce architektoniczne
  5. Praktyczne zastosowanie wzorców projektowych na przykładzie... (tutaj wymyśl sobie jakiś projekt)
  6. Podsumowanie
edytowany 2x, ostatnio: wiciu
KA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 11 lat
  • Postów:6
1

Fakt, to temat - rzeka. We wprowadzeniu chcę zawęzić ten temat, sprecyzować którym wycinkiem tak szerokiego zagadnienia będę się w pracy zajmować, ale może wydzielenie osobnego rozdziału i zmniejszenie udziału wzorców GoF w zawartości pracy będzie lepszym rozwiązaniem.
Wielkie dzięki za sugestię.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)