🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: jak to jest z tymi JavaBeans

#153736
From: Jadalbert
Date: Thu, 03 Jan 2013 10:03
79 lines
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-mail
References: <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