Enkapsulacja, dziedziczenie, polimorfizm

Podobne dokumenty
Materiały do zajęć VII

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

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

Programowanie obiektowe

Kurs WWW. Paweł Rajba.

Technologie i usługi internetowe cz. 2

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

Dziedziczenie. dr Jarosław Skaruz

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

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

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Polimorfizm. dr Jarosław Skaruz

TEMAT : KLASY DZIEDZICZENIE

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

Definiowanie własnych klas

Java Język programowania

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

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

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

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Wykład 7: Pakiety i Interfejsy

Dokumentacja do API Javy.

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

Wykład 8: klasy cz. 4

Programowanie obiektowe w języku

Programowanie obiektowe

Klasy i obiekty cz II

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Podstawy Języka Java

Programowanie obiektowe i zdarzeniowe

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

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie w Internecie. Java

KLASY, INTERFEJSY, ITP

Programowanie obiektowe - 1.

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

Programowanie obiektowe

Aplikacje w środowisku Java

Java: interfejsy i klasy wewnętrzne

Wstęp do programowania obiektowego. Wykład 2

.NET Klasy, obiekty. ciąg dalszy

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

Wykład 4: Klasy i Metody

Wykład 6: Dziedziczenie

Programowanie obiektowe

Podstawy Programowania Obiektowego

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

Programowanie 2. Język C++. Wykład 3.

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

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

Programowanie obiektowe

Programowanie obiektowe

Rozdział 4 KLASY, OBIEKTY, METODY

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

Programowanie obiektowe

Template method (metoda szablonowa)

Podstawy programowania III

Definiowanie własnych klas

PHP 5 język obiektowy

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

Dziedziczenie jednobazowe, poliformizm

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Dziedziczenie. Tomasz Borzyszkowski

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

Klasy abstrakcyjne, interfejsy i polimorfizm

OBIEKTY PHP. G. Panuś

Podstawa: Bruce Eckel, Thinking in Java, Second Ed., Prentice Hall, 1998 The JavaLanguage Environment, A white Paper, Sun, Oct.

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Języki programowania imperatywnego

1 Atrybuty i metody klasowe

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

Programowanie obiektowe

Wykład 5: Więcej o Klasach i Metodach

Aplikacje w środowisku Java

Zaawansowane programowanie w języku C++ Programowanie obiektowe


Kompozycja i dziedziczenie klas

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Język programowania. Andrzej Bobyk

Dziedziczenie. Ogólna postać dziedziczenia klas:

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Programowanie obiektowe

PARADYGMATY PROGRAMOWANIA Wykład 2

Wykład 2: Podstawy Języka

Programowanie obiektowe

Diagramy klas. dr Jarosław Skaruz

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Programowanie obiektowe

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

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Programowanie obiektowe

Technologie obiektowe

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Klasy cd. Struktury Interfejsy Wyjątki

Transkrypt:

17 grudnia 2008

Spis treści I Enkapsulacja 1 Enkapsulacja 2

Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja interfejsu 4 Które metody są wirtualne? Które metody nie są wirtualne? Metody czysto wirtualne (C++) == Metody abstrakcyjne (Java) Odwołanie do implementacji w klasie nadrzędnej 5

Spis treści Enkapsulacja 1 Enkapsulacja 2 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja interfejsu 4 Które metody są wirtualne? Które metody nie są wirtualne? Metody czysto wirtualne (C++) == Metody abstrakcyjne (Java) Odwołanie do implementacji w klasie nadrzędnej 5

Jeden z paradygmatów programowania obiektowego, Ukrywanie implementacji, Zapewnia bezpieczenstwo danych, Chroni klasę przed nieprawidłowym działaniem.

Słowo kluczowe class składowe: pola (zmienne) metody (komunikaty lub funkcje) konstruktor (wywołany przy tworzeniu) finalize (opcjonalne, wywoływane przy czyszczeniu po klasie)

Prosta definicja klasy składającej się z pól i metod: class ProstaKlasa { /*ciało klasy*/ int pole=0;//pole String s = new String( Zainicjalizowany );//pole int getfield()//metoda { /*ciało metody*/ return pole;} };

Słowo kluczowe static : class ProstaKlasa { /*ciało klasy*/ int pole=0;//pole String s = new String( Zainicjalizowany );//pole int getfield();//metoda { /*ciało metody*/ return pole;} int static zmiennastatyczna=99; static void plus1(){prostaklasa.zmiennastatyczna++;} };

Sposoby odwoływania się: do zmiennej statycznej: ProstaKlasa k=new ProstaKlasa(); k.zmiennastatyczna; ProstaKlasa.zmiennaStatyczna; do metody statycznej: k.plus1(); ProstaKlasa.plus1();

Specyfikatory dostępu: public (publiczny) private (prywatny) package acces (pakietowy) protected (chroniony) Używany przed każdym obiektem, do którego ma się odnosić.

Metody dostępowe get i set i dlaczego należy na nie uważać Dostęp do pól posiadają metody i one wykonują na nich operacje. Stąd nazwa: accesors/mutators lub get/set. Ważne jest kontrolowanie dostępu do zmiennych prywatnych. Aby nie umożliwić zwykłego dostępu publicznego.

Konwencja zapisu w wersji uproszczonej: nazwa powinna być zapisana jako jedno słowo, poszczególne słowa w nazwie zaczynają sie od wielkiej litery, pierwsza litera nazwy klasy powinna byc wielka, pierwsza litera nazwy metody powinna być mała, nazwy nie powinny być za długie, stosować estetyczne wcięcia.

Spis treści Enkapsulacja 1 Enkapsulacja 2 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja interfejsu 4 Które metody są wirtualne? Które metody nie są wirtualne? Metody czysto wirtualne (C++) == Metody abstrakcyjne (Java) Odwołanie do implementacji w klasie nadrzędnej 5

class A { int pole1=0; public int getpole(){return pole1;} } class B extends A { int pole2=1; public int getpole(){return pole2;} public int getpole2(){return super.getpole();} public int getpole3(){return pole1;} }

dziedziczenie po klasie Object, brak wielokrotnego dziedziczenia, wystepuje wielokrotne dziedziczenie interfejsów, zaleta większe bezpieczeństwo, wada mniejsza elastyczność.

Co się dziedziczy? Wszystko oprócz konstruktorów klasy nadrzędnej. Zachodzi dzięki temu rzutowanie w górę. Klasa dziedzisząca ma dostęp do wszystkich pól i metod z specyfikatorami dostępu public i protected. Jeżeli dodatkowo znajduje się w tym samy pakiecie co klasa nadrzędna, posiada pola i etody bez specyfikatora dostępu.

Traci się dostęp do zmiennych bez specyfikatora dostępu. Jeżeli klasa dziedziczy po klasie w innym pakiecie otrzymuje dostęp do składowych protected. Wszyscy mają dostęp do public.

Jak zablokować możliwość? Słowo kluczowe final: wykorzystanie dla metod unimozliwie przesłanianie klasa Object posiada kilka metod finalnych. wykorzystanie dla klas: uniemożliwienie dalszego dziedziczenia blokuje dostep do zmiennych protected

Spis treści Enkapsulacja 1 Enkapsulacja 2 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja interfejsu 4 Które metody są wirtualne? Które metody nie są wirtualne? Metody czysto wirtualne (C++) == Metody abstrakcyjne (Java) Odwołanie do implementacji w klasie nadrzędnej 5 Jak definuje się interfejs?

Jak definiuje się interfejs? Jak definuje się interfejs? [ w i d o c z n o s c ] i n t e r f a c e N a z w a I n t e r f e j s u [ extends i n n e i n t e r f e j s y ] { TypZwracany nazwametody ( [ argumenty ] ) ;... }

Spis treści Enkapsulacja 1 Enkapsulacja 2 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja interfejsu 4 Które metody są wirtualne? Które metody nie są wirtualne? Metody czysto wirtualne (C++) == Metody abstrakcyjne (Java) Odwołanie do implementacji w klasie nadrzędnej 5

Spis treści Enkapsulacja 1 Enkapsulacja 2 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja interfejsu 4 Które metody są wirtualne? Które metody nie są wirtualne? Metody czysto wirtualne (C++) == Metody abstrakcyjne (Java) Odwołanie do implementacji w klasie nadrzędnej 5