Programowanie obiektoweLaboratorium 10 - klasy abstrakcyjne i interfejsy
mgr inż. Krzysztof Szwarc
Sosnowiec, 17 maja 2017
1 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Czym jest polimorfizm?
Definicja
Polimorfizm (z gr. wielopostaciowość) jest mechanizmempozwalającym na wyabstrahowanie wyrażeń od konkretnychtypów - obiekt może przyjąć jedną z wielu przeznaczonych dlaniego postaci, cechujących się odmiennym zachowaniem. Jeston jednym z czterech, najważniejszych założeń paradygmatuobiektowego (abstrakcja, hermetyzacja, polimorfizm orazdziedziczenie).
2 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Praktyczne zastosowanie polimorfizmu
Employee [ ] employees = {new Employee ( ) , newDisab l edEmployee ( ) , new Sel fEmployment ( ) } ;
f o r ( Employee employee : employees )System . out . p r i n t l n ( employee . c a l c u l a t eTa x ( ) ) ;
3 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Czym jest klasa abstrakcyjna?
Definicja
Klasa abstrakcyjna (ang. abstract class) jest klasą, którejobiektów nie da się utworzyć - jest wyłącznie uogólnienieminnych klas.
Język Sposób utworzeniaC ++ Ma min. 1 metodę czysto wirtualną
C#/Java/PHP Za pomocą słowa kluczowego abstract
Język Sposób użyciaC ++/C# klasaPochodna : klasaBazowaJava/PHP Za pomocą słowa kluczowego extends
4 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Przykład klas abstrakcyjnych
5 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Czym jest interfejs?
Definicja
Interfejs (ang. interface) jest abstrakcyjnym typemniezawierającym pól, które mogą zmieniać wartość i zwykle nieposiadającym implementacji zadeklarowanych metod (np. odJavy 8 możliwe jest użycie metod domyślnych - słowokluczowe default). Gdy klasa definiuje wszystkie metodyinterfejsu oznacza to, że go implementuje.
Język Sposób użyciaC ++ Ma tylko metody czysto wirtualne
C#/Java/PHP Za pomocą słowa kluczowego interface
Język Sposób utworzeniaC ++/C# klasaPochodna : klasaBazowaJava/PHP Za pomocą słowa kluczowego implements
6 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Przykład interfejsów
7 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Główne różnice
1 W interfejsach wszystkie metody są abstrakcyjne (wyjątekstanowi nowy mechanizm znajdujący sie w Javie 8,jednakże nie powinien on być nadużywany), a w klasieabstrakcyjnej można stworzyć także metody posiadająceciało.
2 Klasa abstrakcyjna - w przeciwieństwie do interfejsu -powinna być związana z klasami dziedziczącymi w sensielogicznym.
3 W wielu językach wielodziedziczenie nie jest możliwe (zomawianych - C#, Java, PHP ), lecz istnieje możliwośćimplementowania wielu interfejsów.
4 Wszystkie zadeklarowane metody w interfejsie muszą byćpubliczne.
5 Interfejsy nie mogą zawierać innych atrybutów, niż stałe.
8 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Zadanie
Napisz dwie klasy, zgodnie z przedstawionym diagramem.Dla metody „calculateTax” skorzystaj z wysokościpodatku równej 8% dla artykułów spożywczych i 23% dlaalkoholu.
9 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Zadanie
Stwórz trzy produkty spożywcze i dwa alkoholowe. Obliczsumaryczną wysokość zapłaconego podatku.
10 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Zadanie
Zaimplementuj interfejs zgodnie z przedstawionymdiagramem i ponownie oblicz sumaryczną wysokośćzapłaconego podatku. Czy moglibyśmy użyc klasyabstrakcyjnej zamiast niego?
11 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Zadanie
Zaimplementuj klasy zgodnie z diagramem (Employee jestklasą abstrakcyjną). Czy możemy zastąpić klasę Employeeinterfejsem?
12 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Dziękuję za uwagę
13 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Top Related