Wzorce projektowe - napisanie kodu na podstawie schematów wzorca

Wzorce projektowe - napisanie kodu na podstawie schematów wzorca
viper_2000
  • Rejestracja:około 20 lat
  • Ostatnio:prawie 11 lat
0

Witam

Mam problem i mam nadzieje że pomożecie mi go rozwiązać, bo prawdę powiedziawszy nie mam pomysłu jak się za to zabrać.
Otuż na studiach podczas zaliczenia wykładowca dał mi następujące zadanie:

  1. Proszę napisać kod do poniższych wzorców (przedstawionych na obrazkach)
  2. Proszę w komentarzach wyjaśnić swój kod
  3. Proszę w języku naturalnym wyjaśnić semantykę poniższych obrazków

Pod rysunkami była jeszcze informacja że kod może być napisany w dowolnym języku programowania, ale ponieważ ja do tej pory pisałem wszystko tylko w delphi więc tutaj proszę was o pomoc.

user image

user image

flowCRANE
Tytułuj sensowniej swoje wątki; Druga sprawa - http://sjp.pl/ot%F3%BF
TA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 6 lat
0

W linkach poniżej masz przykładowy kod dla wzorców których szukasz. Nie jest on idealny, ale powinien wystarczyć do zrozumienia idei.
http://stackoverflow.com/questions/6873469/delphi-7-trying-to-understand-the-mvc-pattern
http://www.castle-cadenza.demon.co.uk/wrapper.htm

viper_2000
  • Rejestracja:około 20 lat
  • Ostatnio:prawie 11 lat
0

Dzięki za linki do kodu.

Jeśli można, to jeszcze prosiłbym aby ktoś ten kod przekopiował tutaj, jednocześnie uzupełniając go o komentarz (wyjaśniający co robią poszczególne instrukcje w tym konkretnym przypadku)

babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
3

Zaczyna śmierdzieć wyłudzeniem gotowca.

olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
2

@viper_2000: nie umiesz skorzystać z podpowedzi innych. A gotowców raczej nie dajemy poza prostymi kodami. Także napisz w dziale http://4programmers.net/Forum/Ogłoszenia_drobne i zaproponuj tam kwotę za zrobienie tego co chcesz osiągnąć za Ciebie, opisując problem. Ewentualnie napisz czego konkretnie nie rozumiesz. Bo jeśłi nie ogarniasz wszystkiego to chyba trzeba się podszkolić z podstaw języka :/


Pozdrawiam.
viper_2000
  • Rejestracja:około 20 lat
  • Ostatnio:prawie 11 lat
0
olesio napisał(a):

napisz w dziale http://4programmers.net/Forum/Ogłoszenia_drobne i zaproponuj tam kwotę za zrobienie tego co chcesz osiągnąć za Ciebie

  • Naprawdę sądzisz że ktoś będzie w stanie pójść za mnie na uczelnie i zaliczyć ten przedmiot za mnie ??
olesio napisał(a):

napisz czego konkretnie nie rozumiesz. Bo jeśłi nie ogarniasz wszystkiego to chyba trzeba się podszkolić z podstaw języka

  • Moje dotychczasowe programowanie w delphi ograniczało się do poukładania elementów graficznych na templatce i wpisaniem (pod te elementy graficzne) kodu który miał się wykonać. Programując w delphi nigdy nie musiałem tworzyć własnych klas czy obiektów I ZA TO NAJBARDZIEJ LUBIE TEN JĘZYK PROGRAMOWANIA. A w tym kodzie widzę że są tworzone jakieś dodatkowe klasy, nie wiem tylko po co i co tak naprawdę mają one robić. A jak by tego było mało, opis który jest zamieszczony (przy kodzie) w podanych linkach NIE jest napisany w języku polskim :/

A ja nie mam niestety na tyle czasu aby samemu dochodzić do tego o co w tym kodzie tak naprawdę chodzi, dlatego bardzo proszę o pomoc.

MA
"A ja nie mam niestety na tyle czasu aby samemu dochodzić do tego o co w tym kodzie tak naprawdę chodzi" - za to my mamy czasu od ch... żeby zająć się programem na twoje zaliczenie. Po studiach w przyszłej pracy też nie będziesz miał "pomysłu jak się za to zabrać." i będziesz prosił o gotowca na forach...panie przyszły "yndżynierze"? Zresztą jaki z ciebie będzie inżynier, co nie potrafi sobie poradzić z językiem angielskim, mając nawet do dyspozycji chociażby translator Googla. Nawet japońskie strony da się przetłumaczyć. Boże, chroń firmy od takich "yndżynierów"!
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
1

NIE jest napisany w języku polskim :/

To moze przepisz sie na polonistyke? Tam bedzie po polsku duzo, a szkoda chyba zycia marnowac.

viper_2000
  • Rejestracja:około 20 lat
  • Ostatnio:prawie 11 lat
0
n0name_l napisał(a):

To moze przepisz sie na polonistyke? Tam bedzie po polsku duzo, a szkoda chyba zycia marnowac.

Po pierwsze - na zmianę decyzji jest już trochę za późno, potrzebuje zaliczyć jeszcze ten ostatni przedmiot i przede mną obrona pracy magisterskiej
Po drugie - polonistyka mnie nie interesuje
A po trzecie - po co informatykowi (zajmującemu się tworzeniem i pozycjonowaniem stron i sklepów internetowych) studia polonistyczne ?

edytowany 1x, ostatnio: viper_2000
n0name_l
Ale juz chyba ustalilismy, ze na informatyka to niezbyt pasujesz.
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
1
viper_2000 napisał(a):

po co informatykowi (zajmującemu się tworzeniem i pozycjonowaniem stron i sklepów internetowych) studia polonistyczne ?

No i w ogóle po co informatykowi programowanie?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:30 minut
  • Lokalizacja:Tuchów
  • Postów:12165
3

Programując w delphi nigdy nie musiałem tworzyć własnych klas czy obiektów I ZA TO NAJBARDZIEJ LUBIE TEN JĘZYK PROGRAMOWANIA.

To albo pisałes same hello-worldy, albo kod był bardzo kiepski, wręcz typowo strukturalny o globalnym zasięgu; Zaś obiekty tworzyć musiałeś żeby w ogóle skorzystać z tych gotowych klas; Chyba że korzystałeś jedynie z metod statycznych;

A w tym kodzie widzę że są tworzone jakieś dodatkowe klasy, nie wiem tylko po co i co tak naprawdę mają one robić.

Bo nie znasz kompletnie programowania obiektowego, choć z niego jak piszesz korzystałeś; Najgorsze jest to, że chcesz tworzyć strony internetowe, ale do obiektowości jakoś Ci się nie spieszy; I do tego bronisz się przed angielskim, jakby to jakieś zło wcielone było;

A jak by tego było mało, opis który jest zamieszczony (przy kodzie) w podanych linkach NIE jest napisany w języku polskim

Jak czegoś nie rozumiesz, to są od tego translatory, np. od Google czy Bing, więc nie musisz ślęczeć nad słownikiem i szukać słowo po słowie;


Jeżeli chcesz cokolwiek umieć to zacznij się uczyć - zapoznaj się z programowaniem obiektowym, bo Delphi nie ma monopolu na klasy, a także szlifuj angielski, bo programista/webmaster bez znajomości angielskiego będzie miał baaardzo ciężko.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
viper_2000
  • Rejestracja:około 20 lat
  • Ostatnio:prawie 11 lat
0
furious programming napisał(a):

To albo pisałes same hello-worldy,

  • dobry żart
furious programming napisał(a):

albo kod był bardzo kiepski

  • nie wiem czy kiepski, na pewno działający :)
furious programming napisał(a):

Najgorsze jest to, że chcesz tworzyć strony internetowe, ale do obiektowości jakoś Ci się nie spieszy

  • do tej pory jakoś nie musiałem nic programować przy robieniu stron internetowych. Do wszystkich stron jakie do tej pory robiłem wystarczyła mi znajomość:
  • Gotowych systemów CMS
  • HTMLa
  • i CSSa
furious programming napisał(a):

I do tego bronisz się przed angielskim, jakby to jakieś zło wcielone było

  • nie bronie się tylko znam go stosunkowo słabo (mój zasób słów nie jest powalający). Oczywiście zdaję sobie sprawę że w najbliższym czasie będę musiał intensywnie nad tym popracować, już nawet zapisałem się na wakacyjny kurs z j.Angielskiego
furious programming napisał(a):

Jak czegoś nie rozumiesz, to są od tego translatory, np. od Google czy Bing, więc nie musisz ślęczeć nad słownikiem i szukać słowo po słowie

  • a korzystałeś kiedyś z tych translatorów ?? Wiesz jak one tłumaczą ?? Czy ty byłbyś w stanie polegać na tłumaczeniach jakie oferuje Ci np. Google Translator ??
furious programming napisał(a):

Jeżeli chcesz cokolwiek umieć to zacznij się uczyć - zapoznaj się z programowaniem obiektowym, bo Delphi nie ma monopolu na klasy

  • Jeśli kiedykolwiek będę myślał o programowaniu na poważnie (czyt. zarobkowo) to z całą pewnością będę się w tej materii szkolił i uzupełniał swoje braki, na dzień dzisiejszy chcę jedynie zaliczyć ten ostatni przedmiot i zakończyć studia. Zaliczenie mam w najbliższą sobotę i do tego czasu raczej nie zdążę nauczyć się programowania obiektowego.
    Dlatego mam nadzieję że w końcu przestaniecie się ze mnie nabijać i pomożecie mi to zrozumieć żebym mógł to zaliczyć
furious programming napisał(a):

szlifuj angielski, bo programista/webmaster bez znajomości angielskiego będzie miał baaardzo ciężko.

  • wiem, odczułem już to niejednokrotnie :( mam nadzieje że to się poprawi przez wakacje
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:30 minut
  • Lokalizacja:Tuchów
  • Postów:12165
0
  • nie wiem czy kiepski, na pewno działający

Nie miałem na myśli poprawności wykonania kodu, tylko jego ilości, widoczności itd., gdzie obie te cechy można znacznie zredukować umiejętnie korzystając z programowania obiektowego;

  • do tej pory jakoś nie musiałem nic programować przy robieniu stron internetowych. Do wszystkich stron jakie do tej pory robiłem wystarczyła mi znajomość: [...]

No to robiłeś strony rodem z lat 90 - HTML; Jak przyjdzie czas na oskryptowanie strony, to przypomnisz sobie ten wątek :]

  • a korzystałeś kiedyś z tych translatorów ?? Wiesz jak one tłumaczą ?? Czy ty byłbyś w stanie polegać na tłumaczeniach jakie oferuje Ci np. Google Translator ??

Oczywiście - korzystam praktycznie codziennie (głównie z Google, dlatego że ma możliwość wyboru synonimów i poprawiania wyniku translacji), dlatego że angielski znam średnio i czasem nie do końca rozumiem jakieś zdanie np. w specyfikacji, dokumentacji czy choćby w postach na zagramanicznych forach; Tłumaczenia wcale nie są takie złe, jednak każdy Polak znający swój język nie powinien mieć problemów ze zrozumieniem "Kali pić, Kali jeść";

Dlatego mam nadzieję że w końcu przestaniecie się ze mnie nabijać i pomożecie mi to zrozumieć żebym mógł to zaliczyć

Nawet w postach z docinkami można znaleźć cenne informacje, które pomogą Ci zrozumieć pewne rzeczy.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
GU
Kurde ja ostatnio rozkminiałem kody z rosyjskiej i chinskiej strony i translator Google mi życie ratował:D A tu widze ze ludzie narzekają na angielski translator^^
0

o tempora o mores

flowCRANE
Nie znam niemieckiego... :P
babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
3

Jakim urwał cudem gość robi magisterkę nie znając programowania obiektowego???

xfin
  • Rejestracja:ponad 11 lat
  • Ostatnio:8 miesięcy
  • Lokalizacja:Genewa
  • Postów:597
1

Pachnie mi to trollingiem - konto 39 postów, założone w 2005 roku (prawie 10 lat), a średnia postów około 3-4/rok.
Powiedzcie, że to troll? Magisterka bez znajomości podstaw OOP?

edytowany 1x, ostatnio: xfin
flowCRANE
Spokojnie, nie jest powiedziane, że każdy kto korzysta kilka razy w roku z forum od razu jest trolem; Gość ma ewidentny problem z zadaniem - nie z kulturą osobistą czy znajomością netykiety;
xfin
Ale ja mu nie zarzucam braku kultury czy problemu z netykietą. Ja wiem, że obecnie troll kojarzy się z kimś kto powyższych nie respektuje, ale inteligentny trolling może być uprzejmy :) Tylko naprawdę dziwi mnie fakt istnienia tego problemu - nie wyśmiewam go, ale naprawdę jest to dla mnie szokiem.
n0name_l
Sam problem jest calkowicie normalny. Podejscie do rozwiazania go jest za to zadzwiajace.
flowCRANE
@xfin - w takim razie zapoznaj się z terminem troll, bo albo nie rozumiesz co oznacza, albo nie wiesz w jakim kontekście tego słowa używać;
xfin
@furious programming - przyznaję rację - mój błąd.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8403
4

Żeby nie było, że nie pomogłem to:

  1. to się opiera na wzorcu MVC, jest maaasę rzeczy po polsku o tym.
  2. musisz wiedzieć na czym polega diagram UML (do zrozumienia zapisu) + http://pl.wikipedia.org/wiki/Adapter_(wzorzec_projektowy)
    Martin Fowler zaś pisze dużo o wzorcach projektowych (po angielsku, ale pewnie jakieś tłumaczenia możesz znaleźć).

Dlatego mam nadzieję że w końcu przestaniecie się ze mnie nabijać i pomożecie mi to zrozumieć żebym mógł to zaliczyć

Jeśli teraz robisz magisterkę to musiałeś zrobić wcześniej licencjata/inżyniera? A w jakiej szkole zdawałeś? Publicznej czy prywatnej? Jakie miasto? Bo wiesz, że to strasznie źle świadczy o poziomie uczelni wyższych w naszym kraju, że osoba bez podstawowej wiedzy (i która w sumie nawet nie interesuje się informatyka, tylko pragnie zaliczyć, najlepiej z gotowca), ma już wykształcenie wyższe z informatyki.

Dyplom to bzdura ;)

A po trzecie - po co informatykowi (zajmującemu się tworzeniem i pozycjonowaniem stron i sklepów internetowych) studia polonistyczne ?

Masz rację. Do tego wystarczy spokojnie gimnazjum, nawet matury nie trzeba mieć ;)

a korzystałeś kiedyś z tych translatorów ?? Wiesz jak one tłumaczą ?? Czy ty byłbyś w stanie polegać na tłumaczeniach jakie oferuje Ci np. Google Translator ??

w dupie się poprzewracało od dobrobytu... kiedyś nie było Google Translate i się brało papierowy(!!) słownik i sprawdzało co drugie słowo angielskie. No i nie było stałych łączy, internet się właczało np. raz dziennie, albo w ogóle go nie było w domu. Ale też nie było też na tyle rozwiniętej polskiej społeczności, żeby kogoś spytać na forum po polsku (więc z musu pisało się pytanie na anglojęzycznej grupie, albo szukało na anglojęzycznej stronie). Często też głównym źródłem informacji był anglojęzyczny Help, który się właczało w Delphi pod klawiszem F1.

Ale jakoś ludzie żyli i programowali. A teraz jest wielki problem, bo jest Internet, stałe łącza, Google, Wikipedia, tutoriale na Youtube, pełno treści w necie, automatyczne tłumaczenia, a dzisiejsze pokolenie dobrobytu ma wielki problem, bo jest im za łatwo zdobyć informację.


edytowany 1x, ostatnio: LukeJL
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)