🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #13758

Re: Transfer objects

#13758
From: Przemek Pokrywka
Date: Tue, 13 Dec 2005 19:56
152 lines
8581 bytes
W bardzo ciekawy sposób przedstawił Pan swoje stanowisko, jednak z
częścią twierdzeń nie mogę się zgodzić

Filip Sielimowicz napisał(a):
> Wydaje mi się raczej, że nadużywa się tu terminu "utrata obiektowości",
> a dokładniej: zaczyna się postrzegać jako "nieobiektowe" wszystko to,
> co "niesamodzielne i nieuniwersalne".

Nie twierdzę, że "obiektowe" powinno być "uniwersalne". Często o sile
obiektu decyduje jego wąska specjalizacja.
Samodzielność jednak, przynajmniej w pewnym stopniu _jest_ dla mnie
wyznacznikiem "obiektowości". Bierze się to z mojego oczekiwania wobec
obiektu, któremu powierzam jakieś dane, że zrobi z nich dobry użytek,
stworzy jakąś wartość dodaną. Co mi z tego, że wrzucę do obiektu
referencje do kilku innych obiektów, gdy on nie zrobi z nimi nic
użytecznego? To potrafi każda struktura danych z języków proceduralnych.
Nawiązując do znanej przypowieści jest to tak, jak ze
"sługą złym i gnuśnym", któremu powierzono talent, a on go zakopał w
ziemi. Co zrobił właściciel talentu po powrocie? Zabrał ten talent temu
słudze i dał go innemu, który dobrze zarządził swoimi. Tak samo ja
zabieram takim obiektom te dane, które mają, by dać je tym, które zrobią
z nimi coś użytecznego :)
Jasne, w pewnych skrajnych sytuacjach samo to,
że obiekt trzyma pewne dane w jednym miejscu stanowi jakąś wartość, ale
często obiekt taki nadaje się do powierzenia mu jakiejś odpowiedzialności

> Natomiast nie można tracić z horyzontu podstawowej kwestii: obiektowość 
> ma służyć
> wierniejszemu odwzorowywaniu rzeczywistości, a nie sobie samej. 

Przedstawił Pan fałszywą alternatywę - obiektowość sama dla siebie
kontra obiektowość w służbie wierniejszego odwzorowania rzeczywistości.
Wyznaczanie obiektowości jakiegoś przeznaczenia, misji do spełnienia
wydaje mi się zupełnie nietrafionym pomysłem, podobnym do pomysłu 
podporządkowywania sztuki polityce w ZSRR w latach 50', określanego 
mianem socrealizmu.
Obiektowość jest pewnym narzędziem o interesujących właściwościach,
którego można użyć do różnych celów, a tak się składa przy okazji, że
całkiem nieźle potrafi ono też odwzorować rzeczywistość.
Trzeba mieć na uwadze, w jaki sposób podejście to się narodziło i
rozwinęło - a rozwinęło się poprzez naturalną ewolucję technik
strukturalnych (które lubię nazywać określeniem pana Wrighta "algorytmy
+ struktury danych"). W pewnym momencie ktoś zauważył, że grupowanie
danych wraz z procedurami operującymi na nich to dobry pomysł, co
zaprowadziło do powstania koncepcji modułów, a później obiektów. Dla
mnie więc na przykład obiektowość stanowi pożyteczną cechę języka
programowania, umożliwiającą w dobry sposób organizować programy.
Doceniam możliwości podejścia obiektowego w zakresie możliwości
modelowania świata rzeczywistego, jednak też nie przeceniałbym tej
właściwości. Język obiektów to jednak nie do końca język klienta i może
dlatego właśnie mamy do czynienia z rozwojem alternatywnych podejść do
programowania, jak z językami domenowymi na przykład. Co do czego nie
mam wątpliwości, to do użyteczności technik obiektowych w praktyce
programistycznej.

> Wydaje 
> mi się, że
> bardzo często miesza się różne poziomy analizy, projektu i 
> implementacji. 

Z moich doświadczeń z kolei wynika, że fazy analizy, projektu i 
implementacji zbyt często nie są ze sobą należycie zintegrowane, a nade 
wszystko pętle zwrotne nie funkcjonują na tyle dobrze, żeby na czas 
przekazywać między sobą zaktualizowaną wiedzę o rzeczywistości.

> Mam wrażenie
> że niektórzy wydają z siebie wielkie westchnienia zdumienia, kiedy 
> okazuje się, że
> obiektowość zaangażowana na poziomie implementacyjnym, technicznym ma 
> zupełnie inną
> twarz niż obiektowość działająca niby w tym samym obszarze biznesowym, 
> ale na poziomie
> analizy i projektu.

Westchnienie zdumienia, czy nawet zawodu można wydawać próbując
bezkrytycznie podążać za wzorcami wyznaczonymi przez jakieś autorytety,
jak konsorcja firm informatycznych, a nie mając wyrobione własne
spojrzenie, z dozą zdrowego krytycyzmu.
Formułując treść posta rozpoczynającego ten wątek celowo zamierzałem
sprowokować do dyskusji obrońców dogmatów J2EE.

Jednak w miarę trwania dyskusji uświadamiam sobie coraz mocniej, że J2EE
to osobny (i nawet stosunkowo dobrze funkcjonujący) świat, rządzący
się swoimi prawami, które z obiektowością mają czasem więcej, a czasem
mniej wspólnego (z pewnością więcej, niż niektóre rozwiązania 
proponowane przez wiodącą technologię konkurencyjną i to należy 
docenić), jednak tworzą razem kompletną i w miarę harmonijną całość.

Zdaję sobie sprawę, że obiekty w rodzaju TO nie są wyłącznie specyfiką
J2EE, tylko raczej wszelkich platform rozproszonych, ale ciekawi mnie,
czy stosuje się niekiedy w nich podejście polegające na umieszczeniu w
nich większej dozy logiki, niekoniecznie nawet wchodząc na grunt
technologii mobilnych agentów.

> Wiele wzorców projektowych wręcz jawnie rozpina dane od funkcji i 
> widzimy to zarówno
> w idei takiej jak MVC, jak też we wspomnianym TransferObject i 
> występujących w kontekście
> DAO i BusinessObject. 

Tylko MVC z powyższych wzorców jest wspomniany w "Design Patterns" GoF. 
Wzorce projektowe J2EE są jednak odrobinę czymś innym, niż wzorce GoF.

> Niektórzy krzyczą, że to jakieś łamanie zasad 
> obiektowości.

Bo to jest - a przynajmniej jest to obiektowości mocna redukcja

> A ja mówię: zależy gdzie. Jeśli ktoś obiektowość rozumie jako: "obiekt 
> musi odwzorowywać
> całą wiedzę zgromadzoną we wszechświecie o tym, do czego jest przydatny" 
> to ja mówię "bzdura totalna".

Wie Pan, że nawet zgodzę się z Panem :) Tylko, że dlaczego całą, a nie 
tylko tą przydatną w kontekście systemu, w którym pracuje? Poza tym nikt 
nie twierdzi, że obiekt powinien odwzorowywać nawet całą wiedzę 
przydatną w danym kontekście, a jedynie tę jej część, która z różnych 
względów jest mu bardziej przynależna, niż innym obiektom tego systemu.

> To nie ma po prostu żadnego przełożenia na rzeczywistość.
> 
> Mamy nóż i mamy chleb. 
[...]

To dosyć oryginalne obiekty w systemie informatycznym :)
Doceniając obrazowość przykładów wyrażam powątpiewanie w możliwości
zastosowania analogii do prawdziwych systemów z konkretnie postawionymi
wymaganiami.
A wniosek o człowieku, który wie, czego użyć i w jakim celu narzuca
skojarzenie ze starymi, dobrymi algorytmami i strukturami danych.
Tylko że niedomagającymi co jakiś czas z powodu różnych niekorzystnych
zjawisk, np. z braku ukrywania danych.

> Bo chyba nikt mi 
> nie powie, że
> paleta powinna mieć metodę "użyj Kajtka do tego żeby się przenieść na 
> Marszałkowską".

Paleta nie... ale wirus grypy?

> Uważam, że należy dbać o to, by nie pakować kosmicznych problemów na 
> barki prostych narzędzi
> cukiernika, bo przerażenie i dezorientacja tychże bezpośrednio przekłada 
> się na to, że się
> potem stos palet najzwyczajniej nie trzyma kupy i Kajtek na 
> Marszałkowskiej otwierając drzwi
> od samochodu wysypuje chleb klienta prosto na ulicę.

Zgadzając się zupełnie co do wniosków dotyczących branży cukierniczej,
wyrażam powątpiewanie w ich słuszność w branży informatycznej :)

Przemek
Technical Details
Message-ID: <dnn919$ebu$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
References: <dn7emu$ke3$1@news.onet.pl> <slrndpo7kg.a7o.nobody@localhost.localdomain> <dnhavr$olf$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
From: Przemek Pokrywka <adres@zastrzezony.com>
Newsgroups: pl.comp.objects
Subject: Re: Transfer objects
Date: Tue, 13 Dec 2005 20:56:13 +0100
Organization: Onet.pl
Lines: 152
Message-ID: <dnn919$ebu$1@news.onet.pl>
References: <dn7emu$ke3$1@news.onet.pl> <slrndpo7kg.a7o.nobody@localhost.localdomain> <dnhavr$olf$1@news.onet.pl>
NNTP-Posting-Host: 041.inet.polhost.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1134503785 14718 80.48.120.41 (13 Dec 2005 19:56:25 GMT)
X-Complaints-To: usenet@news.onet.pl
NNTP-Posting-Date: Tue, 13 Dec 2005 19:56:25 +0000 (UTC)
X-Sender: 5aB4pqMdeQG1O30L902dNmlAzoKeNKcS
In-Reply-To: <dnhavr$olf$1@news.onet.pl>
X-Accept-Language: pl, en-us, en
User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit