konto usunięte

Temat: Kto jest odpowiedzialny za tworzenie?

Pewnie większość (o ile nie wszyscy:) członkowie grupy czytają blog Jarka Żelińskiego na bieżąco:), jednak gdyby komuś umknęło, to polecam jego ostatni wpis.

Ja chyba to dzisiaj przedrukuję i dam każdej osobie w teamie do poczytania, ponieważ pytania: "Jak to? Nie mogę używać słowa kluczowego new? Nie mogę tworzyć obiektów?" również słyszę dość często, a część programistów, z którymi pracuję odczuwa irracjonalny strach, gdy widzi jakąś fabrykę w projekcie:(Sebastian Malaca edytował(a) ten post dnia 25.06.12 o godzinie 09:22
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Kto jest odpowiedzialny za tworzenie?

Sebastian M.:
Pewnie większość (o ile nie wszyscy:) członkowie grupy czytają blog Jarka Żelińskiego na bieżąco:), jednak gdyby komuś umknęło, to polecam jego ostatni wpis.

Ja chyba to dzisiaj przedrukuję i dam każdej osobie w teamie do poczytania, ponieważ pytania: "Jak to? Nie mogę używać słowa kluczowego new? Nie mogę tworzyć obiektów?" również słyszę dość często, a część programistów, z którymi pracuję odczuwa irracjonalny strach, gdy widzi jakąś fabrykę w projekcie:(

temat się pojawił tu i padają "te" pytania i odpowiedzi :)

http://www.goldenline.pl/forum/3354034/event-sourcing/...

konto usunięte

Temat: Kto jest odpowiedzialny za tworzenie?

Sebastian M.:
Pewnie większość (o ile nie wszyscy:) członkowie grupy czytają blog Jarka Żelińskiego na bieżąco:), jednak gdyby komuś umknęło, to polecam jego ostatni wpis.

Ja chyba to dzisiaj przedrukuję i dam każdej osobie w teamie do poczytania, ponieważ pytania: "Jak to? Nie mogę używać słowa kluczowego new? Nie mogę tworzyć obiektów?" również słyszę dość często, a część programistów, z którymi pracuję odczuwa irracjonalny strach, gdy widzi jakąś fabrykę w projekcie:(

To najczęściej jest racjonalny strach ponieważ mało kto wie do czego dany wzorzec służy, a źle użyty wzorzec oznacza s** w projekcie aplikacji.

Do czego służy fabryka ? A właściwie fabryka abstrakcyjna bo to chyba na nią Pan Arkadiusz powołuje.

http://pl.wikipedia.org/wiki/Fabryka_abstrakcyjna_%28w...

Otóż fabryka służy do tworzenia, dla zadanego interfejsu, odpowiednich obiektów.
Takie uproszczone Inversion of control.
Fabryka ma wiedzieć, jakiej klasy obiekt ma zwrócić, a nie jak dany obiekt inicjalizować.
Używanie fabryki jest bez sensu jeśli wiemy jakiej klasy obiektu potrzebujemy.

Inicjalizacja obiektu powinna być zaimplementowana w konstruktorze, bo do tego konstruktor służy.

Z resztą ...
"No właściwie to nie. Jeżeli chcesz w klasie tworzyć obiekty to to już jest odpowiedzialność.

Tworzenie obiektów to odpowiedzialność...

"Wiec klasa nic poza tworzeniem obiektów nie powinna robić."

Więc jeśli w klasie tworzymy obiekty to klasa nie powinna niczego innego robić...

"Ale przecież klasa która nie robi nic poza tworzeniem obiektów to fabryka. "

Ale przecież klasa która nie robi nic poza tworzeniem obiektów to fabryka... Odsyłam do definicji.

"Wszystko jak najbardziej się zgadza. Fabryka – wzorzec kreacyjny (hm… a może znacie jakieś bardziej odpowiednie słowo) gangu czterech."

.. ja nie znam; fabryka abstrakcyjna jest wzorcem kreacyjnym. No chyba że chodzi o jakąś inną fabrykę.

BTW: Nie wiem czy czytałeś artykuł który cytujesz, ale jego autor implementuje metodę "Save" na obiekcie domeny. Ciekawe, nie ?Ten post został edytowany przez Autora dnia 29.10.13 o godzinie 08:46
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Kto jest odpowiedzialny za tworzenie?

Jakub W.:
Do czego służy fabryka ? A właściwie fabryka abstrakcyjna bo to chyba na nią Pan Arkadiusz powołuje.

http://pl.wikipedia.org/wiki/Fabryka_abstrakcyjna_%28w...


Fabryka abstrakcyjna to podtyp, generalnie "wzorcem" (dobra praktyką) jest oddzielenie kreowania obiektów od ich używania, przytoczyłem prosty przykład sensu tego zabiegu: nie pakujemy fabryki samochodów do bagażnika każdego wytworzonego samochodu, albo inaczej: samochody powstają w jednej fabryce a nie przez pączkowanie.


Otóż fabryka służy do tworzenia, dla zadanego interfejsu, odpowiednich obiektów.

to jeden z przykładów użycia "fabryki" do tworzenia skomplikowaniach GUI (ekrany wielu aplikacji to bardzo złożone agregaty)

Takie uproszczone Inversion of control.
Fabryka ma wiedzieć, jakiej klasy obiekt ma zwrócić, a nie jak dany obiekt inicjalizować.

inicjalizowanie to nie tworzenie, po drugie fabryk raczej nie używamy do tworzenia prostych obiektów, tu wystarczą "metody wytwórcze"

Używanie fabryki jest bez sensu jeśli wiemy jakiej klasy obiektu potrzebujemy.

jak wyżej

Inicjalizacja obiektu powinna być zaimplementowana w konstruktorze, bo do tego konstruktor służy.

jeżeli mam raz "wytworzony" agregat reprezentujący np. skomplikowane okno edytora tekstu albo skomplikowaną kartę produktu, to nie tworzę go od zera przy każdym użyciu tylko "podnosze" bo był "zapisany". Zapewne masz na myśli to, że mając bazę relacyjną faktycznie musisz napisać metodę, która powtórni "strzorzy" dany agregat po tym jak został "zniszczony" w procesie normalizacji i zapisania go w RDBMS, ale to procesu "implementacji utrwalania" a nie dziedzinowe,

BTW: Nie wiem czy czytałeś artykuł który cytujesz, ale jego autor implementuje metodę "Save" na obiekcie domeny. Ciekawe, nie ?

który artykuł?

Mam wrażenie Jakub, że taktujesz łącznie model dziedziny, mapowanie ORM i RDBMS pod tym, a to odrębne, żyjące (o ile rozdzielimy te warstwy) własnym życie "poziomy" abstrakcji. Dobra aplikacja to taka, w której model dziedziny mogę przesadzić np. z ORM+RDMS na płaskie pliki CSV bez szkody (żadnej modyfikacji) dla struktury modelu dziedziny, taka przesiada powinna wymagać wyłącznie zmiany implementacji Repozytorium. jeżeli wsadzisz jakąkolwiek logikę np. do ORM to się to nie uda. Osobnym pytaniem jest czy ma sie udać, ja uważam, że tak bo jestem zwolennikiem hermetyzacji, bo ona bardzo ułatwia proces rozwoju aplikacji mimo braku wiedzy o przyszłych potrzebach użytkownika: "system powinien być zamknięty na zmiany i otwarty na rozszerzenia".
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Kto jest odpowiedzialny za tworzenie?

Tak sobie pomyślałem, że być może Jakub używa języka, w którym klasa nie jest bytem abstrakcyjnym tylko fizycznym obok obiektów, tworzy ona obiekty co sugerowało by uznawanie wbudowanej operacji new() jako metody kreacyjnej, innymi słowy "klasa" jest fabryka a obiektem (obiektami) który ona tworzy, ... ale to specyfika, co do zasady fabryka to np. singleton, "aplikacja to obiekty, klasy to tylko ich definicje w kodzie".

konto usunięte

Temat: Kto jest odpowiedzialny za tworzenie?

Jarosław Ż.:
Jakub W.:
Do czego służy fabryka ? A właściwie fabryka abstrakcyjna bo to chyba na nią Pan Arkadiusz powołuje.

http://pl.wikipedia.org/wiki/Fabryka_abstrakcyjna_%28w...


Fabryka abstrakcyjna to podtyp, generalnie "wzorcem" (dobra praktyką) jest oddzielenie kreowania obiektów od ich używania, przytoczyłem prosty przykład sensu tego zabiegu: nie pakujemy fabryki samochodów do bagażnika każdego wytworzonego samochodu, albo inaczej: samochody powstają w jednej fabryce a nie przez pączkowanie.

Czy to oznacza, że to fabryka (jakikolwiek to jest wzorzec), a nie konstruktor danej klasy, powinna ustalać stan początkowy obiektu ?
Takie uproszczone Inversion of control.
Fabryka ma wiedzieć, jakiej klasy obiekt ma zwrócić, a nie jak dany obiekt inicjalizować.

inicjalizowanie to nie tworzenie, po drugie fabryk raczej nie używamy do tworzenia prostych obiektów, tu wystarczą "metody wytwórcze"

Czy "metody wytwórcze", ewentualnie "fabryki" powinny ustalać stan tworzonego obiektu ?
Inicjalizacja obiektu powinna być zaimplementowana w konstruktorze, bo do tego konstruktor służy.

jeżeli mam raz "wytworzony" agregat reprezentujący np. skomplikowane okno edytora tekstu albo skomplikowaną kartę produktu, to nie tworzę go od zera przy każdym użyciu tylko "podnosze" bo był "zapisany".

Czy to znaczy, że fabryka ustala stan obiektu ?
Zapewne masz na myśli to, że mając bazę relacyjną faktycznie musisz napisać metodę, która powtórni "strzorzy" dany agregat po tym jak został "zniszczony" w procesie normalizacji i zapisania go w RDBMS, ale to procesu "implementacji utrwalania" a nie dziedzinowe,

Mówię raczej o tym, że bez "dobrego ORM" (posiadającego pewne funkcjonalności), DDD będzie wymagać denormalizacji schematu bazy danych (w celach wydajnościowych) i tworzenia "fabryk" które będą ustalać stany obiektów / agregatów (łamiąc przy okazji zasadę enkapsulacji).
BTW: Nie wiem czy czytałeś artykuł który cytujesz, ale jego autor implementuje metodę "Save" na obiekcie domeny. Ciekawe, nie ?

który artykuł?

http://www.benedykt.net/2012/04/27/single-responsibili...
Mam wrażenie Jakub, że taktujesz łącznie model dziedziny, mapowanie ORM i RDBMS pod tym, a to odrębne, żyjące (o ile rozdzielimy te warstwy) własnym życie "poziomy" abstrakcji.

Wiem że to są "odrębne poziomy abstrakcji". I właśnie dlatego nie wiem, dlaczego ktoś miałby korzystać z CQRS a konkretnie - z agregatów zapisanych w bazie danych... Po co ta redundancja ?
Dobra aplikacja to taka, w której model dziedziny mogę przesadzić np. z ORM+RDMS na płaskie pliki CSV bez szkody (żadnej modyfikacji) dla struktury modelu dziedziny, taka przesiada powinna wymagać wyłącznie zmiany implementacji
Repozytorium.

...w tym momencie czuję straszną pokusę pisania o tym, jak powinien wyglądać model dziedziny.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Kto jest odpowiedzialny za tworzenie?

Jakub W.:
Jarosław Ż.:
Jakub W.:
Do czego służy fabryka ? A właściwie fabryka abstrakcyjna bo to chyba na nią Pan Arkadiusz powołuje.

http://pl.wikipedia.org/wiki/Fabryka_abstrakcyjna_%28w...


Fabryka abstrakcyjna to podtyp, generalnie "wzorcem" (dobra praktyką) jest oddzielenie kreowania obiektów od ich używania, przytoczyłem prosty przykład sensu tego zabiegu: nie pakujemy fabryki samochodów do bagażnika każdego wytworzonego samochodu, albo inaczej: samochody powstają w jednej fabryce a nie przez pączkowanie.

Czy to oznacza, że to fabryka (jakikolwiek to jest wzorzec), a nie konstruktor danej klasy, powinna ustalać stan początkowy obiektu ?

To zależy, np. nowy produkt w magazynie
- Fabryka wyprodukuje na żądanie "skomplikowany pusty agregat"
- agregat na żądanie wykrztusi DTO i wyśle do View
- aktor wypełnia dokładnie opis podzespołu
- DTO jest zwracane do Agregatu, który na bazie danych w DTO ustawia atrybuty (stan początkowy)
- obiekt zarządzający tym Przypadkiem Użycia, kartotekę nowego produktu - nowy Agregat - do repozytorium "na przechowanie", w razie potrzeby Repozytorium zwróci ten Agregat (A nie wytworzy)

Takie uproszczone Inversion of control.
Fabryka ma wiedzieć, jakiej klasy obiekt ma zwrócić, a nie jak dany obiekt inicjalizować.

inicjalizowanie to nie tworzenie, po drugie fabryk raczej nie używamy do tworzenia prostych obiektów, tu wystarczą "metody wytwórcze"

Czy "metody wytwórcze", ewentualnie "fabryki" powinny ustalać stan tworzonego obiektu ?

nie zawsze, patrz wyżej....
Czy to znaczy, że fabryka ustala stan obiektu ?

patrz wyżej

Mówię raczej o tym, że bez "dobrego ORM" (posiadającego pewne funkcjonalności), DDD będzie wymagać denormalizacji schematu bazy danych (w celach wydajnościowych) i tworzenia "fabryk" które będą ustalać stany obiektów / agregatów (łamiąc przy okazji zasadę enkapsulacji).


a gdzie ja napisałem ze ma być znormalizowana baza danych? (której nie lubię), na czym polega problem ze stosowaniem prostego "wzorca" active table lub active record?

jeżeli uważasz, że bazą "pod system" należy zaprojektować, znormalizować i obiektowy model domeny, z pomocą ORM zamienić na relacyjny model danych to obaj tu tracimy czas ::)
BTW: Nie wiem czy czytałeś artykuł który cytujesz, ale jego autor implementuje metodę "Save" na obiekcie domeny. Ciekawe, nie ?

który artykuł?

http://www.benedykt.net/2012/04/27/single-responsibili...

masz rację, masakra :(
Mam wrażenie Jakub, że taktujesz łącznie model dziedziny, mapowanie ORM i RDBMS pod tym, a to odrębne, żyjące (o ile rozdzielimy te warstwy) własnym życie "poziomy" abstrakcji.

Wiem że to są "odrębne poziomy abstrakcji". I właśnie dlatego nie wiem, dlaczego ktoś miałby korzystać z CQRS a konkretnie - z agregatów zapisanych w bazie danych... Po co ta redundancja ?

jeżeli masz na myśli redundancję: złożone agregaty i "obok" to samo ale w uproszczeniu jeszcze raz, to powód jest tylko jeden: czas odpowiedzi (magazynier ma zdublowane w uproszczeniu kartoteki w zeszyciku by móc szybko udzielać odpowiedzi na permanentnie zadawane prytanie "ile masz w magazynie?"
Dobra aplikacja to taka, w której model dziedziny mogę przesadzić np. z ORM+RDMS na płaskie pliki CSV bez szkody (żadnej modyfikacji) dla struktury modelu dziedziny, taka przesiada powinna wymagać wyłącznie zmiany implementacji
Repozytorium.

...w tym momencie czuję straszną pokusę pisania o tym, jak powinien wyglądać model dziedziny.

zamieniam się w słuch :)
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Kto jest odpowiedzialny za tworzenie?

Jakub, nie straszymy już dzieci redundacją i kosztami pamięci masowych ;)

konto usunięte

Temat: Kto jest odpowiedzialny za tworzenie?

Jarosław Ż.:
Jakub W.:
Jarosław Ż.:
Jakub W.:
Do czego służy fabryka ? A właściwie fabryka abstrakcyjna bo to chyba na nią Pan Arkadiusz powołuje.

http://pl.wikipedia.org/wiki/Fabryka_abstrakcyjna_%28w...


Fabryka abstrakcyjna to podtyp, generalnie "wzorcem" (dobra praktyką) jest oddzielenie kreowania obiektów od ich używania, przytoczyłem prosty przykład sensu tego zabiegu: nie pakujemy fabryki samochodów do bagażnika każdego wytworzonego samochodu, albo inaczej: samochody powstają w jednej fabryce a nie przez pączkowanie.

Czy to oznacza, że to fabryka (jakikolwiek to jest wzorzec), a nie konstruktor danej klasy, powinna ustalać stan początkowy obiektu ?

To zależy, np. nowy produkt w magazynie
- Fabryka wyprodukuje na żądanie "skomplikowany pusty agregat"

Proszę o jakiś konkretny przykład / próbkę kodu.
W mojej opinii nie ma innego sposobu na "porozumienie się".

Mam w głowie pewne koncepcje; ktoś inny może mieć inne. Brak uwspólnionej wiedzy może i się sprawdza przy pisaniu głupich postów (Uid Dachan, CQRS - "nikt mnie nie zrozumie, o ile wcześniej mi nie zapłaci") ale na pewno nie sprawdzi się podczas próby nawiązania konstruktywnego dialogu.

Proszę o próbkę kodu; rozmawiajmy o konkretach.
BTW: Nie wiem czy czytałeś artykuł który cytujesz, ale jego autor implementuje metodę "Save" na obiekcie domeny. Ciekawe, nie ?

