Egzamin zawodowyPortal części pisemnej

INF.04 · pytanie 702

W przedstawionym kodzie zdefiniowano abstrakcyjną klasę Figura oraz dziedziczącą po niej klasę Prostokat z zadanymi polami i konstruktorami. Wskaż najprostszą implementację sekcji /* metody klasy */ dla klasy Prostokat. abstract class Figura { abstract double Pole(); abstract double Obwod(); } public class Prostokat extends Figura { private double a; private double b; ... /* konstruktory */ ... /* metody klasy */ } Kod 1 public double Pole() { return a * b; } public double Obwod() { return 2 * a + 2 * b; } Kod 2 public double Pole() { return a * b; } Kod 3 public double LiczPole() { return a * b; } public double LiczObwod() { return 2 * a + 2 * b; } Kod 4 abstract double Pole() { return a * b; } abstract double Obwod();

  1. AKod 1Poprawna
  2. BKod 2
  3. CKod 3
  4. DKod 4

Wyjaśnienie

Kod 1 jest prawidłowy ponieważ zapewnia implementację abstrakcyjnych metod Pole i Obwod z klasy Figura co jest wymagane dla każdej klasy dziedziczącej po klasie abstrakcyjnej W Javie kiedy klasa dziedziczy po klasie abstrakcyjnej musi zaimplementować wszystkie jej abstrakcyjne metody Kod 1 definiuje metodę Pole która oblicza pole prostokąta jako iloczyn długości boków a i b oraz metodę Obwod która oblicza obwód jako sumę dwóch razy długości a i dwóch razy długości b Jest to zgodne z konwencjami programowania obiektowego które promują enkapsulację i polimorfizm Kod odnosi się bezpośrednio do konkretnego zastosowania jakim jest obliczanie parametrów prostokąta co jest częstym przypadkiem w programowaniu graficznym oraz w aplikacjach matematycznych Implementacja metod w ten sposób zapewnia prostotę oraz czytelność kodu co jest zgodne z dobrymi praktykami w inżynierii oprogramowania Ponadto dzięki poprawnej implementacji można z powodzeniem rozszerzać funkcjonalność obiektową programu umożliwiając jego łatwiejsze modyfikowanie i rozwijanie w przyszłości