🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153743

Re: jak to jest z tymi JavaBeans

#153743
From: Jadalbert
Date: Thu, 03 Jan 2013 20:58
104 lines
4644 bytes
W dniu 2013-01-03 21:47, x pisze:
> W dniu 2013-01-03 11:15, Arivald pisze:
>> W dniu 2013-01-03 11:03, Jadalbert pisze:
>>> W dniu 2013-01-03 10:18, Arivald pisze:
>>>> W dniu 2013-01-03 09:40, Jadalbert pisze:
>>>>> problem (czy raczej moja niewiedza) jest taki
>>>>> Mam program liczący pewne wielkości i, dajmy na
>>>>> to w uproszczeniu, w
>>>>> klasie Geom metodę
>>>>> public double V(double x, double y, double z) {
>>>>>      return x * y * z;
>>>>> }
>>>>> gdzieś tam jest to wywoływane:
>>>>> V_ = Geom.V(2,3,4);
>>>>> czyli trzeba wstawić trzy argumenty. Wszystko
>>>>> działa bez zarzutu.
>>>>> Teraz, z klas liczących chcę zrobić beans'y.
>>>>> Czyli powinno być tak (opierając się na
>>>>> powyższym przykładzie):
>>>>> private double v;
>>>>> ...
>>>>> public double getV() {return v};
>>>>> public void setV(double v) {this.v = v;}
>>>>
>>>> To jest tylko para sette/getter. W zamyśle razem
>>>> tworzą jedną właściwość obiektu.
>>>>
>>>>> i tu, zgodnie z konwencją, metoda set ma tylko
>>>>> jeden argument, a ja
>>>>> potrzebuję przekazać 3. Jak wybrnąć sensownie z
>>>>> takiej sytuacji? Osobna
>>>>> klasa licząca + osobna typu beans? W beans'ie
>>>>> dodatkowe metody liczące?
>>>>> Można oczywiście już w implementacji dołożyć
>>>>> odpowiednie zmienne, ale co
>>>>> wtedy przekazywać jako argument?
>>>>> Najchętniej wszystko co dotyczy liczenia i, że
>>>>> tak powiem, formalnej
>>>>> struktury beans'ów chciałbym mieć w jednej
>>>>> klasie.
>>>>
>>>> Możesz to zrobić np tak
>>>>
>>>> //property X
>>>> public double getX() {return x};
>>>> public void setX(double x) {this.x = x;}
>>>> //property Y
>>>> public double getY() {return y};
>>>> public void setY(double y) {this.y = y;}
>>>> //property Z
>>>> public double getZ() {return z};
>>>> public void setZ(double z) {this.z = z;}
>>>>
>>>> //property V
>>>> public double getV() {return x * y * z;}
>>>>
>>>>
>>>> Jak widzisz, właściwość V nie ma settera, jest
>>>> tyko do odczytu. A jednocześnie jej getter
>>>> wykonuje potrzebne obliczenia.
>>>>
>>>> Zauważ że w ciałach setterów/getterów nie musisz
>>>> wcale pisać/czytać ze zmiennych. Możesz na
>>>> przykład przekazywać wartości do innych obiektów,
>>>> lub bazy danych, albo wołać jakieś funkcje API
>>>> odwołujące się do realnego świata (np. sterować
>>>> robotem).
>>>>
>>> Dziękuję za odpowiedź.
>>> Tyle, że dane do getV pochodzą z innej klasy, u
>>> mnie z takiego kontenera
>>> danych. Nie ma więc (potrzeby?) get/set
>>> właściwości x,y,z w klasie
>>> liczącej.
>>>
>>> Z tego by wynikało, że aby zachować konwencje
>>> beans'a wystarczy mi
>>> jedynie odczytywać wartość:
>>>
>>> private double v;
>>> ...
>>> public double getV() {
>>>    return kontener.x * kontener.y * kontener.z;
>>> }
>>> Czy dobrze rozumiem?
>>
>> Dokładnie tak.
>>
>
> Oj to nie wygląda za dobrze. Przede wszystkim
> dlatego, że większość programistów zinterpretuje
> nazwę getV() jako "zwracam pole V". Tymczasem
> metoda nawet nie operuje na polach obiektu na
> rzecz którego jest wywoływana, tylko na obiekcie
> "kontener"...
>
> Pozdrawiam,
> Marcin Jaskolski
>
>
no właśnie też mi się wydaje, że do zmiany 
wartości pola służy set..., a get... do odczytu
i stąd moje całkiem na górze pytanie i wątpliwości
jednak w javie to se poczynam na razie mizernie
Technical Details
Message-ID: <50e5f0ee$0$26710$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <50e54418$0$1298$65785112@news.neostrada.pl> <kc3ieu$a39$1@news.dialog.net.pl> <50e5578d$0$1213$65785112@news.neostrada.pl> <kc3loo$bga$1@news.dialog.net.pl> <50e5ee6f$0$1210$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Thu, 03 Jan 2013 21:58:27 +0100
From: Jadalbert <maxorin@poczta.onet.pl>
Reply-To: maxorin@poczta.onet.pl
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/17.0 Thunderbird/17.0
MIME-Version: 1.0
Newsgroups: pl.comp.lang.java
Subject: Re: jak to jest z tymi JavaBeans
References: <50e54418$0$1298$65785112@news.neostrada.pl> <kc3ieu$a39$1@news.dialog.net.pl> <50e5578d$0$1213$65785112@news.neostrada.pl> <kc3loo$bga$1@news.dialog.net.pl> <50e5ee6f$0$1210$65785112@news.neostrada.pl>
In-Reply-To: <50e5ee6f$0$1210$65785112@news.neostrada.pl>
Lines: 104
Message-ID: <50e5f0ee$0$26710$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.5.165.231
X-Trace: 1357246702 unt-rea-a-01.news.neostrada.pl 26710 83.5.165.231:3335
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit