Programowanie obiektowe

Wielkość: px
Rozpocząć pokaz od strony:

Download "Programowanie obiektowe"

Transkrypt

1 Programowanie obiektowe II. Dziedziczenie Małgorzata Prolejko OBI JA16Z03

2 Plan Klasy bazowe i pochodne. Hierarchia dziedziczenia. Polimorfizm. Wiązanie dynamiczne. Ograniczenie dziedziczenia, klasy i metody finalne. Rzutowanie. Klasy i metody abstrakcyjne. Klasa Object: metody equals, tostring i hashcode. Klasy wyliczeniowe. Szablony klas Kolekcje Adnotacje

3 Klasy bazowe i pochodne Klasa bazowa nadklasa, klasa rozszerzana, klasa której pola i metody zostaną odziedziczone. Najbardziej ogólna z klas hierarchii Klasa pochodna podklasa, klasa rozszerzająca, klasa zawierająca pola i metody z nadklasy oraz własne pola i metody. Klasa bardziej szczegółowa. public class Baza{... public class Pochodna extends Baza{... Klasa bazowa Klasa pochodna

4 Hierarchia dziedziczenia Dziedziczenie może odbywać się wielopoziomowo. Klasa bazowa może mieć wiele klas pochodnych, a klasy pochodne mogą posiadać swoje podklasy. Powiązania dziedziczenia pomiędzy klasami nazywają się hierarchią dziedziczenia. public class Czytelnik{ Czytelnik public class Pracownik extends Czytelnik{ public class Student extends Czytelnik{ Public class Absolwent extends Student{ Pracownik Student Absolwent

5 Polimorfizm Obiekty różnych podklas jednej nadklasy mogą być wspólnie obsługiwane w granicach stosowalności nadklasy. public class Czytelnik{ private String numerkarty; public Czytelnik(String nr){numerkarty = nr; public String getnumerkarty(){return numerkarty; Czytelnik[] czytelnicy = new Czytelnik[3]; czytelnicy[0] = new Student("1"); czytelnicy[1] = new Student("2"); czytelnicy[2] = new Pracownik("3"); for (Czytelnik c: czytelnicy) { System.out.println(c.getNumerKarty()); package test11

6 Wiązania dynamiczne Wiązania dynamiczne to poszukiwanie metody odpowiedniej do klasy obiektu wywołującego. public class Czytelnik{... public String getnumerkarty(){return numerkarty; public class Pracownik extends Czytelnik{... public String getnumerkarty(){return "p-"+numerkarty; Czytelnik czytelnicy = new Czytelnik[3]; czytelnicy[0] = new Czytelnik("1"); czytelnicy[1] = new Student("2"); czytelnicy[2] = new Pracownik("3"); for (Czytelnik c: czytelnicy) { System.out.println(c.getNumerKarty()); package test12

7 Polimorfizm Ćwiczenie 10. Zaimplementuj klasy do systemu nagród. Są nagrody główne: za 1-sze, 2-gie i 3-cie miejsce oraz nagrody specjalne. Nagrody główne składają się z części pieniężnej, upominku* oraz pucharu*. Nagrody specjalne składają się z upominku* oraz dyplomu*. Nagrody przyznawane są w 3 kategoriach: Jakość, Szybkość i Cena. * można przyjąć że są typu String

8 Polimorfizm Ćwiczenie 10. public class Nagroda { private final String upominek; private final String kategoria; public Nagroda(String upo, String kat){ upominek = upo; kategoria = kat.touppercase(); public String gettext(){ return "kategoria:"+kategoria+", upominek:"+upominek;

9 Polimorfizm Ćwiczenie 10. public class NagrodaSpecjalna extends Nagroda { private String dyplom; public NagrodaSpecjalna(String upo, String kat, String dyp){ super(upo,kat); dyplom = public String gettext(){ return super.gettext() + ", dyplom:"+dyplom;

10 Polimorfizm Ćwiczenie 10. public class NagrodaGlowna extends Nagroda { private String puchar; private int wartosc; private int miejsce; public NagrodaGlowna(String upo, String kat, String pu, int w, int mie){ super(upo,kat); puchar = pu; wartosc = w; miejsce = public String gettext(){ return super.gettext() +", miejsce:"+miejsce+ ", puchar:"+puchar + ", wartość:"+wartosc +"zł";

11 Polimorfizm public class Test { public static void main(string[] args) { Ćwiczenie 10. Nagroda nagrody[] = new Nagroda[12]; nagrody[0] = new NagrodaGlowna("książka", "JAKOSC", "duży puchar", 1000, 1); nagrody[1] = new NagrodaGlowna("książka", "cena", "duży puchar", 1000, 1); nagrody[2] = new NagrodaGlowna("książka", "SZYbkosc", "duży puchar", 1000, 1);... nagrody[11] = new NagrodaSpecjalna("kubeczki", "szybkosc", "Dyplom za innowacje"); for(nagroda n: nagrody){ System.out.println(n.getText());

12 Ograniczenie dziedziczenia Jeżeli nie chcemy aby dana klasa, bądź metoda była rozszerzana, można dodać do niej modyfikator final. Klasa opatrzona tym modyfikatorem nie może zostać nadklasą. Metoda opatrzona tym modyfikatorem nie może być przedefiniowana w podklasach. Dzięki oznaczaniu metod jako finalnych nie ma potrzeby używania wiązania dynamicznego (czasochłonnego) oraz zabezpieczamy kod przed niekontrolowanym przedefiniowaniem. public class Czytelnik{ private String numerkarty; public final void setnumerkarty(string nr){numerkarty = nr; public final String getnumerkarty(){return numerkarty;

13 Rzutowanie Rzutowanie jest zmianą typu obiektu na nowy (o ile to ma sens). Rzutowaniu mogą podlegać liczby double pi = 3.14; int p = (int) pi; bądź obiekty z jednej hierarchii dziedziczenia Czytelnik[] c = new Czytelnik[2]; c[0] = new Pracownik(); Pracownik p = (Pracownik) c[0]; package test13

14 Klasy i metody abstrakcyjne Niektóre klasy nie powinny posiadać obiektów. Jeżeli klasa tylko definiuje podstawowe pola i metody dla klas dziedziczących to jest klasą abstrakcyjną i oznacza się ją słowem kluczowym abstract. Klasa abstrakcyjna posiada metody abstrakcyjne, które są deklaracją metody, ale bez jej implementacji. Klasa pochodna, która ma tworzyć obiekty musi implementować wszystkie abstrakcyjne metody z nadklasy. public abstract class Czytelnik{ private String numerkarty; public abstract void wyswietl(); public class Pracownik extends Czytelnik{ public void wyswietl(){ System.out.println("Pracownik o nr: " + numerkarty); package test14

15 Klasa Object Klasa Object jest najbardziej ogólną klasą, po której dziedziczą wszystkie klasy Javy. Nie trzeba nawet dodawać tego dziedziczenia w kodzie. class Czytelnik{... class Czytelnik extends Object{... Dzięki wspólnej nadklasie, możliwe jest przechowywanie dowolnych referencji w zmiennych typu Object. Powrót do pierwotnego typu nastąpi wtedy przez rzutowanie. Object o = new Czytelnik(); Czytelnik c = (Czytelnik) o;

16 Klasa Object equals() Dzięki wspólnej nadklasie, wszystkie klasy implementują metodę equals() dzięki której możliwe jest porównywanie referencji do dwóch obiektów. Jeżeli obie referencje wskazują na to samo miejsce w pamięci, to zwracana jest wartość true. Czytelnik c1 = new Czytelnik(); Czytelnik c2 = new Czytelnik(); Czytelnik c3 = c1; c1.equals(c2); //false c1.equals(c3); //true Czytelnik Czytelnik Aby porównać stany dwóch obiektów należy tą metodę przeładować. c1 c2 c3 package test15

17 Klasa Object Uniwersalna metoda tostring() zwraca łańcuch znakowy będący reprezentację obiektu. tostring() Czytelnik c = new Czytelnik(); System.out.println(c.toString()); W każdej klasie można przeładować tą metodę uzyskując własną wersję reprezentacji znakowej. class Czytelnik{ public String tostring(){ return Mój czytelnik"; package test16

18 Klasa Object Zaimplementuj metody equals i tostring dla następującej klasy: public class Uzytkownik{ private String nazwakonta; private String haslo; private Date datarejestracji; public Uzytkownik(String nazwa, String has){ nazwakonta = nazwa; haslo = has; datarejestracji = new Date(); Ćwiczenie 11.

19 Klasa Object Ćwiczenie 11. public boolean equals(object o){ Uzytkownik1 u; Boolean takiesame = false; try{ u = (Uzytkownik1) o; takiesame = datarejestracji.compareto(u.getdatarejestracji())==0 && nazwakonta.equals(u.getnazwakonta()) && haslo.equals(u.gethaslo()); catch(classcastexception e){ System.out.println(e); return takiesame; public String tostring(){ SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.YYYY"); return "konto:"+ nazwakonta + " zarejestrowane:"+ sdf.format(datarejestracji.gettime());

20 Klasy wyliczeniowe Oprócz typów liczbowych można zadeklarować typ wyliczeniowy enum, który z góry definiuje wszystkie możliwe wartości zmiennej. Traktowany jest jak klasa. Powinien być umieszczony w osobnym pliku. enum PoraRoku{ WIOSNA, LATO, JESIEN, ZIMA; Klasy enum mogą posiadać konstruktory i własne metody. enum PoraRoku{ WIOSNA("marzec"), LATO("czerwiec"), JESIEN("wrzesien"), ZIMA("grudzien"); private String poczatekporyroku; private PoraRoku(String poczatek){poczatekporyroku = początek; public void wypisz(){ System.out.println(this + " zaczyna się w: " + poczatekporyroku); PoraRoku p = PoraRoku.WIOSNA; p.wypisz(); PoraRoku.LATO.wypisz(); package test17

21 Szablony klas - lista Istnieje czasem potrzeba, aby klasa obsługiwała różne typy danych zachowując przy tym ten sam zestaw operacji -> np. lista. Lista jest sposobem przechowywania wielu obiektów o tym samym typie. Umożliwia dodanie, wyszukanie bądź usunięcie obiektu. Ma zmienną długość. Można by utworzyć klasę która posiada pole będące obiektem oraz wskaźnik(referencję) na następny element ElementListy Obiekt 1 ElementListy Obiekt 2 ElementListy Obiekt 3 obiekt obiekt obiekt następny następny następny

22 Szablony klas Aby taki system działał dla dowolnych obiektów, pole obiekt musiałoby być typu Object. Przechowywanie elementów w takiej liście miałoby jednak bardzo dużą wadę: można by umieścić w niej obiekty dowolnych klas i zgubić typ podstawowy class ElementListy { private Object obiekt; private ElementListy nastepny; public ElementListy(Object o){ obiekt = o; public void dodajliste(elementlisty el){ nastepny = el; public Object getobiekt(){return obiekt; String s = bum ; Integer i = 3; ElementListy el1 = new ElementListy(s); ElementListy el2 = new ElementListy(i); el1.dodajliste(el2); package test18

23 Szablony klas Dostanie podstawowego typu wymaga rzutowania zwężającego musimy wcześniej znać typ obiektu. Jeżeli w liście są wymieszane typy, to jest to pracochłonne zadanie. Z tego powodu wprowadzono szablony klas i typy generyczne (generics). Mechanizm ten pozwala na utworzenie klasy, w której niektóre typy danych dopiero zostaną zdefiniowane podczas konstruowania obiektu. class ElementListy<T> { private T obiekt; private ElementListy<T> nastepny; public ElementListy(T o){ obiekt = o; public void dodajliste(elementlisty<t> el){ nastepny = el; public T getobiekt(){return obiekt; ElementListy<String> = new ElementListy<String>( bum );

24 Szablony klas Teraz nie będzie możliwości łączenia list z różnymi typami danych. Już podczas kompilacji sprawdzone zostaną typy. class ElementListy<T> { private T obiekt; private ElementListy<T> nastepny; public ElementListy(T o){ obiekt = o; public void dodajliste(elementlisty<t> el){ nastepny = el; public T getobiekt(){return obiekt; String s = bum ; Integer i = 3; ElementListy<String> el1 = new ElementListy<String>(s); ElementListy<Integer> el2 = new ElementListy<Integer>(i); el1.dodajliste(el2); //błąd!!! package test19

25 Szablony klas Zaproponuj klasę do przechowywania punktu płaszczyzny. Ćwiczenie 12. Dodaj dwa obiekty: - jeden punkt na rastrze(współrzędne opisane tylko przez liczby całkowite) - oraz jeden punkt na ciągłej płaszczyźnie (współrzędne opisane przez liczby rzeczywiste).

26 Szablony klas public class Punkt<T> { private T x; private T y; Ćwiczenie 12. public Punkt(T nx, T ny){ x = nx; y = ny; public T getx(){return x; public T gety(){return y; public void setpunkt(t nx, T ny){ x = nx; y = ny; Punkt<Integer> p1 = new Punkt<Integer>(1,2); Punkt<Float> p1 = new Punkt<Float>(1.1f,2.2f);

27 Szablony klas W szablonie może być więcej niż jeden zmienny typ generyczny. class Para<T,S> { private T pierwszyelementpary; private S drugielementpary;... Para<String,String> p1 = new Para<String,String>( aaa, bbb ); Para<String,Integer> p2 = new Para<String,Integer>( aaa,1); Para<Integer,String> p3 = new Para<Integer,String>(2, bbb ); Zawarte między znakami <> typy(np. String,String) nazywane są argumentami typu. Klasa Para<S,T> nazywana jest sparametryzowaną, a klasy Para<String,String> instancjami sparametryzowanej klasy Para<S,T> package test20

28 Szablony klas typy Niech będzie dana klasa sparametryzowana Box<T> posiadająca element i statyczny numer liczący liczbę instancji tej klasy. class Box<T> { private T element; public static int licznik=0; public Box(T e){ element = e; licznik++; public int getlicznik(){return licznik; Referencja na obiekt typu T Statyczne pole klasy inicjowane 0 Zwiększanie licznika Czy obiekty o różnych argumentach typów będą miały tą samą wartość numeru? package test21

29 Szablony klas typ surowy class Box<T> { private T element; public static int licznik=0;... public int getlicznik(){return licznik; Box<String> b1 = new Box<String>( aaa ); b1.getlicznik(); //1 Box<Integer> b2 = new Box<Integer>(3); b1.getlicznik(); //2 b2.getlicznik(); //2 Mimo różnych instancji klasy sparametryzowanej Box<T>, przechowywana w pamięci jest tylko jedna klasa Box (już bez parametrów) i jest to typ surowy. Dlatego pole statyczne jest wspólne dla obiektów b1 i b2. package test21

30 Szablony klas czyszczenie typów class Box<T> { private T element; public static int numer=0;... public T getelement(){return element; public void setelement(t e){element = e; Przechowywane w pamięci metody tracą argumenty typu, który zostaje zastąpiony przez Object. Mechanizm ten nazywa się czyszczeniem typów. Można sprawdzić typy przechowywane za pomocą mechanizmu refleksji. import java.lang.reflect.*; Box<String> b = new Box<String>( aaa ); Class klasa = b.getclass(); System.out.println(klasa); Method[] metody = klasa.getdeclaredmethods(); for (Method m : metody) System.out.println(m); Pakiet refleksji Pobranie klasy danego obiektu Pobranie listy metod z danej klasy package test22

31 Szablony klas ograniczanie typów W deklaracji klasy sparametryzowanej nie znamy typu, który dopiero podczas tworzenia obiektu zostanie podany. Dlatego nie można wewnątrz takiej klasy używać metod specyficznych dla pewnego typu obiektu. Jedyne które są dozwolone to metody klasy Object, ponieważ wszystkie klasy po niej dziedziczą. Jeżeli do działania potrzebowalibyśmy metody z konkretnej klasy, musimy zapewnić że typ obiektu będzie taką metodę posiadał. Można to zrobić stosując ograniczenie parametrów typu. Po extends dopisujemy klasy, bądź interfejsy, które typ T musi implementować. Dzięki temu można używać metod z nich. class Box<T extends String> { private T element; public static int numer=0;... public String wypisz(){return element.touppercase(); T musi teraz dziedziczyć po klasie String. Dzięki temu można wywołać metodę touppercase specyficzną dla tej klasy. Klasa String jest górnym ograniczeniem typu. package test23

32 Szablony klas Ćwiczenie 13. Dopisz metodę do klasy Punkt pozwalającą na obliczenie odległości między dwoma punktami.

33 Szablony klas public class Punkt<T extends Number> { private T x; private T y; Ćwiczenie 13. public T getx(){return x; public T gety(){return y; public double odleglosc(punkt<t> p2){ return Math.sqrt( Math.pow(x.doubleValue() - p2.getx().doublevalue(),2.0)+ Math.pow(y.doubleValue() - p2.gety().doublevalue(),2.0));

34 Szablony klas public class Test { Ćwiczenie 13. public static void main(string[] args) { Punkt<Integer> p1 = new Punkt<Integer>(1,2); Punkt<Integer> p2 = new Punkt<Integer>(4,5); Punkt<Float> p3 = new Punkt<Float>(1.1f,2.1f); Punkt<Float> p4 = new Punkt<Float>(2.1f,3.1f); System.out.println("Punkt["+p1.getX() +";"+p1.gety()+"]"); System.out.println("Punkt["+p2.getX() +";"+p2.gety()+"]"); System.out.println(p1.odleglosc(p2)); System.out.println(p3.odleglosc(p4));

35 Szablony klas parametry uniwersalne Czasem wymagane jest aby można było korzystać z możliwości dziedziczenia klas sparametryzowanych. Ponieważ po kompilacji wszystkie typy stają się surowe nie da się zapewnić, że będzie zgodność zarówno klas jak ich parametrów. Box<Integer> extends Box<Number> Wprowadzono zatem parametry uniwersalne? (wildcards). Dzięki temu można - zastosować ograniczenie górne: - dowolny podtyp A <? extends A> - zastosować ograniczenie dolne: - dowolny nadtyp A <? super A> - zastosować pełną dowolność: dowolny typ <?> Box<Integer> extends Box<? extends Number> Box<? super Integer> extends Box<Number> Box<Integer> extends Box<?>

36 Szablony klas Ćwiczenie 13a. Dopisz metodę do klasy Punkt pozwalającą na obliczenie odległości między dwoma punktami, bez względu na to jakiego typu są.

37 Szablony klas public class Punkt<T extends Number> { private T x; private T y; Ćwiczenie 13a. public T getx(){return x; public T gety(){return y; public double odleglosc(punkt<?> p2){ return Math.sqrt( Math.pow(x.doubleValue() - p2.getx().doublevalue(),2.0)+ Math.pow(y.doubleValue() - p2.gety().doublevalue(),2.0)); Punkt<Integer> p1 = new Punkt<Integer>(4,5);Punkt<Float> p2 = new Punkt<Float>(1.1f,2.1f); System.out.println(p1.odleglosc(p2));

38 Szablony klas parametry uniwersalne Czytelnik Lista<Czytelnik> SortLista<Czytelnik> Pracownik Lista<Pracownik> SortLista<Pracownik> Ochroniarz Lista<Ochroniarz> SortLista<Ochroniarz> Lista<T> SortLista<T> Lista<Czytelnik> lczyt1 = new Lista<Czytelnik>(new Czytelnik()); Lista<Czytelnik> lczyt2 = new Lista<Pracownik>(new Pracownik()); //Błąd!!! Lista<? extends Czytelnik> lczyt2 = new Lista<Pracownik>(new Pracownik()); Lista<? super Pracownik> lczyt3 = new Lista<Czytelnik>(p); package test24

39 Szablony klas Stosowanie typów sparametryzowanych (tu w skrócie ts.) ma pewne ograniczenia. Ts. może być typem pól, argumentów i wyniku metod Ts. nie mogą być typem pola statycznego, bo dla różnych instancji klas sparametryzowanych pola statyczne są wspólne. Można rzutować zmienne do ts., ale i tak po kompilacji zostanie zastosowanie czyszczenia typów. Nie można tworzyć obiektów ts. ponieważ nie wiadomo jakiego konstruktora używać. Można wywoływać metody jedynie z klasy do której nastąpi czyszczenie typów(zwykle Object, chyba że zastosowano ograniczenie typu) Nie można wywoływać metod konkretnej klasy, ponieważ nie wiadomo jaka będzie.

40 Szablony klas Stosowanie typów sparametryzowanych (tu w skrócie ts.) ma pewne ograniczenia. Ts. może być typem pól, argumentów i wyniku metod Nie można przeciążać metod tylko poprzez zmianę jednego ts. na inny, ponieważ po czyszczeniu typów oba zostaną zastąpione przez Object void set(t t1){ void set(s t2){ -> void set(object t1){ -> void set(object t1){ Można wywoływać metody jedynie z klasy do której nastąpi czyszczenie typów(zwykle Object, chyba że zastosowano ograniczenie typu) Nie można wywoływać metod konkretnej klasy, ponieważ nie wiadomo jaka będzie.

41 Kolekcje Jednym z najczęstszych zastosowań szablonów są kolekcje. Są to struktury przechowujące dowolne dane: Zbiór java.util.set przechowuje dowolną liczbę obiektów, nie zapamiętuje kolejności Lista java.util.list przechowuje obiekty w kolejności i możemy się odwoływać do każdego z nich po numerze indeksu Kolejka java.util.queue przechowuje obiekty w kolejności, ale dodaje się zawsze elementy na koniec, a obsługuje elementy z końca (kolejka LIFO(First In-Last Out)) albo z początku (FIFO(First In-First Out)) Mapa java.util.map przechowuje pary elementów klucz-wartość. Kolejność jest nieistotna, odwołujemy się do elementu po kluczu.

42 Kolekcje Aby utworzyć kolekcję trzeba wybrać jedną z implementacji: Zbiór java.util.set implementują HashSet LinkedHashSet TreeSet Lista java.util.list implementują ArrayList LinkedList Kolejkę java.util.queue implementują LinkedList PriorityQueue Mapa java.util.map implementują HashMap LinkedHashMap TreeMap

43 Adnotacje Adnotacje są fragmentem kodu rozpoczynającym się który pozwala kompilatorowi na interpretację kodu. Jedną z najczęściej stosowanych adnotacji którą oznacza się metody przysłaniające te z nadklasy, bądź implementacji interfejsów. Dzięki temu kompilator może sprawdzić czy na pewno sygnatury się zgadzają i zawczasu poinformować o problemie. Adnotacje używane są podczas obsługi formularzy lub baz danych, dzięki czemu można sprawniej zarządzać kodem.

44 Praca domowa 2. Do systemu rezerwacji biletów lotniczych dopisz funkcjonalności: 1. Klient może rezerwować więcej niż jeden lot. 2. Rezerwowany bilet można anulować. 3. Za bilet można zapłacić. Nieopłacony bilet nie może zostać odprawiony. 4. Bilet można odprawić wraz z bagażem. 5. Lot posiada listę pasażerów lub biletów. 6. Lot można zrealizować, po czym bilety na ten lot usuwane są z listy u pasażerów. 7. Miejsca wylotu/przylotu są klasami. Lot je wykorzystuje. 8. Do rodzaju bagażu (lub taryfy biletu, rodzaju ulgi) użyte są typy wyliczeniowe. 9. Stan obiektu wypisuje na konsolę jedna metoda tej klasy. 10.Cena biletu wyliczana jest na podstawie długości trasy, taryfy/ulgi i zadeklarowanego bagażu.

Metody sparametryzowane

Metody sparametryzowane Metody sparametryzowane Nie tylko klasy i pola można parametryzować. Parametry typu można zastosować również do pojedynczych metod. Podstawienie typu zostanie wykonane podczas wywołania metody. class Box

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Dziedziczenie. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

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

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

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

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

TYPY GENERYCZNE (GENERICS)

TYPY GENERYCZNE (GENERICS) TYPY GENERYCZNE (GENERICS) ZAGADNIENIA: wprowadzenie, konwencje, metody, typy surowe parametry ograniczone podtypy, dziedziczenie, symbole wieloznaczne, ograniczenia. MATERIAŁY: http://docs.oracle.com/javase/tutorial/java/generics/

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

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

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

Wykład 6: Dziedziczenie

Wykład 6: Dziedziczenie Wykład 6: Dziedziczenie Dziedziczenie Jeden z filarów obiektowości. Budowa jednej klasy na bazie drugiej, przez dodawanie/przesłanianie jej składowych: nad-klasa klasa bazowa pod-klasa klasa pochodna od

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Podstawy Języka Java

Podstawy Języka Java Podstawy Języka Java Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe I. Obiekty i klasy Małgorzata Prolejko OBI JA16Z03 Plan Klasy i obiekty Odnośniki (referencje) Używanie klas predefiniowanych Tworzenie własnych klas Relacje pomiędzy klasami: dziedziczenie

Bardziej szczegółowo

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

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki 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

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 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

Bardziej szczegółowo

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

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

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 13 Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods

Bardziej szczegółowo

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

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie Języki i techniki programowania Ćwiczenia 3 Dziedziczenie Klasa abstrakcyjna Autor: Marcin Orchel Klasa abstrakcyjna to taka, że nie możemy tworzyć obiektów tej klasy, możemy jednak dziedziczyć po tej

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

java.util.* :Kolekcje Tomasz Borzyszkowski

java.util.* :Kolekcje Tomasz Borzyszkowski java.util.* :Kolekcje Tomasz Borzyszkowski Wstęp Kolekcje w Java dają programiście pewien standardowy sposób radzenia sobie z przetwarzaniem grup obiektów. Implementacja kolekcji w Java składa się z następujących

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 3 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Programowanie w Javie - wykład 3

Programowanie w Javie - wykład 3 Pakiety import Klasy dziedziczenie Programowanie w Javie - wykład 3 Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

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

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Typy sparametryzowane

Typy sparametryzowane Typy sparametryzowane Streszczenie Celem wykładu jest zaprezentowanie typów sparametryzowanych. Czas wykładu 90 minut. Istnieją algorytmy, których zasada działania nie zależy od typu danych wejściowych.

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Dawid Gierszewski Adam Hanasko

Dawid Gierszewski Adam Hanasko Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{

Bardziej szczegółowo

Java: interfejsy i klasy wewnętrzne

Java: interfejsy i klasy wewnętrzne Java: interfejsy i klasy wewnętrzne Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 INTERFEJSY Interfejs to opis co klasa implementująca dany interfejs powinna robić, ale bez określania

Bardziej szczegółowo

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski Realizacja ekstensji klasy Paulina Strzelecka, Tomasz Roszkowski Przechowywanie obiektów (odwolañ do obiektów) w Javie typ wbudowany - tablica zbiór klas kontenerowych Paulina Strzelecka, Tomasz Roszkowski

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

GUI - projektowanie interfejsów cz. II

GUI - projektowanie interfejsów cz. II Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny w Katowicach Wykład 2 Java Foundations Classes przyciski; pola tekstowe; panele; okna dialogowe; biblioteka Swing. Metodyka (paradygmat) programowania

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna

Kurs programowania. Wykład 9. Wojciech Macyna Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy

Bardziej szczegółowo

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Programy w Javie składają się z pakietów Pakiety zawierają definicje

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Mechanizm dziedziczenia

Mechanizm dziedziczenia Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

.NET Klasy, obiekty. ciąg dalszy

.NET Klasy, obiekty. ciąg dalszy .NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,

Bardziej szczegółowo

Dziedziczenie jednobazowe, poliformizm

Dziedziczenie jednobazowe, poliformizm Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

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

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 4 Wzorce

Języki i techniki programowania Ćwiczenia 4 Wzorce Języki i techniki programowania Ćwiczenia 4 Wzorce Wzorce to metoda generacji różnych klas lub różnych funkcji. Autor: Marcin Orchel Przykład 1: Jeśli dana klasa C wykonuje obliczenia numeryczne, i wymaganiem

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)? 1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)? public static void test1() { Object[] o = new Object[] { "1", "2", "3" ; List l = new ArrayList(Arrays.asList(o));

Bardziej szczegółowo

Polimorfizm a klasy generyczne w języku Java. Zdzisław Spławski 1

Polimorfizm a klasy generyczne w języku Java. Zdzisław Spławski 1 Polimorfizm a klasy generyczne w języku Java Zdzisław Spławski 1 Klasyfikacja polimorfizmów Polimorfizm ogólnie oznacza wielopostaciowość i umożliwia przypisanie różnych

Bardziej szczegółowo

C++ - [4-7] Polimorfizm

C++ - [4-7] Polimorfizm Slajd 1 z 14 C++ - [4-7] Polimorfizm Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 20 maja 2013 r. Slajd 2 z 14 Polimorfizm i klasa polimorficzna POLIMORFIZM (cytat z Wikipedii) (wielopostaciowość)

Bardziej szczegółowo

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

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

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

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6 Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

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

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7: Typy uogólnione. Stringi. 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 1 Jak operować na danych różnych typów? Wymagana zgodność typów Rzutowanie w górę Tylko

Bardziej szczegółowo

Programowanie Obiektowe (Java)

Programowanie Obiektowe (Java) 1. Wprowadzenie do kontenerów Wykład ósmy Kontenery s ą obiektami, które potrafi ą przechowywa ć inne obiekty w określony sposób. O kontenerach można myśle ć jako o gotowych do użycia strukturach danych.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13: RTTI 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 1 Po co informacja o typie obiektu? Polimorfizm Kolekcje Deserializacja 6/2/2013 S.Deniziak: Programowanie obiektowe

Bardziej szczegółowo

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java:

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java: Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java: p u b l i c c l a s s Punkt { i n t x, y ; Punkt ( ) { x = 1 ; y = 1 ; Punkt ( i n t wspx, i n t wspy ) { x = wspx ; y = wspy ; Punkt (

Bardziej szczegółowo

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 14 Katarzyna Grzelak 3 czerwca 2019 K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Na ostatnim wykładzie: Konstruktor standardowy (domyślny) to taki, który nie ma żadnych argumentów

Bardziej szczegółowo

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Mechanizm dziedziczenia

Mechanizm dziedziczenia Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia

Bardziej szczegółowo

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

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dziedziczenie Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1432108800 > Dziedziczenie Dziedziczenie C++ dziedziczenie 2 / 13 > Dziedziczenie Dziedziczenie * to

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Wykład 9: Polimorfizm i klasy wirtualne

Wykład 9: Polimorfizm i klasy wirtualne Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki Język C# pętle, sterowanie, wyjątki Język C# pętle Pętle: while ( ) do { while ( ); for ( ; ; ) foreach ( in

Bardziej szczegółowo

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1 Ćwiczenie 1 Uruchamianie programu w Netbeans Uruchom środowisko Netbeans. Stwórz nowy projekt typu Java Application. Nadaj projektowi nazwę HelloWorld (Project Name), zwróć uwagę na folder, w którym zostanie

Bardziej szczegółowo

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

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

Definicje klas i obiektów. Tomasz Borzyszkowski

Definicje klas i obiektów. Tomasz Borzyszkowski Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy

Bardziej szczegółowo

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

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE. C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,

Bardziej szczegółowo

Podstawy otwartych języków programowania Przechowywanie danych

Podstawy otwartych języków programowania Przechowywanie danych Podstawy otwartych języków programowania Przechowywanie danych Wiktor Wandachowicz Sposoby przechowywania danych Typy podstawowe Pojedyncze obiekty Tablice obiektów i tablice typów podstawowych jednowymiarowe

Bardziej szczegółowo