Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje...

13
Programowanie obiektowe Laboratorium 10 - klasy abstrakcyjne i interfejsy mgr inż. Krzysztof Szwarc [email protected] Sosnowiec, 17 maja 2017 1 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Transcript of Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje...

Page 1: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

Programowanie obiektoweLaboratorium 10 - klasy abstrakcyjne i interfejsy

mgr inż. Krzysztof Szwarc

[email protected]

Sosnowiec, 17 maja 2017

1 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Page 2: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

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

Page 3: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

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

Page 4: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

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

Page 5: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

Przykład klas abstrakcyjnych

5 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Page 6: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

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

Page 7: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

Przykład interfejsów

7 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Page 8: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

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

Page 9: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

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

Page 10: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

Zadanie

Stwórz trzy produkty spożywcze i dwa alkoholowe. Obliczsumaryczną wysokość zapłaconego podatku.

10 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Page 11: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

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

Page 12: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

Zadanie

Zaimplementuj klasy zgodnie z diagramem (Employee jestklasą abstrakcyjną). Czy możemy zastąpić klasę Employeeinterfejsem?

12 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Page 13: Programowanie obiektowe - Laboratorium 10 - klasy ...omawianych - C#, Java, PHP), lecz istnieje możliwość implementowania wielu interfejsów. 4 Wszystkie zadeklarowane metody w

Dziękuję za uwagę

13 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe