🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
13 messages
13 total messages Started by Jadalbert Wed, 15 Apr 2015 08:42
getter, który się wykonuje ale nic nie zwraca
#154146
Author: Jadalbert
Date: Wed, 15 Apr 2015 08:42
43 lines
2262 bytes
Jest taka sytuacja:
public abstract class Figura {
    protected double pole;
    protected double obwod;
    + odpowiednie gettery i settery
    public abstract double getSuma3Bokow();
}

public class Kolo extends Figura {
    private double pole;
    private double obwod;
    + odpowiednie gettery i settery
    public double getSuma2Bokow() {} //patrz poniżej
}

public class Kwadrat extends Figura {
    private double pole;
    private double obwod;
    private double suma2Bokow;
    + odpowiednie gettery i settery
}

w klasie liczącej jest:
    Figura fi;
    switch (jakaFigura) {
    case 0: fi = new Kwadrat(10);
    break;
    case 1: fi = new Kolo(10);
    break;
    default...
}
czyli fi może być Kolo lub Kwadrat
i teraz zagadnienie.
Jak wykonać getter GetSuma2Bokow, który ma zwrócić double w przypadku gdy fi jest Kolem?
NetBeans proponuje:

@Override
public double getSuma3Bokow() {
throw new UnsupportedOperationException("Not supported yet.");
}
ale ja nie chcę żadnych komunikatów.
Po prostu rezultatem wykonania tej metody ma być "null".
Z góry dziękuję za opinie.
Re: getter, który się wykonuje ale nic nie zwraca
#154147
Author: Arivald
Date: Wed, 15 Apr 2015 10:13
50 lines
2343 bytes
On 2015-04-15 10:42, Jadalbert wrote:
> Jest taka sytuacja:
> public abstract class Figura {
>      protected double pole;
>      protected double obwod;
>      + odpowiednie gettery i settery
>      public abstract double getSuma3Bokow();
> }
>
> public class Kolo extends Figura {
>      private double pole;
>      private double obwod;
>      + odpowiednie gettery i settery
>      public double getSuma2Bokow() {} //patrz poniżej
> }
>
> public class Kwadrat extends Figura {
>      private double pole;
>      private double obwod;
>      private double suma2Bokow;
>      + odpowiednie gettery i settery
> }
>
> w klasie liczącej jest:
>      Figura fi;
>      switch (jakaFigura) {
>      case 0: fi = new Kwadrat(10);
>      break;
>      case 1: fi = new Kolo(10);
>      break;
>      default...
> }
> czyli fi może być Kolo lub Kwadrat
> i teraz zagadnienie.
> Jak wykonać getter GetSuma2Bokow, który ma zwrócić double w przypadku gdy fi jest Kolem?
> NetBeans proponuje:
>
> @Override
> public double getSuma3Bokow() {
> throw new UnsupportedOperationException("Not supported yet.");
> }
> ale ja nie chcę żadnych komunikatów.
> Po prostu rezultatem wykonania tej metody ma być "null".
> Z góry dziękuję za opinie.
>

No to zwróć null. w czym problem?

-- 
Arivald
Re: getter, który się wykonuje ale nic nie zwraca
#154152
Author: Piotr Rezmer
Date: Wed, 15 Apr 2015 10:15
72 lines
2408 bytes
W dniu 2015-04-15 o 10:42, Jadalbert pisze:

> public abstract class Figura {
>      protected double pole;
>      protected double obwod;
>      public abstract double getSuma3Bokow();
> }
>
> public class Kolo extends Figura {
>      private double pole;
>      private double obwod;
>      public double getSuma2Bokow() {} //patrz poniżej
> }
>
> public class Kwadrat extends Figura {
>      private double pole;
>      private double obwod;
>      private double suma2Bokow;
>      + odpowiednie gettery i settery
> }

Czy możesz wyjaśnić w jakim celu deklarujesz pole i obwód w klasie 
Figura? Czy po to aby cacheować wyliczone wartości?
Zupełnie nie rozumiem też celu deklarowania pole, obwód w klasach Koło i 
Kwadrat. Ja zrobiłbym to prościej:

public abstract class Figura{
	public abstract double GetObwod();
	public abstract double GetPole();
}

public class Kolo extends Figura {
	
	private double radius;
	
	public Figura( double radius ) {
		this.radius = radius
	}

	public double GetObwod() {
		return 2 * Pi * radius;

	}
	public double GetPole() {
		return Pi * radius * radius;
	}

}

public class Kwadrat extends Figura {
	
