Zakładając, że przedstawiona hierarchia klas reprezentuje figury geometryczne została prawidłowo zaimplementowana funkcjonalnie, a każda z możliwych figur zawiera metodę liczenia pola, to sposób deklaracji metody liczPole() wskazuje, że znajduje się ona w klasie
Zakładając, że przedstawiona hierarchia klas reprezentuje figury geometryczne została prawidłowo zaimplementowana funkcjonalnie, a każda z możliwych figur zawiera metodę liczenia pola, to sposób deklaracji metody liczPole() wskazuje, że znajduje się ona w klasie
Wyjaśnienie i uzasadnienie dydaktyczne
Poprawna odpowiedź: A
Uzasadnienie i szersze wyjaśnienie:
Przedstawiona deklaracja public abstract void liczPole(); opisuje metodę abstrakcyjną. Metody abstrakcyjne mają dwie kluczowe cechy:
- Nie posiadają implementacji (ciała) w klasie, w której są zdefiniowane.
- Klasa zawierająca metodę abstrakcyjną, sama musi być abstrakcyjna.
Celem metody abstrakcyjnej w klasie bazowej jest narzucenie kontraktu na wszystkie klasy pochodne. Oznacza to, że każda konkretna klasa dziedzicząca po klasie z taką metodą musi dostarczyć jej własną implementację.
W przedstawionej hierarchii, każda figura (trójkąt, kwadrat, trapez) powinna mieć możliwość obliczenia swojego pola, ale wzór na to pole jest dla każdej z nich inny. Dlatego najbardziej logicznym i poprawnym architektonicznie miejscem na zdefiniowanie wspólnego, ale abstrakcyjnego „szablonu” metody liczPole() jest najbardziej ogólna klasa bazowa, czyli Figura. Umieszczenie jej w tym miejscu gwarantuje, że każda klasa dziedzicząca, która reprezentuje konkretną figurę, będzie zmuszona do zaimplementowania logiki obliczania pola, co zapewnia spójność całego systemu.
Dlaczego pozostałe odpowiedzi są nieprawidłowe?
- Umieszczenie metody abstrakcyjnej w klasach
Trapez,CzworokątczyTrójkątbyłoby niepoprawne, ponieważ nie wymusiłoby jej implementacji w pozostałych gałęziach drzewa dziedziczenia. Na przykład, gdyby metoda była w klasieCzworokąt, klasaTrójkątnie musiałaby jej implementować.
Chcesz poćwiczyć całą kwalifikację INF.04?
Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.
Pojęcia z tego pytania
- Dziedziczenie (Inheritance w OOP)Mechanizm programowania obiektowego pozwalający klasie pochodnej (podrzędnej) na przejęcie pól i metod z klasy bazowej (nadrzędnej) oraz ich rozszerzenie lub modyfikację.
- Klasa abstrakcyjna (Abstract Class)Klasa bazowa, z której nie można bezpośrednio utworzyć obiektu, służąca jako wzorzec dla klas pochodnych i mogąca zawierać metody abstrakcyjne oraz zaimplementowane.
- Transakcje i Właściwości ACIDCechy gwarantujące niezawodne przetwarzanie operacji w bazach danych: Atomicity (Wszystko albo nic), Consistency (Spójność), Isolation (Izolacja) oraz Durability (Trwałość).
Podobne pytania z działu „Klasy obiekty i metody”
Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 38 pytań z tego działu.
- #87
Przedstawiony zapis w języku C# oznacza definicję klasy Car, która:
- #134
W przedstawionym kodzie zdefiniowano abstrakcyjną klasę figura i dziedziczącą po niej klasę prostokąta ze zdefiniowanymi polami i konstruktorami. Wskaż minimalną implementację sekcji /* metody klasy */ dla klasy Prostokat:
- #136
W języku C# szablon List implementuje funkcjonalność listy. Z inicjalizacji obiektu wykaz wynika, że jego elementami są:
- #150
W językach C++ lub C# słowo kluczowe virtual można stosować do
- #153
Zastosowanie modyfikatora abstract w definicji metody klasy oznacza, że