Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Podobne dokumenty
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie obiektowe

Dziedziczenie. dr Jarosław Skaruz

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Technologie i usługi internetowe cz. 2

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Klasy abstrakcyjne, interfejsy i polimorfizm

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Klasy abstrakcyjne i interfejsy

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Podstawy Języka Java

Dokumentacja do API Javy.

TEMAT : KLASY DZIEDZICZENIE

Dziedziczenie. Tomasz Borzyszkowski

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie obiektowe

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Java Język programowania

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Polimorfizm. dr Jarosław Skaruz

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Aplikacje w środowisku Java

JAVA W SUPER EXPRESOWEJ PIGUŁCE

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Wykład 8: klasy cz. 4

Aplikacje w środowisku Java

Programowanie obiektowe

Dziedziczenie. Ogólna postać dziedziczenia klas:

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Materiały do zajęć VII

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Programowanie obiektowe w języku

Programowanie obiektowe - 1.

Programowanie obiektowe

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

Wykład 7: Pakiety i Interfejsy

Kompozycja i dziedziczenie klas

Kurs WWW. Paweł Rajba.

PARADYGMATY PROGRAMOWANIA Wykład 4

PHP 5 język obiektowy

Dziedziczenie jednobazowe, poliformizm

Definiowanie własnych klas

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Wykład 5 Okna MDI i SDI, dziedziczenie

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Wykład 6: Dziedziczenie

Mechanizm dziedziczenia

Wykład 5: Klasy cz. 3

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Programowanie obiektowe i zdarzeniowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Język programowania. Andrzej Bobyk

Podstawy Programowania Obiektowego

Języki i metody programowania Java. Wykład 2 (część 2)

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

OBIEKTY PHP. G. Panuś

Do czego służą klasy?

Języki programowania imperatywnego

Projektowanie obiektowe. Roman Simiński Polimorfizm

Programowanie w Internecie. Java

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe

Zaawansowane programowanie w języku C++ Klasy w C++

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Podstawy programowania III

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 9: Polimorfizm i klasy wirtualne

Laboratorium 1 - Programowanie proceduralne i obiektowe

.NET Klasy, obiekty. ciąg dalszy

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Mechanizm dziedziczenia

Rozdział 4 KLASY, OBIEKTY, METODY

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Przypomnienie o klasach i obiektach

Programowanie obiektowe

Wykład 4: Klasy i Metody

Multimedia JAVA. Historia

Programowanie w Javie - wykład 3

Interfejsy i klasy wewnętrzne

Programowanie, część I

Java: interfejsy i klasy wewnętrzne

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Transkrypt:

Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017

Dziedziczenie klas Dziedziczenie ustanowienie związku pomiędzy klasą bazową a klasą pochodną Celem dziedziczenia jest naśladowanie przez klasę pochodną wybranych cech klasy bazowej (pól oraz metod) Klasa pochodna (subclass) Samochód extends Klasa bazowa (superclass) Pojazd

Idea dziedziczenia Klasa pochodna korzysta z pól oraz metod klasy bazowej oraz może definiować własne Kolor Waga Jedź() Przyspiesz() Zwolnij() Kolor Waga LiczbaDrzwi PojemnośćDilnika TabliceRejestracyjne Jedź() Przyspiesz() Zwolnij() Parkuj() Złomuj() Pojazd Samochód

Modyfikatory dostępu do elementów składowych klasy Klasa może ograniczać dostęp do swoich pól/metod dla obiektów zewnętrznych Klasa zawsze ma dostęp do własnych pól/metod Klasa wewnętrzna ma dostęp do pól/metod klasy zewnętrznej w której została zadeklarowana W pozostałych przypadkach stosowane są tzw. modyfikatory dostępu

Modyfikatory dostępu do pół/metod klasy (c.d.) Modyfikator private protected public Element jest dostępny. tylko wewnątrz klasy wewnątrz klasy oraz klas pochodnych (dziedziczenie) dla wszystkich

Domyślny dostęp do elementów klasy Jeśli przez nazwą pola lub metody klasy nie użyto modyfikatora dostępu w jawnej postaci { private, protected, public }, zakłada się iż element jest dostępny dla wszystkich klas/metod w danym pakiecie

Dostęp do pól/metod klasy pole public, protected private metoda metoda Klasa A pole extends metoda public protected, private pole metoda Klasa B Klasa C

Przykłady deklarowania dostępu do elementów klasy class Samochód { private int przebieg; protected String kolor; public double liczbapasażerów; } public jedź(int odległość) { przebieg += odległość }

Klasą bazową może być klasa zdefiniowana przez użytkownika w kodzie źródłowym programu klasa z bibliotek Java występująca w systemie w postaci skompilowanej oraz dowolna inna klasa nie zadeklarowana jako final (p. dalej) Przykład: z klasy Integer nie można dziedziczyć własnej klasy

Hierarchia klas Klasa pochodna może być klasą bazową dla kolejnej klasy w ten sposób powstaje drzewo klas mających jednego wspólnego przodka Pojazd Samochód Samolot Pociąg Osobowy Dostawczy

Dziedziczenie konstruktorów Konstruktory są dziedziczone automatycznie Jeśli klasa bazowa nie posiada konstruktora bez parametrów, w konstruktorze klasy pochodnej należy wywołać go w jawnej postaci z użyciem słowa kluczowego super super jest wskaźnikiem na obiekt klasy nadrzędnej (przodka)

Przykład dziedziczenia konstruktora

Nadpisanie metody Klasa pochodna może zawierać własną definicję metody już istniejącej w klasie bazowej Zaleca się oznakowanie metody nadpisanej atrybutem @Override W kodzie metody nadpisanej można wywołać metodę klasy bazowej za pomocą super

Przykład nadpisania metody Nadpisanie metod stosuje się w celu zmiany zachowania obiektów w klasach pochodnych

Zmiana modyfikatorów dostępu przy dziedziczeniu Klasa pochodna nie może zmniejszyć uprawnień dostępu do jej elementów dziedziczonych z klasy bazowej Dozwolone jest podniesienie uprawnień protected => public Jest to sprzeczne z klasycznymi zasadami programowania obiektowego, gdyż pozwala na uzyskanie dostępu do chronionych elementów klasy // przyp. A.C.

Generalizacja typów danych Generalizacja (uogólnianie) posługiwanie się obiektem klasy pochodnej za pomocą typu klasy bazowej (bardziej ogólnej) class Lokomotywa extends Pojazd class Pojazd class Samochod extends Pojazd

Metody abstrakcyjne W klasie bazowej można zadeklarować metodę wspólną dla wszystkich klas pochodnych Realizacja tej metody w ogólnej postaci może być trudna lub niemożliwa Metoda abstrakcyjna - metoda, treść której zostanie zrealizowana w klasach pochodnych

Klasa abstrakcyjna Klasa zawierająca przynajmniej jedną metodę abstrakcyjną, nazywa się klasą abstrakcyjną Egzemplarza (obiektu) klasy abstrakcyjnej nie można stworzyć!

Realizacja metody abstrakcyjnej w klasach pochodnych Klasa dziedzicząca z klasy abstrakcyjnej, powinna realizować wszystkie metody abstrakcyjne klasy bazowej Jeśli klasa nie realizuje przynajmniej jednej metody abstrakcyjnej, staje się również klasą abstrakcyjną!

Słowo kluczowe final Zastosowane do metody lub pola klasy: Oznacza że nie mogą być one modyfikowane w klasach pochodnych (wykluczenie możliwości nadpisania funkcji) Zastosowane do całej klasy: nie można z tej klasy dziedziczyć

Wskaźnik na obiekt bieżący this W jednym segmencie kodu mogą wystąpić dwie zmienne o identycznej nazwie ale różnym zasięgu W celu jawnego wskazania na pole klasy należy wówczas użyć this class Samochód() { int przebieg; Samochód(int przebieg) { this.przebieg = przebieg; }

Statyczne pola klasy Pole klasy domyślnie przechowuje indywidualną wartość dla każdego egzemplarza (obiektu) klasy Jeśli pole ma być wspólnych dla wszystkich obiektów, należy zadeklarować go jako statyczne

Wykorzystanie statycznego pola na zewnątrz klasy Adresacja statycznego pola klasy następuje poprzez nazwę klasy (nie nazwę obiektu!)

Statyczne metody Metoda wspólna dla wszystkich obiektów klasy nazywa się statyczną metodą Statyczna metoda należy do klasy, nie do obiektu Statyczna metoda nie może korzystać z pól oraz metod klasy innych niż statyczne (nie zmienia stanu obiektu!)

Klasy wewnętrzne Klasa w Javie może być zadeklarowana wewnątrz innej klasy Klasa wewnętrzna ma dostęp do pól i metod klasy zewnętrznej

Podsumowanie Cel dziedziczenia: zwiększenie wydajności pracy programisty oraz zbudowanie programu stabilnego, skalowalnego oraz łatwego do opanowania poprzez Rozszerzenie funkcjonalności klasy bazowej Eliminację powtarzającego się kodu w klasach pochodnych Zachowanie wspólnych cech obiektów Metody nadpisane pozwalają na realizację odmiennego zachowania klas w hierarchii Klasy abstrakcyjne realizują fundament hierarchii