Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Środa, 18 Lipiec 2018
Zarejestrowanych użytkowników: 4
Dostępnych pytań testowych: 102
HOME
Strona tytułowa pracy dyplomowej
NAUKA
Materiały dydaktyczne związane z OOP
TESTY
Sprawdzenie poziomu zdobytej wiedzy
ZASOBY
Literatura i zasoby sieciowe o OOP
ŹRÓDŁA
Zbiór projektów dydaktycznych z OOP
KONTO
Możliwość śledzenia własnych postępów
INFO



Klasy abstrakcyjne

Bardzo często złożone hierarchie klas są projektowane tak, że klasy bazowe udostępniają tylko pewien określony interfejs jednocześnie nie implementując go. Dopóki klasa pochodna nie dostarczy stosownej implementacji klient nie będzie mógł tworzyć jej egzemplarzy. Jednocześnie klasa bazowa nigdy nie będzie pozwalać na tworzenie jej obiektów, aczkolwiek do wskaźnika na taką klasę bazową można bez problemu przypisywać utworzony obiekt klasy pochodnej.

Sytuacja, w której klasa bazowa nie implementuje metod, spotykana jest bardzo często. Projektowane w paradygmacie obiektowym systemy muszą bowiem wyodrębniać abstrakcje, dla których zwykle nie można przypisać domyślnej implementacji metod. Jednocześnie jednak abstrakcje stanowią na tyle ogólne byty, że dzięki nim obiekty posiadające określony interfejs mogą być wywoływane z innych klas, dzięki czemu elastyczność i funkcjonalność pełnych systemów wrasta.

Jeżeli klasa posiadająca metody wirtualne nie definiuje co najmniej jednej z nich jest nazwana klasą abstrakcyjną, a niezdefiniowana metoda - czysto wirtualną. Ponadto jeśli określona klasa nie definiuje żadnej z metod wirtualnych, jest nazywana interfejsem. O ile język C++ nie pozwalają na rozróżnienie (poprzez semantykę języka) klas na abstrakcyjne i interfejsy, to są takie języki, które dla obu typów oferują różnych zestaw słów kluczowych, różne zastosowanie i nazewnictwo (np. Java).

Jeżeli klasa, która dziedziczy po klasie abstrakcyjnej lub interfejsie zaimplementuje wszystkie metody wówczas można tworzyć jej egzemplarze i taka klasa jest nazywana klasą konkretną.

Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11