	private double bok;
	
	public Figura( double bok) {
		this.bok = bok;
	}

	public double GetObwod() {
		return 4 * bok;

	}
	public double GetPole() {
		return bok * bok;
	}

}


-- 
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Re: getter, który się wykonuje ale nic nie zwraca
#154153
Author: Jadalbert
Date: Wed, 15 Apr 2015 10:32
1 lines
1392 bytes
Bo to ma grać z JSF.
Re: getter, który się wykonuje ale nic nie zwraca
#154148
Author: Jadalbert
Date: Wed, 15 Apr 2015 10:37
53 lines
3101 bytes
W dniu środa, 15 kwietnia 2015 12:13:17 UTC+2 użytkownik Arivald napisał:
> On 2015-04-15 10:42, Jadalbert wrote:
> > Jest taka sytuacja:
> > public abstract class Figura {
> >      protected double pole;
> >      protected double obwod;
> >      + odpowiednie gettery i settery
> >      public abstract double getSuma3Bokow();
> > }
> >
> > public class Kolo extends Figura {
> >      private double pole;
> >      private double obwod;
> >      + odpowiednie gettery i settery
> >      public double getSuma2Bokow() {} //patrz poniżej
> > }
> >
> > public class Kwadrat extends Figura {
> >      private double pole;
> >      private double obwod;
> >      private double suma2Bokow;
> >      + odpowiednie gettery i settery
> > }
> >
> > w klasie liczącej jest:
> >      Figura fi;
> >      switch (jakaFigura) {
> >      case 0: fi = new Kwadrat(10);
> >      break;
> >      case 1: fi = new Kolo(10);
> >      break;
> >      default...
> > }
> > czyli fi może być Kolo lub Kwadrat
> > i teraz zagadnienie.
> > Jak wykonać getter GetSuma2Bokow, który ma zwrócić double w przypadku gdy fi jest Kolem?
> > NetBeans proponuje:
> >
> > @Override
> > public double getSuma3Bokow() {
> > throw new UnsupportedOperationException("Not supported yet.");
> > }
> > ale ja nie chcę żadnych komunikatów.
> > Po prostu rezultatem wykonania tej metody ma być "null".
> > Z góry dziękuję za opinie.
> >
> 
> No to zwróć null. w czym problem?
> 
> -- 
> Arivald

Ma być double, więc się kompilatore rzuca: incompatible types: <null> cannot be converted to double. :(
Re: getter, który się wykonuje ale nic nie zwraca
#154154
Author: Piotr Rezmer
Date: Wed, 15 Apr 2015 10:56
12 lines
1313 bytes
W dniu 2015-04-15 o 12:32, Jadalbert pisze:
> Bo to ma grać z JSF.

Myślę, że coś jest nie tak jeśli konkretny framework narzuca Ci 
wymagania na model.
Co dokładnie w JSF zmusza do tworzenia takiej konstrukcji?


-- 
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Re: getter, który się wykonuje ale nic nie zwraca
#154155
Author: Jadalbert
Date: Wed, 15 Apr 2015 11:06
15 lines
2148 bytes
W dniu środa, 15 kwietnia 2015 12:56:43 UTC+2 użytkownik Piotr Rezmer napisał:
> W dniu 2015-04-15 o 12:32, Jadalbert pisze:
> > Bo to ma grać z JSF.
> 
> Myślę, że coś jest nie tak jeśli konkretny framework narzuca Ci 
> wymagania na model.
> Co dokładnie w JSF zmusza do tworzenia takiej konstrukcji?
> 
> 
> -- 
> pozdrawiam
> Piotr
> XLR250&bmw_f650_dakar

Z tego co wiem, a się dopiero uczę, to (jeśli masz na myśli pola get... i set..) taka konstrukcja jest wymogiem współpracy kontrolek z polami. Oczywiście nie jest konieczne "manie" i gettera i settera. Czyli kontrolka ma np. value="#{nazwaBeana.pole}"
Re: getter, który się wykonuje ale nic nie zwraca
#154156
Author: Piotr Rezmer
Date: Wed, 15 Apr 2015 11:17
22 lines
2094 bytes
W dniu 2015-04-15 o 13:06, Jadalbert pisze:

> Z tego co wiem, a się dopiero uczę, to (jeśli masz na myśli pola get... i set..) taka konstrukcja jest wymogiem współpracy kontrolek z polami. Oczywiście nie jest konieczne "manie" i gettera i settera. Czyli kontrolka ma np. value="#{nazwaBeana.pole}"

Do wyświetlania wystarczą tylko gettery. W zależności od założeń, np:

A) zakładamy że parametry figury nie ulegają zmianie w trakcie życie 
obiektu, przekazujesz je w konstruktorze. Wyliczenie pola i obwodu 
robisz wewnątrz konstruktora.
B) zakładamy możliwość zmiany parametrów figury. Wtedy musisz 
zadeklarować settery. Wyliczanie pola i obwodu możesz wymusić wewnątrz 
settera.

