Article View: pl.comp.lang.java
Article #153738Re: jak to jest z tymi JavaBeans
From: Jadalbert
Date: Thu, 03 Jan 2013 10:26
Date: Thu, 03 Jan 2013 10:26
88 lines
3926 bytes
3926 bytes
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.
>
Ok, dzięki, działam.
Technical Details
Message-ID:
<50e55cc7$0$1226$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<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>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Date: Thu, 03 Jan 2013 11:26:15 +0100 From: Jadalbert <maxorin@poczta.onet.pl> Reply-To: maxorin@poczta.onet.pl User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; 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> In-Reply-To: <kc3loo$bga$1@news.dialog.net.pl> Lines: 88 Message-ID: <50e55cc7$0$1226$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 217.96.16.46 X-Trace: 1357208775 unt-rea-b-01.news.neostrada.pl 1226 217.96.16.46:60828 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit