Programowanie obiektowe

Podobne dokumenty
Programowanie obiektowe

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

Enkapsulacja, dziedziczenie, polimorfizm

Przykład -

Dokumentacja do API Javy.

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Wykład 4: Klasy i Metody

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

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

Programowanie obiektowe

Dziedziczenie. dr Jarosław Skaruz

Programowanie obiektowe i zdarzeniowe

Podstawy Języka Java

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

KLASY, INTERFEJSY, ITP

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

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

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

Programowanie obiektowe

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

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Polimorfizm. dr Jarosław Skaruz

Języki i metody programowania Java Lab2 podejście obiektowe

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)

Podstawy programowania obiektowego

Programowanie obiektowe. Wykład 03. Maciej Wołoszyn 17 marca Polimorfizm oraz wczesne i późne wiazanie

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

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

Wykład 6: Dziedziczenie

Programowanie obiektowe

Programowanie obiektowe

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

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

Programowanie obiektowe

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie obiektowe

Aplikacje w środowisku Java

Wprowadzenie do programowaia w języku Java. dr Dariusz Pałka dpalka@up.krakow.pl

Aplikacje w środowisku Java

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Programowanie obiektowe

Technologie i usługi internetowe cz. 2

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Przykłady interfejsu TCP i UDP w Javie

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Programowanie wieloplatformowe w Java

Programowanie w Internecie. Java

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

Programowanie obiektowe

Projektowanie obiektowe. Roman Simiński Polimorfizm

1 Atrybuty i metody klasowe

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

Zaawansowane programowanie w C++ (PCP)

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

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

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Programowanie obiektowe

Java: interfejsy i klasy wewnętrzne

Definicje klas i obiektów. Tomasz Borzyszkowski

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Programowanie w języku Java WYKŁAD

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

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

Języki i metody programowania Java INF302W. Wykład 1 (część 1) na podstawie Autor Dr inż. Zofia Kruczkiewicz

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

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

Programowanie w Javie - wykład 3

Programowanie w Javie wykład 8 Interfejsy

Podstawy programowania obiektowego

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Przypomnienie o klasach i obiektach

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Java Język programowania

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Podstawy programowania obiektowego

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

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

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Programowanie i projektowanie obiektowe

Java niezbędnik programisty spotkanie nr 3. Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja...

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

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

Java SE Laboratorium nr 2. Temat: Obiektowość

Wykład 02. Programowanie obiektowe. Maciej Wołoszyn 10 marca Spis treści.

Transkrypt:

Programowanie obiektowe Wykład 5: Dziedziczenie i polimorfizm 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 1 Kompozycja klas class Drzewo { class Krzew { class Las { Drzewo drzewostan[ ]; Krzew krzewostan[ ]; Mechanizm powszechnie stosowany w językach programowania! 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 2 1

Dziedziczenie class SrodekCzyszczacy { public class Detergent extends private String s = new String("Czysc"); SrodekCzyszczacy { public void append(string a) { s += a; // Modyfikacja metody public void rozciencz() { public void szoruj() { append(" rozciencz"); append(" Detergent.szoruj"); super.szoruj(); public void uzyj() { append(" uzyj"); // Dodanie metody public void piana() { append( piana"); public void szoruj() { append(" szoruj"); public static void main(string[ ] args) { Detergent x = new Detergent(); public void print() { x.rozciencz(); System.out.println(s); x.uzyj(); x.szoruj(); public static void main(string[ ] args) { x.piana(); SrodekCzyszczacy x = new x.print(); SrodekCzyszczacy(); System.out.println("est klasy bazowej"); x.rozciencz(); x.uzyj(); x.szoruj(); SrodekCzyszczacy.main(args); x.print(); 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 3 Inicjalizacja class Artysta { Artysta() { System.out.println( Konstruktor artysty"); class Plastyk extends Artysta { Plastyk() { System.out.println( Konstruktor plastyka"); public class Grafik extends Plastyk { Grafik() { System.out.println( Konstruktor grafika"); public static void main(string[ ] args) { Grafik x = new Grafik(); Wynik? Konstruktor artysty Konstruktor plastyka Konstruktor grafika 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 4 2

Inicjalizacja, c.d. class Gra { Gra(int i) { System.out.println( Konstruktor gry"); class GraPlanszowa extends Gra { GraPlanszowa(int i) { super(i); System.out.println( Konstruktor gry planszowej"); public class Chinczyk extends GraPlanszowa { Chinczyk() { super(11); System.out.println( Konstruktor chinczyka"); public static void main(string[ ] args) { Chinczyk x = new Chinczyk(); Musi być pierwszą instrukcją!! 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 5 Usuwanie obiektów class K1 { finalize() { class K2 extends K1 { finalize(i) { super.finalize(); 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 6 3

Modyfikatory dostępu, cd. protected dostęp chroniony (tylko w pakiecie i podklasach) package p1; public class K1 {. protected int i1; protected int m1(){ class K2{ int x; K1 o= new K1(); o.i1=5; x=o1.m1(); package p2; import p1; class K3 { int y; K1 o1= new K1(); o1.i1=5; y=o1.m1(); class K4 extends K1{ int y; K1 o1= new K1(); o1.i1=5; y=o1.m1(); 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 7 Porównanie modyfikatorów dostępu Modyfikator public protected brak private Klasa Pakiet Podklasa Wszędzie Klasy: tylko publiczne lub przyjazne!!! 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 8 4

Zastosowanie dziedziczenia Dziedziczenie a kompozycja dziedziczenie: gdy nowa klasa jest pewną wersją innej klasy kompozycja: gdy nowa klasa ma inną klasę Przyrostowe tworzenie oprogramowania Rzutowanie w górę, polimorfizm class Instrument { graj() { melodia (Instrument i) { Instrument i=new Instrument(); melodia(i); class Gitara extends Instrument { Gitara g=new Gitara(); graj() { melodia (g); 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 9 Przykład 1: rzutowanie w górę class uta { private int value; private uta(int val) { value = val; public static uta C = new uta(0), Cis = new uta(1), D = new uta(2); class Instrument { public void graj(uta n) { System.out.println("Instrument.graj()"); class Dety extends Instrument { public void graj(uta n) { System.out.println("Dety.graj()"); run-time binding public class Muzyka { public static void melodia(instrument i) { //... i.graj(uta.c); public static void main(string[] args) { Dety flet = new Dety(); melodia(flet); Wynik? graj(); Instrument.graj() melodia(i ) i.graj(n). Instrument Dety Dety.graj() 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 10 5

Przykład 2: bez rzutowania w górę class Strunowy extends Instrument { public void graj(uta n) { System.out.println( Strunowy.graj()"); Rzutowanie w górę public class Muzyka { Instrument i public static void melodia(dety i) { //... i.graj(uta.c); public static void melodia(strunowy i) { //... i.graj(uta.c); public static void main(string[] args) { Dety flet = new Dety(); Strunowy skrzypce = new Strunowy(); melodia(flet); melodia(skrzypce) 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 11 Przykład 3: Przydatność polimorfizmu class Ksztalt { void rysuj() { public class Ksztalty { void usun() { public static Ksztalt generuj() { switch((int)(math.random() * 3)) { default: class Kolo extends Ksztalt { case 0: return new Kolo(); void rysuj() { case 1: return new Kwadrat(); System.out.println("Kolo.rysuj()"); case 2: return new rojkat(); void usun() { System.out.println("Kolo.usun()"); public static void main(string[] args) { Ksztalt[] s = new Ksztalt[9]; for(int i = 0; i < s.length; i++) s[i] = generuj(); classkwadrat rojkat extends Ksztalt { for(int i = 0; i < s.length; i++) void rysuj() {{ s[i].rysuj(); System.out.println( Kwadrat.rysuj()"); System.out.println("rojkat.rysuj()"); void usun() {{ System.out.println( Kwadrat.usun()"); System.out.println("rojkat.usun()"); 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 12 6

Znaczenie polimorfizmu Programowanie obiektowe: enkapsulacja dziedziczenie polimorfizm!!! Zastosowanie: separacja interfejsu od implementacji tworzenie rozszerzalnych programów 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 13 Pytania 1. Co jest dziedziczone z klasy bazowej? 2. Zastosowania dziedziczenia. 3. Zasady inicjalizacji w podklasach i klasach bazowych. 4. Znaczenie i zastosowanie kwalifikatora protected. 5. Jakie warunki musi spełniać metoda aby mogła być metodą polimorficzną? 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 14 7

Koniec 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 15 8