Java Akcesory

M2
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:31
0

Witam,

napisałem abstrakcyjną klasę Figura po której dziedziczą Koło, Kwadrat i Trójkąt. Wygląda ona następująco:

Kopiuj
public abstract class Figura {
    
    
  private  double area;
  private  double perimeter;
  
  public Figura() {};
  
abstract void  calculateArea();
abstract void  calculatePerimeter();
  

  
 public  double GetArea(){ return area;};
 public  void SetArea(){};
  
 public  double GetPerimeter(){return perimeter;};
 public  void SetPerimeter(){};
}

Moje pytanie brzmi: Czy definicję Set i Get powinny znaleźć się w klasie abstrakcyjnej czy klasach dziedziczących?

Pipes
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 3 lata
  • Postów:459
0

Zasadniczo nic nie stoi na przeszkodzie, aby ich tam nie było. Klasa abstrakcyjna powinna zawierać elementy, które chcesz potem odziedziczyć. W Twoim wypadku zaoszczędzisz kilka linijek kodu w każdej z klas potomnych, a to jest zawsze na plus.

szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:11 dni
  • Lokalizacja:Kraków
  • Postów:1694
0

Zależy kiedy - w Twoim przypadku proponuję klasę abstrakcyjną / interfejs. Napisałem interfejs bo myślę, że powinieneś rozważ też jego użycie - wydaje się to lepszym pomysłem.
Tutaj masz porównanie interfejsu z klasą abstrakcyjną: http://stackoverflow.com/questions/1913098/what-is-the-difference-between-an-interface-and-abstract-class
A tutaj podobne pytanie do Twojego: http://codereview.stackexchange.com/questions/83769/implement-a-shape-abstract-class

M2
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:31
0

Dziękuję za odpowiedź. A czy poszczególne klasy Koło, Kwadrat itp. powinny zostać dołączone do maina za pomocą słówka

Kopiuj
package

?

Pipes
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 3 lata
  • Postów:459
1

Nie wiem jaki main Ci chodzi. Zasadniczo jeśli nie zdefiniujesz pakietu to wszystkie Twoje klasy są w pakiecie domyślnym i musisz zaimportować wtedy tylko te, które są z innych pakietów. Jeśli np. Figura jest w pakiecie com.classes.abstract, a klasy konkretne to musisz zaimportować w każdej z klas potomnych Figurę poprzez

Kopiuj
import com.classes.abstract.Figura;

, zaś jeśli masz gdziekolwiek indziej jakąś klasę z metodą main, to musisz zaimportować do niej te klasy, które Cię interesują.

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0
  1. Jest prawie nieprawdopodobne żebyś w którejkolwiek klasie potomnej potrzebował settera, jest zupełnie nieprawdopodobne żebyś potrzebował settera bezargumentowego.
  2. Przestrzegaj konwencji nazewniczych Javy:
Kopiuj
 public  double getArea(){ return area;}; 
 public  double getPerimeter(){return perimeter;};

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.