🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: jak to jest z tymi JavaBeans

#153737
From: Arivald
Date: Thu, 03 Jan 2013 10:15
84 lines
3731 bytes
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.

-- 
Arivald
Technical Details
Message-ID: <kc3loo$bga$1@news.dialog.net.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!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>

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!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Arivald <arivald_@AT_interia_DOT_.pl>
Newsgroups: pl.comp.lang.java
Subject: Re: jak to jest z tymi JavaBeans
Date: Thu, 03 Jan 2013 11:15:53 +0100
Organization: Dialog Net
Lines: 86
Message-ID: <kc3loo$bga$1@news.dialog.net.pl>
References: <50e54418$0$1298$65785112@news.neostrada.pl> <kc3ieu$a39$1@news.dialog.net.pl> <50e5578d$0$1213$65785112@news.neostrada.pl>
NNTP-Posting-Host: poczta.pgs-soft.com
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1357208152 11786 62.87.249.67 (3 Jan 2013 10:15:52 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Thu, 3 Jan 2013 10:15:52 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Thunderbird/17.0
In-Reply-To: <50e5578d$0$1213$65785112@news.neostrada.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit