Article View: pl.comp.lang.java
Article #153735Re: jak to jest z tymi JavaBeans
From: Arivald
Date: Thu, 03 Jan 2013 09:18
Date: Thu, 03 Jan 2013 09:18
54 lines
3057 bytes
3057 bytes
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).
--
Arivald
Technical Details
Message-ID:
<kc3ieu$a39$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.supermedia.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<50e54418$0$1298$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.supermedia.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Arivald <NOSPAMarivald@interia.pl> Newsgroups: pl.comp.lang.java Subject: Re: jak to jest z tymi JavaBeans Date: Thu, 03 Jan 2013 10:18:56 +0100 Organization: Dialog Net Lines: 55 Message-ID: <kc3ieu$a39$1@news.dialog.net.pl> References: <50e54418$0$1298$65785112@news.neostrada.pl> NNTP-Posting-Host: dynamic-78-8-99-8.ssp.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1357204766 10345 78.8.99.8 (3 Jan 2013 09:19:26 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Thu, 3 Jan 2013 09:19:26 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20121128 Thunderbird/18.0 In-Reply-To: <50e54418$0$1298$65785112@news.neostrada.pl> X-Antivirus: avast! (VPS 130102-1, 2013-01-02), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit