🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: jak to jest z tymi JavaBeans

#153735
From: Arivald
Date: Thu, 03 Jan 2013 09:18
54 lines
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-mail
References: <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