który artykuł?

http://www.benedykt.net/2012/04/27/single-responsibili...

masz rację, masakra :(

Nom ...
Proponuje porozmawiać o tym, co "robi" (fragmenty kodu) Eric Evans w swojej książce nt. DDD.
Tam jest jeszcze większa masakraTen post został edytowany przez Autora dnia 05.11.13 o godzinie 20:35
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Kto jest odpowiedzialny za tworzenie?

Jakub W.:
To zależy, np. nowy produkt w magazynie
- Fabryka wyprodukuje na żądanie "skomplikowany pusty agregat"

Proszę o jakiś konkretny przykład / próbkę kodu.
W mojej opinii nie ma innego sposobu na "porozumienie się".

hm... tu niestety odpadnę.... na moja niekorzyść działa to, ze nie koduję od 15 lat, na korzyść to, że moje projekty są jednak implementowane...
nie rozumiem dlaczego oczekujesz stanu początkowego w momencie wytworzenia agregatu, skoro z jednej strony musi być "validowalnny" a z drugiej moim zdaniem jednak "nie powienien być fikcją"


Mam w głowie pewne koncepcje; ktoś inny może mieć inne. Brak uwspólnionej wiedzy może i się sprawdza przy pisaniu głupich postów (Uid Dachan, CQRS - "nikt mnie nie zrozumie, o ile wcześniej mi nie zapłaci") ale na pewno nie sprawdzi się podczas próby nawiązania konstruktywnego dialogu.

Udi Daha w moich oczach powoli traci...
Proponuje porozmawiać o tym, co "robi" (fragmenty kodu) Eric Evans w swojej książce nt. DDD.
Tam jest jeszcze większa masakra

na szczęście dla mnie nie potrafię już ocenić "fragmentów kodu" ale biorę sobie Twoje słowa do serca, na szczęście "konceptualnie" DDD ma sens i to chyba moge wykazać.. ;)

tu troszkę
http://it-consulting.pl/autoinstalator/wordpress/2012/...

konto usunięte

Temat: Kto jest odpowiedzialny za tworzenie?

Jarosław Ż.:
Jakub W.:
To zależy, np. nowy produkt w magazynie
- Fabryka wyprodukuje na żądanie "skomplikowany pusty agregat"

Proszę o jakiś konkretny przykład / próbkę kodu.
W mojej opinii nie ma innego sposobu na "porozumienie się".

hm... tu niestety odpadnę.... na moja niekorzyść działa to, ze nie koduję od 15 lat, na korzyść to, że moje projekty są jednak implementowane...
nie rozumiem dlaczego oczekujesz stanu początkowego w momencie wytworzenia agregatu, skoro z jednej strony musi być "validowalnny" a z drugiej moim zdaniem jednak "nie powienien być fikcją"

No to klops. :)
W temacie agregatów - chciałbym się upewnić, że na pewno rozmawiamy o tych samych rzeczach. Póki co język naturalny zwodzi zawodzi a na jakiś formalny chyba nie ma co liczyć ...
Mam w głowie pewne koncepcje; ktoś inny może mieć inne. Brak uwspólnionej wiedzy może i się sprawdza przy pisaniu głupich postów (Uid Dachan, CQRS - "nikt mnie nie zrozumie, o ile wcześniej mi nie zapłaci") ale na pewno nie sprawdzi się podczas próby nawiązania konstruktywnego dialogu.

Udi Daha w moich oczach powoli traci...

Zastanawia mnie, kiedy i w związku z czym stał się "autorytetem" ...
Proponuje porozmawiać o tym, co "robi" (fragmenty kodu) Eric Evans w swojej książce nt. DDD.
Tam jest jeszcze większa masakra

na szczęście dla mnie nie potrafię już ocenić "fragmentów kodu"

no ale takie coś chyba nawet po piętnastu latach powinno "dawać po oczach";

String query = "SELECT * FROM users WHERE registration_date = " + regDate + ";

Nie jestem pewien, czy Eric napisał coś takiego ponieważ nie wiedział, że nie powinno się tak robić, czy dlatego, że gdyby zrobił to "po bożemu" to przykład jego kodu byłby bez sensu...
ale biorę sobie Twoje słowa do serca, na szczęście "konceptualnie" DDD ma sens i to chyba moge wykazać.. ;)

co do koncepcji nie mam uwag :)
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Kto jest odpowiedzialny za tworzenie?

Jakub W.:
W temacie agregatów - chciałbym się upewnić, że na pewno rozmawiamy o tych samych rzeczach. Póki co język naturalny zwodzi zawodzi a na jakiś formalny chyba nie ma co liczyć ...

agretem w rozumieniu OOAD jest to:

Obrazek


pomijając logikę (sam pomysł jako taki) jest to pełnoprawny agregat, kodowanie jest tu nie potrzebne jako środek wyrazu... (ale wyobraź sobie, że każda klasa ma tu atrybuty i operacje)
Udi Daha w moich oczach powoli traci...

Zastanawia mnie, kiedy i w związku z czym stał się "autorytetem" ...

pytanie do tych, którzy uznają go za autorytet, jego umiejętności programistycznych nie potrafię ocenić, a te związane z UML i projektowaniem uważam, że bardzo przeciętne gdyż sam fakt, że ktoś szczyci się używaniem zawodowo kiepskiego oprogramowana za niecałe 200USD niezgodnego ze specyfikacją UML (SPARX Enterpise Architect) nie świadczy o nim za dobrze w moich oczach.

na szczęście dla mnie nie potrafię już ocenić "fragmentów kodu"

no ale takie coś chyba nawet po piętnastu latach powinno "dawać po oczach";

o czym mówisz? :) Ja w przypadku Evansa "kupuję" DDD jako wzorzec analityczny, który się bardzo dobrze nadaje do analizy, jego uwagi o implementacji szczerze mówiąc pomijam...

String query = "SELECT * FROM users WHERE registration_date = " + regDate + ";

Nie jestem pewien, czy Eric napisał coś takiego ponieważ nie wiedział, że nie powinno się tak robić, czy dlatego, że gdyby zrobił to "po bożemu" to przykład jego kodu byłby bez sensu...

tu polegam na Twojej opinii :)
ale biorę sobie Twoje słowa do serca, na szczęście "konceptualnie" DDD ma sens i to chyba moge wykazać.. ;)

co do koncepcji nie mam uwag :)

witaj w klubie :)

konto usunięte

Temat: Kto jest odpowiedzialny za tworzenie?

Jarosław Ż.:
Jakub W.:
W temacie agregatów - chciałbym się upewnić, że na pewno rozmawiamy o tych samych rzeczach. Póki co język naturalny zwodzi zawodzi a na jakiś formalny chyba nie ma co liczyć ...

agretem w rozumieniu OOAD jest to:

Wiem czym jest agregat w OOAD :)
Pytałem o agregaty w DDD (czyli niejako podtyp wzorca agregatu). Chciałbym wiedzieć jakie są relacje między nimi a innymi częściami system (a po prostu - czym są i co robią :).
na szczęście dla mnie nie potrafię już ocenić "fragmentów kodu"

no ale takie coś chyba nawet po piętnastu latach powinno "dawać po oczach";

o czym mówisz? :)

o tym :)
String query = "SELECT * FROM users WHERE registration_date = " + regDate;
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Kto jest odpowiedzialny za tworzenie?

Jakub W.:
Wiem czym jest agregat w OOAD :)
Pytałem o agregaty w DDD (czyli niejako podtyp wzorca agregatu). Chciałbym wiedzieć jakie są relacje między nimi a innymi częściami system (a po prostu - czym są i co robią :).

w DDD to taki sam agregat, czyli coś co nie jest jedną klasą (niefortunnie nazywana w DDD entity co niefortunnki sugeruje krotkę RDBMS)), ale co do zasady korzen agregatu jest jedo jedynym interfejsem.

o tym :)
String query = "SELECT * FROM users WHERE registration_date = " + regDate;

no cóż... nawet na moje oko wygląda to "dziwnie" :)

konto usunięte

Temat: Kto jest odpowiedzialny za tworzenie?

Fakt ciekawe artykuły, właśnie sobie dodałem sobie stronkę Pana Jarosława do ulubionych.
Pozdrawiam.
Sebastian M.:
Pewnie większość (o ile nie wszyscy:) członkowie grupy czytają blog Jarka Żelińskiego na bieżąco:), jednak gdyby komuś umknęło, to polecam jego ostatni wpis.

Ja chyba to dzisiaj przedrukuję i dam każdej osobie w teamie do poczytania, ponieważ pytania: "Jak to? Nie mogę używać słowa kluczowego new? Nie mogę tworzyć obiektów?" również słyszę dość często, a część programistów, z którymi pracuję odczuwa irracjonalny strach, gdy widzi jakąś fabrykę w projekcie:(



Wyślij zaproszenie do