Dodatkowo można też opóźnić wyliczenie pola i obwodu jeśli są to 
operacje czasochłonne. Wtedy wykonasz je przy pierwszym wywołaniu 
gettera GetObwód() lub GetPole().


-- 
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Re: getter, który się wykonuje ale nic nie zwraca
#154157
Author: Jadalbert
Date: Wed, 15 Apr 2015 11:28
25 lines
2710 bytes
W dniu środa, 15 kwietnia 2015 13:16:57 UTC+2 użytkownik Piotr Rezmer napisał:
> W dniu 2015-04-15 o 13:06, Jadalbert pisze:
> 
> > Z tego co wiem, a się dopiero uczę, to (jeśli masz na myśli pola get... i set..) taka konstrukcja jest wymogiem współpracy kontrolek z polami. Oczywiście nie jest konieczne "manie" i gettera i settera. Czyli kontrolka ma np. value="#{nazwaBeana.pole}"
> 
> Do wyświetlania wystarczą tylko gettery. W zależności od założeń, np:
> 
> A) zakładamy że parametry figury nie ulegają zmianie w trakcie życie 
> obiektu, przekazujesz je w konstruktorze. Wyliczenie pola i obwodu 
> robisz wewnątrz konstruktora.
> B) zakładamy możliwość zmiany parametrów figury. Wtedy musisz 
> zadeklarować settery. Wyliczanie pola i obwodu możesz wymusić wewnątrz 
> settera.
> 
> Dodatkowo można też opóźnić wyliczenie pola i obwodu jeśli są to 
> operacje czasochłonne. Wtedy wykonasz je przy pierwszym wywołaniu 
> gettera GetObwód() lub GetPole().
> 
> 
> -- 
> pozdrawiam
> Piotr
> XLR250&bmw_f650_dakar

Dobra, spróbuję, dzięki, dam znać co wyszło.
Re: getter, który się wykonuje ale nic nie zwraca
#154149
Author: Arivald
Date: Wed, 15 Apr 2015 11:58
31 lines
1954 bytes
On 2015-04-15 12:37, Jadalbert wrote:
> W dniu środa, 15 kwietnia 2015 12:13:17 UTC+2 użytkownik Arivald napisał:
>> On 2015-04-15 10:42, Jadalbert wrote:
>>> @Override
>>> public double getSuma3Bokow() {
>>> throw new UnsupportedOperationException("Not supported yet.");
>>> }
>>> ale ja nie chcę żadnych komunikatów.
>>> Po prostu rezultatem wykonania tej metody ma być "null".
>>> Z góry dziękuję za opinie.
>>>
>>
>> No to zwróć null. w czym problem?
>>
>> --
>> Arivald
>
> Ma być double, więc się kompilatore rzuca: incompatible types: <null> cannot be converted to double. :(
>

No to nie okłamuj nas w pytaniu, pisałeś:
 >>> Po prostu rezultatem wykonania tej metody ma być "null".

Skoro nie możesz nulla, to nie możesz.

Co możesz?
Na przykład zwrócić NaN.
Albo zmień rezultat na Double.

-- 
Arivald
Re: getter, który się wykonuje ale nic nie zwraca
#154150
Author: Jadalbert
Date: Wed, 15 Apr 2015 12:20
43 lines
2883 bytes
W dniu środa, 15 kwietnia 2015 13:58:16 UTC+2 użytkownik Arivald napisał:
> On 2015-04-15 12:37, Jadalbert wrote:
> > W dniu środa, 15 kwietnia 2015 12:13:17 UTC+2 użytkownik Arivald napisał:
> >> On 2015-04-15 10:42, Jadalbert wrote:
> >>> @Override
> >>> public double getSuma3Bokow() {
> >>> throw new UnsupportedOperationException("Not supported yet.");
> >>> }
> >>> ale ja nie chcę żadnych komunikatów.
> >>> Po prostu rezultatem wykonania tej metody ma być "null".
> >>> Z góry dziękuję za opinie.
> >>>
> >>
> >> No to zwróć null. w czym problem?
> >>
> >> --
> >> Arivald
> >
> > Ma być double, więc się kompilatore rzuca: incompatible types: <null> cannot be converted to double. :(
> >
> 
> No to nie okłamuj nas w pytaniu, pisałeś:
>  >>> Po prostu rezultatem wykonania tej metody ma być "null".
> 
> Skoro nie możesz nulla, to nie możesz.
> 
> Co możesz?
> Na przykład zwrócić NaN.
> Albo zmień rezultat na Double.
> 
> -- 
> Arivald

null dałem w cudzysłów, mając na myśli, że nic nie powinno być rezultatem, czyli coś na kształt null

na razie radzę sobie tak, że przed wywołaniem metody sprawdzam typ obiektu przez instanceof i albo wywołuję daną metodę (tu przez rzutowanie), albo jej nie wywołuję.
Ale to rozwiązanie mi się nie podoba.

w delphi jest coś takiego:
function X: Extended;
begin
  raise ENonCalculatedException.Create('nie jest liczone', []);
end;
Re: getter, który się wykonuje ale nic nie zwraca
#154151
Author: keiichi
Date: Wed, 15 Apr 2015 15:05
34 lines
2561 bytes
W dniu 2015-04-15 o 14:20, Jadalbert pisze:> W dniu środa, 15 kwietnia 
2015 13:58:16 UTC+2 użytkownik Arivald napisał:
 >>>>> @Override
 >>>>> public double getSuma3Bokow() {
 >>>>> throw new UnsupportedOperationException("Not supported yet.");
 >>>>> }
 >>>>> ale ja nie chcę żadnych komunikatów.
 >>>>> Po prostu rezultatem wykonania tej metody ma być "null".
 > null dałem w cudzysłów, mając na myśli, że nic nie powinno być 
rezultatem, czyli coś na kształt null
 >
 > na razie radzę sobie tak, że przed wywołaniem metody sprawdzam typ 
obiektu przez instanceof i albo wywołuję daną metodę (tu przez 
rzutowanie), albo jej nie wywołuję.
 > Ale to rozwiązanie mi się nie podoba.
 >
 > w delphi jest coś takiego:
 > function X: Extended;
 > begin
 >    raise ENonCalculatedException.Create('nie jest liczone', []);
 > end;
 >

Przecież napisałeś, że wyjątek w Javie Ci się nie podoba. A w Delphi ci 
się podoba?
Najbliższa przykładowi z Delphi jest propozycja z NetBeans. Sens 
identyczny, tylko nazwa wyjątku nieco inna, ale o prawie identycznym 
znaczeniu. A tekst sobie zmień na jaki chcesz, albo w ogóle usuń.

Pozdrawiam

---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast.
http://www.avast.com
Re: getter, który się wykonuje ale nic nie zwraca
#154158
Author: A.L.
Date: Fri, 17 Apr 2015 01:09
51 lines
2319 bytes
On Wed, 15 Apr 2015 01:42:00 -0700 (PDT), Jadalbert
<jadalbert.wincent@gmail.com> wrote:

>Jest taka sytuacja:
>public abstract class Figura {
>    protected double pole;
>    protected double obwod;
>    + odpowiednie gettery i settery
>    public abstract double getSuma3Bokow();
>}
>
>public class Kolo extends Figura {
>    private double pole;
>    private double obwod;
>    + odpowiednie gettery i settery
>    public double getSuma2Bokow() {} //patrz poniżej
>}
>
>public class Kwadrat extends Figura {
>    private double pole;
>    private double obwod;
>    private double suma2Bokow;
>    + odpowiednie gettery i settery
>}
>
>w klasie liczącej jest:
>    Figura fi;
>    switch (jakaFigura) {
>    case 0: fi = new Kwadrat(10);
>    break;
>    case 1: fi = new Kolo(10);
>    break;
>    default...
>}
>czyli fi może być Kolo lub Kwadrat
>i teraz zagadnienie.
>Jak wykonać getter GetSuma2Bokow, który ma zwrócić double w przypadku gdy fi jest Kolem?
>NetBeans proponuje:
>
>@Override
>public double getSuma3Bokow() {
>throw new UnsupportedOperationException("Not supported yet.");
>}
>ale ja nie chcę żadnych komunikatów.
>Po prostu rezultatem wykonania tej metody ma być "null".
>Z góry dziękuję za opinie.

Gdybys byl moim syudentem, za taki kod silnym kopem wylecialbys za
drzwi.

A.L.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads