Article View: pl.comp.lang.java
Article #153736Re: jak to jest z tymi JavaBeans
From: Jadalbert
Date: Thu, 03 Jan 2013 10:03
Date: Thu, 03 Jan 2013 10:03
79 lines
3530 bytes
3530 bytes
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?
Technical Details
Message-ID:
<50e5578d$0$1213$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-02.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>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-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Date: Thu, 03 Jan 2013 11:03:57 +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> In-Reply-To: <kc3ieu$a39$1@news.dialog.net.pl> Lines: 79 Message-ID: <50e5578d$0$1213$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 217.96.16.46 X-Trace: 1357207437 unt-rea-b-01.news.neostrada.pl 1213 217.96.16.46:64045 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit