Podstawy programowania obiektowego
|
|
- Leszek Kamiński
- 8 lat temu
- Przeglądów:
Transkrypt
1 Podstawy programowania obiektowego Technologie internetowe Wykład 7
2 Program wykładu Dziedziczenie Wywołania konstruktorów w dziedziczeniu Hermetyzacja w dziedziczeniu Dziedziczenie typu, rzutowanie w górę i w dół Mechanizm RTTI Nadpisywanie pól Nadpisywanie metod polimorfizm Klasy i metody finalne Klasy i metody abstrakcyjne
3 Dziedziczenie technika konstruowania nowych klas z wykorzystaniem klas już istniejących (jak kompozycja!) opisuje relację między 2 klasami:... jest szególnym przypadkiem...,... jest rodzajem... rzadziej stosowana i trudniejsza technika od kompozycji Komputer Samochód Figura Trójkąt Czworokąt Notebook Ciężarówka Wyścigówka Prostokąt Kwadrat
4 Dziedziczenie w kodzie class Figura {... class Trojkat extends Figura {... class Czworokat extends Figura {... class Prostokat extends Czworokat {... class Kwadrat extends Prostokat {... Klasa bazowa Nadklasa Klasa dziedziczona Base class Super class Figura Klasa dziedzicząca Podklasa Derived class Base class Subclass Trójkąt Czworokąt Prostokąt Kwadrat
5 Dziedziczenie jako zawieranie się podzbiorów każdy kwadrat jest prostokątem wśród prostokątów niektóre są szczególne: kwadraty kwadrat zatem dziedziczy z prostokąta CZWOROKĄTY FIGURY Figura TROJKĄTY PROSTOKĄTY Trójkąt Czworokąt KWADRATY Prostokąt Kwadrat
6 Konsekwencje dziedziczenia klasa dziedzicząca przejmuje kod z klasy bazowej: class Figura { Punkt srodek; public void przesun(int dx, int dy) { srodek.przesun (dx, dy); class Kolo extends Figura { int r;... Kolo k = new Kolo(); k.srodek = new Punkt(5,5); k.r = 3; k.przesun(1,0); korzyści: mniej kodowania propagowanie zmian
7 Konstruktory w dziedziczeniu Konstruktory nie dziedziczą się!!! class Figura { Punkt srodek; public Figura(Punkt s) { srodek = new Punkt(s); class Kolo extends Figura { int r; public Kolo(Punkt s, int rr) { srodek=new Punkt(s); r=rr;... Figura f=new Figura( new Punkt(0,0)); Kolo k = new Kolo ( new Punkt(10,10), 5); ale to się nie skompiluje dlaczego?
8 Obiekty klas dziedziczących tworzą się po kolei aż 4 obiekty (5)!!! Kwadrat k = new Kwadrat(new Punkt(1,1), 10)); Figura środek Czworokąt Figura środek Prostokąt Czworokąt Figura środek Kwadrat Prostokąt Czworokąt Figura środek new Figura(...) new Czworokat(...) new Prostokat(...) new Kwadrat(...) a każdy obiekt to wywołanie konstruktora który potrzebuje parametrów który konstruktor ma się wywołać (przeciążanie)?
9 Porządek wywołania konstruktorów każdy konstruktor klasy dziedziczącej musi wskazać konkretny konstruktor klasy bazowej, który wywoła się przed nim: nazwa klasy bazowej zastępowana jest słowem super konstruktor wybiera się podając jego parametry (przeciążanie!) wskazanie to musi być pierwszą instrukcją konstruktora jeśli tego nie zrobi kompilator wskaże konstruktor domyślny: class B extends A { public B() { public B() { super(); tu: zanim wywoła się domyślny konstruktor klasy B przed nim wywoła się domyślny konstruktor klasy A
10 Przykład wywołań konstruktorów class A { public A() { System.out.println("A.A()"); public A(int i) { System.out.println("A.A(int)"); class B extends A { public B() {super(0);system.out.println("b.b()"); public B(int i) {System.out.println("B.B(int)"); class C extends B { public C() { System.out.println("C.C()"); public C(int i) {super(i);system.out.println("c.c(int)"); A.A() A.A(int)... new C(); new C(1); A.A(int) B.B() C.C() A.A() B.B(int) C.C(int) B.B() C.C() B.B(int) C.C(int)
11 Konstruktory jeszcze raz brakuje konstruktora domyślnego Figury class Figura { Punkt srodek; public Figura(Punkt s) { srodek = new Punkt(s); class Kolo extends Figura { int r; public Kolo(Punkt s, int rr) { super(); srodek=new Punkt(s); r=rr; to wstawia kompilator... Figura f=new Figura( new Punkt(0,0)); Kolo k = new Kolo ( new Punkt(10,10), 5); lub wskazania innego konstruktora i jego parametrów
12 Konstruktory jeszcze raz wskazanie właściwego konstruktora class Figura { Punkt srodek; public Figura(Punkt s) { srodek = new Punkt(s); class Kolo extends Figura { int r; public Kolo(Punkt s, int rr) { super(s); srodek=new Punkt(s); r=rr;... Figura f=new Figura( new Punkt(0,0)); Kolo k = new Kolo ( new Punkt(10,10), 5); przy okazji inicjacja odziedziczonego pola który powinien być... prywatny?
13 Hermetyzacja w dziedziczeniu czy prywatne pola/metody się dziedziczą? class Figura { private Punkt srodek; public Figura(Punkt s) { srodek = new Punkt(s); class Kolo extends Figura { int r; public Kolo(Punkt s, int rr) { super(s); r=rr; public void przesun(int dx, int dy) { srodek.przesun(dx, dy); BŁĄD HERMETYZACJI dziedziczą się, ale są niedostępne! metoda 'przesun' powinna być zdefiniowana w Figurze albo należy użyć nowego poziomu ochrony... `
14 Poziom ochrony 'protected' pośredni poziom między 'public' a 'private' publiczny dla rodziny (w drzewie dziedziczenia) prywatny dla innych (obcych) klas class Figura { protected Punkt srodek; public Figura(Punkt s) { srodek = new Punkt(s); class Kolo extends Figura { int r; public Kolo(Punkt s, int rr) { super(s); r=rr; public void przesun(int dx, int dy) { srodek.przesun(dx, dy); OK `... Figura f=new Figura( new Punkt(0,0)); f.srodek=null; BŁĄD Kolo k = new Kolo ( new Punkt(10,10), 5); System.out.println(k.srodek); BŁĄD
15 Dziedziczenie nie dziedziczy się: konstruktorów (destruktorów, operatora= w C++) dziedziczy się: pola metody typ `
16 Po co typ? kompilator pilnuje zgodności typów: int i; float f; i = f; BŁĄD void f(int a) {... f( abc ); BŁĄD Samochód s = new Komputer(); BŁĄD ale czasami można go oszukać rzutowanie (casting) ` i = (int)f; OK Samochód s = (Samochód)new Komputer(); BŁĄD
17 Dziedziczenie typu klasa Kwadrat ma 4 typy (5): Figura Czworokat Prostokat Kwadrat więc kompilator dopuści podstawienie: Figura f = new Kwadrat(...); rzutowanie w górę!!! (upcasting) ` Figura Czworokąt Prostokąt Kwadrat
18 Rzutowanie w górę Figura[] figury = new Figura[100]; figura[0] = new Kwadrat(...); figura[1] = new Prostokat(...); figura[2] = new Trojkat(...); rzutowanie to zachodzi tylko w dziedziczeniu zawsze jest możliwe i bezpieczne upraszcza przechowywanie obiektów z 1 rodziny `
19 Klasa Object dlaczego Kwadrat ma 5 typów? każda klasa w Javie dziedziczy z klasy 'Object' (bezpośrednio lub pośrednio) class Figura {... class Figura extends Object {... pojedyncze drzewo dziedziczenia Object Figura składowe klasy Object: public String tostring(); public boolean equals(object o); metody związane z wątkami referencja typu 'Object' Object o = new... ` Czworokąt Prostokąt Kwadrat
20 Utrata dostępu do informacji Figura[] figury; for (Figura f: figury) f.przesun(1, 0); ale Figura f = new Kolo(new Punkt(1,2), 10); System.out.println(f.getR()); skąd wiadomo że 'f' to Koło? Figura f; if (random.nextint(2)%2 == 0) f = new Kolo(new Punkt(1,2), 10); else f = new Prostokat(new Punkt(1,2), 4, 6);
21 Utrata dostępu do informacji obiekt Koło cały czas jest w pamięci nie zmienia typu!!! (obiekt raz stworzony jako Koło zawsze będzie już Kołem) rzutowanie w górę zmienia tylko sposób patrzenia na obiekt kompilator mając referencję 'Figura f' nie zna rzeczywistego typu obiektu na który ona wskazuje wie, że ten obiekt to jakaś Figura i ma metodę 'przesun(int,int)' f - srodek:punkt +przesun(int,int) - r: int + getr(): int
22 Rzutowanie w dół (downcasting) rzutowanie z typu bazowego na typ pochodny ale to zły przykład: Kolo k = (Kolo)new Figura(...); dobry przykład: Figura f = new Kolo(...); Kolo k = (Kolo)f; poprawne rzutowanie w dół może nastąpić tylko po wcześniejszym rzutowaniu w górę odzyskanie utraconego dostępu do informacji Object Figura Czworokąt Prostokąt Kwadrat rzutowanie w dół jest ryzykowne
23 Mechanizm RTTI f? identyfikacja typu w czasie wykonania programu (Run-Time Type Identification) umożliwia świadome i poprawne rzutowanie w dół if (f instanceof Kolo) { Kolo k = (Kolo)f; System.out.println(k.getR()); operator 'instanceof' bada, czy 'f ' ma typ 'Kolo' jego bezpośrednie używanie (nadużywanie) jest uważane za mało eleganckie
24 Wykorzystanie 'instanceof' policzenie figur w tablicy Figura[] figury={ new Kwadrat(...), new Prostokat(...), new Czworokat(...) int lczw, lprost, lkw=0; for (Figura f: figury) { if (f instanceof Kwadrat) ++ lkw; if (f instanceof Prostokat) ++ lprost; if (f instanceof Czworokat) ++ lczw; System.out.println( Kwadraty: +lkw); System.out.println( Prostokąty: +lprost); System.out.println( Czworokąty: +lczw); wynik: 1 2 3!!! przecież każdy prostokąt jest też czworokątem!!!
25 Wykorzystanie 'instanceof' alternatywne policzenie figur w tablicy... if (f instanceof Kwadrat) ++ lkw; else if (f instanceof Prostokat) ++ lprost; else if (f instanceof Czworokat) ++ lczw;... lub: if (f instanceof Kwadrat) ++ lkw; if ( f instanceof Prostokat &&! f instanceof Kwadrat) ++ lprost; if ( f instanceof Czworokat &&! f instanceof Prostokat) ++ lczw; Object Figura Czworokąt Prostokąt Kwadrat
26 Nadpisywanie składowych w dziedziczeniu składowe dziedziczą się ale dopuszczalne jest ich nadpisywanie: class A { int x; class B extends A { int x; w takiej sytuacji obiekt B ma 2 zmienne 'x'!!! w przypadku pól to zwykle pomyłka x x 5 3 B A
27 Nadpisywanie pól class A { int x; class B extends A { int x; class C extends B { int x; public void showall() { System.out.println("A.x="+A.x+",B.x="+super.x+",C.x="+x); C c = new C(); c.x = 30; c.showall(); ((B)c).x = 20; ((A)c).x = 10; c.showall(); ważny jest typ referencji!!! x x x B A C
28 Nadpisywanie metod w zasadzie nadpisywanie metod działa tak samo ale w Javie jest specjalny mechanizm, który komplikuje sprawę: POLIMORFIZM przy wywołaniu metod nie jest ważny typ referencji (jak w przypadku pól) ważny jest typ obiekty który się za nią ukrywa f? metody wywoływane w ten sposób nazywane są metodami/funkcjami wirtualnymi
29 Nadpisywanie a przeciążanie (overriding vs overloading) to nie jest nadpisywanie tylko przeciążanie: class A { String f() { return A.f ; class B extends A { String f(int a) { return B.f ; class C extends B { String f(char c) { return C.f ; C c = new C(); System.out.println(c.f()); System.out.println(c.f(0)); System.out.println(c.f('a')); nadpisywanie: + A.f() + B.f(int) + C.f(char) C B A class A { String f() { return A.f ; class B extends A { String f() { return B.f ; class C extends B { String f() { return C.f ; System.out.println(c.f());??? + B.f() + C.f() + A.f() C B A
30 Wiązanie metod (binding) class A { public String f() { return A.f ; class B extends A { public String f() { return B.f ; class C extends B { public String f() { return C.f ; A a = new C(); System.out.println(a.f()); obiekt klasy C ma 3 metody 'f()' C B A + A.f(): String + B.f(): String + C.f(): String 0x02ca4 0x02cc4 0x02ce4 każda ma inny adres w pamięci kodu kompilator musi wskazać, którą metodę wywołać skompilować znaczy przetłumaczyć na asembler: a.f(); jump 0x02cc4? wiązanie metody
31 Wiązanie wczesne i późne jeśli kompilator faktycznie wiąże metodę wiązanie wczesne a.f(); jump 0x02ca4 jaką metodę wybiera? z tej klasy, jakiego typu jest referencja 'a' (A) jeśli kompilator nie wiąże kodu wiązanie późne a.f(); jump kiedy wykona się te wiązanie? w czasie wykonania programu (run-time) jaka metoda zostanie wybrana? z tej klasy, jakiego typu jest obiekt
32 Funkcje/Metody wirtualne metody wiązane wcześnie zwykłe metody metody wiązane późno metody wirtualne mechanizm późnego wiązania metod polimorfizm w Javie (prawie) wszystkie metody są wirtualne nie trzeba ich oznaczać (jak w C++ 'virtual') metody wirtualne mogą nieznacznie spowalniać wykonanie programu
33 Typowe użycie f. wirtualnych class Figura { public String opis(){return Jestem Figurą ; Trójkąt class Trojkat extends Figura { public String opis(){return Jestem Trójkątem ; class Czworokat extends Figura { public String opis(){return Jestem Czworokątem ; Figura Czworokąt Prostokąt Kwadrat class Prostokat extends Czworokat { public String opis(){return Jestem Prostokątem ; class Kwadrat extends Prostokat { public String opis(){return Jestem Kwadratem ;... Figura f=new??? System.out.println(f.opis());... System.out.println(xxx.opis());??? xxx
34 Metody niewirtualne w Javie wyjątkami (zwykłymi metodami) są metody: finalne statyczne prywatne class A { private String f() { return A.f ; public String g() { return A.g; public String call() { return f()+ +g(); class B extends A { private String f() { return B.f ; public String g() { return B.g;... A a = new B(); System.out.println(a.call());
35 Metody niewirtualne w Javie wyjątkami (zwykłymi metodami) są metody: finalne statyczne prywatne class A { private String f() { return A.f ; public String g() { return A.g; public String call() { return f()+ +g(); class B extends A { private String f() { return B.f ; public String g() { return B.g;... A a = new B(); System.out.println(a.call()); A.f B.g wywołanie wirtualne wywołanie niewirtualne
36 Jeszcze metody niewirtualne class A { private String f() { return A.f ; public String g() { return A.g; class B extends A { private String f() { return B.f ; public String g() { return B.g; public String call() { return f()+ +g();... A a = new B(); System.out.println(a.call());??? metoda 'call' w klasie B
37 Jeszcze metody niewirtualne class A { private String f() { return A.f ; public String g() { return A.g; class B extends A { private String f() { return B.f ; wywołanie wirtualne public String g() { return B.g; public String call() { return this.f()+ +this.g();... wywołanie niewirtualne A a = new B(); System.out.println(a.call()); B.f B.g 'this' w kodzie klasy A jest typu A 'this' w kodzie klasy B jest typu B
38 Poziom kodu class A { protected int x = 10; public int getax() { return x; class B extends A { protected int x = 20; public int getbx() { return x; x 10 class C extends B { protected int x = 30; x 20 public int getcx() { return x;... C c= new C(); x 30 System.out.println( +c.getax()+c.getbx()+c.getcx()); C B A
39 Poziom kodu class A { typu A protected int x = 10; public int getax() { return this.x; class B extends A { typu B protected int x = 20; public int getbx() { return this.x; class C extends B { typu C protected int x = 30; C public int getcx() { return this.x; # x +getcx()... C c= new C(); System.out.println( +c.getax()+c.getbx()+c.getcx()); kod sięga do pola ze swojemu poziomu potem do pól odziedziczonych (do góry) A # x +getax() B # x +getbx() nigdy nie sięga w dół (do klas dziedziczących)
40 Klasy i metody finalne z klasy finalnej nie można dziedziczyć finall class Ostateczna {... class Nowa extends Ostateczna {... metody finalnej nie można nadpisać jest też metodą niewirtualną (m.in. szybciej się wykonuje wiązanie wczesne) class Prostokat { protected double a, b; public final double pole() { return a*b; public Prostokat(double aa, double bb) { a=aa; b=bb; class Kwadrat extends Prostokat { public Kwadrat(int a) { super(a, a); public double pole() { return...
41 Klasy abstrakcyjne z klasy abstrakcyjne nie można utworzyć obiektu abstract class Figura {... new Figura(...); klasa abstrakcyjna służy tylko do dziedziczenia class Kolo extends Figura {... class Trojkat extends Figura {... ale można tworzyć referencje typu abstrakcyjnego Figura f = null; Figura[] figury = new Figura[100]; f=new Kolo(...); figury[0] = new Trojkat(...); klasa abstrakcyjna to zwykła klasa: może mieć pola, metody, konstruktory klasa abstrakcyjna ma 1 przywilej: tylko ona może posiadać metody abstrakcyjne...
42 Metody abstrakcyjne metoda abstrakcyjna to metoda niedokończona, zawiera tylko nagłówek abstract class Figura { protected Punkt srodek; public abstract double pole(); używana kiedy jej definicja nie miałaby sensu (jak policzyć pole jakiejś nieokreślonej figury?) klasa która dziedziczy z klasy abstrakcyjnej metodę abstrakcyjną musi ją zdefiniować do końca class Kolo extends Figura { protected double r; public double pole() { return Math.PI*r*r; metoda abstrakcyjna nigdy nie będzie wywoływana: jest wirtualna a nigdy nie stworzy się obiekt klasy Figura
43 Po co metody abstrakcyjne? kompilator ma wywołanie: Figura f =... f.pole(); musi sprawdzić, czy w klasie Figura metoda 'pole()' nie jest np.: statyczna, finalna, prywatna niewirtualna metoda abstrakcyjna narzuca na klasy dziedziczące obowiązek posiadania kompletnej metody 'pole()' (jeśli same nie chcą być abstrakcyjne): abstract class Figura2D extends Figura { metoda abstrakcyjna definiuje interfejs hierarchii klas
44 Wywoływanie metod zastępowanych konstruktor klasy dziedziczącej woła konstruktor klasy bazowej nowa metoda wirtualna całkowicie zastępuje przesłanianą metodę metoda zastępujące może po raz ostatni wywołać metodę zastępowaną class Figura { public String opis() {return Jestem Figurą ; class Kolo extends Figura { public String opis(){return super.opis()+ i Kołem ;... Figura f=new Koło(); System.out.println(f.opis()); Jestem Figurą i Kołem
45 Metoda 'public String tostring()' metoda zdefiniowana w klasie 'Object' oryginalna definicja wypisuje rzeczywistą nazwę klasy i nr referencji zwraca tekstową reprezentację obiektu często wykorzystywana class Punkt extends Object { private x, y;... Punkt p=new Punkt (1,2); System.out.print(p);<==>System.out.print(p.toString()); Punkt@0x23cd można ją nadpisać i w nowej metodzie wywołać oryginalną definicję: class Punkt extends Object { private x, y; public String tostring() { return super.tostring+ (x: +x+,y: +y+ ) ; System.out.print(p); Punkt@0x23cd(x:1,y:2)
46 Hermetyzacja a funkcje wirtualne przy nadpisywaniu metod wirtualnych nie można zmniejszyć poziomu dostępności (zwiększyć poziomu ochrony): class Figura { public String opis(){return Jestem Figurą ; class Kolo extends Figura { protected String opis(){return Jestem Kołem ; // BŁĄD kompilacji poziom ochrony (dostępności) należy co najmniej zachować class Kolo extends Figura { public String opis(){return Jestem Kołem ; // BŁĄD kompilacji
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ółowoJava - 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ółowoDziedziczenie. 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ółowoProgramowanie 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ółowoPolimorfizm. 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ółowoTechnologie 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ółowoWykł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ółowoProgramowanie 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ółowoProgramowanie 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ółowoInformatyka 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ółowoJava: 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ółowoKlasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np
Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami
Bardziej szczegółowoProgramowanie obiektowe w języku
Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy
Bardziej szczegółowoDziedziczenie. 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ółowoEnkapsulacja, 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ółowoProgramowanie 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ółowoTEMAT : 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ółowoC++ - 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ółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor
Bardziej szczegółowoWykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład V - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Programowanie obiektowe Dziedziczenie (inheritance) - mechanizm
Bardziej szczegółowoPolimorfizm, 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ółowoKlasy 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ółowoJAVA 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ółowo2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Bardziej szczegółowoDziedziczenie 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ółowoProgramowanie 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ółowoDokumentacja 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ółowoProgramowanie 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ółowoDOSTĘ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 Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001) Zakres public protected domyślny private widzialności metody lub zmiennej Klasa tak tak
Bardziej szczegółowoJę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ółowoPARADYGMATY 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ółowoZaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoProgramowanie 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ółowoSkładnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Bardziej szczegółowoKurs 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ółowoDziedziczenie. 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ółowoWykł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ółowoKlasa dziedzicząca posiada wszystkie cechy klasy bazowej (plus swoje własne) dodawanie nowego kodu bez edycji (i ewentualnego wprowadzania
Programowanie przyrostowe Rzutowanie w górę Zaleta dziedziczenia i kompozycji jest programowanie przyrostowe: Klasa dziedzicząca posiada wszystkie cechy klasy bazowej (plus swoje własne) dodawanie nowego
Bardziej szczegółowo1. 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.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ółowoC++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM
POLIMORFIZM Podstawowe pytanie, które nieustannie ma towarzyszyć autorowi programowi: czy gdyby nagle okazało się, że jest więcej... (danych na wejściu, typów danych, czynności, które program ma wykonać,
Bardziej szczegółowoJęzyki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:
Języki Programowania Prowadząca: dr inż. Hanna Zbroszczyk e-mail: gos@if.pw.edu.pl tel: +48 22 234 58 51 Konsultacje: piątek: 12.00 13.30 www: http://www.if.pw.edu.pl/~gos/students/jp Politechnika Warszawska
Bardziej szczegółowoInterfejsy. 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ółowoKurs 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ółowoKlasy 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ółowoJę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ółowoPodstawy 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ółowoZwiązek między pojęciami Zasada podstawialności Podklasy muszą realizować kontrakt zawarty przez nadklasy
Janusz Jabłonowski Związek między pojęciami Zasada podstawialności Podklasy muszą realizować kontrakt zawarty przez nadklasy Przedefiniowywanie lub podmienianie (ang. overriding, czasami błędnie tłumaczone
Bardziej szczegółowoWykł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ółowoWprowadzenie do programowanie obiektowego w języku C++
Wprowadzenie do programowanie obiektowego w języku C++ Część czwarta Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura
Bardziej szczegółowoC++ - 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 pól obiektowych wewnątrz innych
Bardziej szczegółowoProgramowanie obiektowe
Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Bardziej szczegółowoAplikacje 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ółowoInterfejsy i klasy wewnętrzne
Interfejsy i klasy wewnętrzne mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Interfejs klasy sposób komunikacji z jej obiektami (zestaw składowych publicznych). Określa on zestaw
Bardziej szczegółowoDOSTĘP DO METOD I ZMIENNYCH, TABLICE. 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) Zakres public protected domyślny private widzialności metody lub zmiennej Klasa
Bardziej szczegółowoProjektowanie obiektowe. Roman Simiński Polimorfizm
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Polimorfizm Koncepcja polimorfizmu Słowo polimorfizm pochodzi od dwóch greckich słów: poly czyli wiele, morphos czyli
Bardziej szczegółowoKurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
Bardziej szczegółowoWstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
Bardziej szczegółowoDefiniowanie 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ółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoKurs 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ółowoWykł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ółowoProgramowanie 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ółowoProgramowanie 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ółowoMechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Bardziej szczegółowoSkładnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Przeciążanie operatorów Słowo
Bardziej szczegółowoPodstawy 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ółowoJava. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Bardziej szczegółowoTEMAT : KLASY POLIMORFIZM
TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie
Bardziej szczegółowoMateriały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Bardziej szczegółowoWykł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ółowoObiekt 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ółowoDziedziczenie i interfejsy
Dziedziczenie i interfejsy Wyróżnia się dwa sposoby ponownego wykorzystania klas: Kompozycję oznacza, że obiekt jest zawarty w innym obiekcie i jest reprezentowana przez relację całość-część. Przykładowo
Bardziej szczegółowoUML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Bardziej szczegółowoPlatformy 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoProgramowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 30.10.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 30.10.2006 85 / 112 Zgodność typów Rozważmy klasy class A { //... }; class
Bardziej szczegółowoProgramowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto
Bardziej szczegółowoAbstrakcyjny typ danych
Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są
Bardziej szczegółowoAplikacje 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ółowoWykład 02. Programowanie obiektowe. Maciej Wołoszyn 10 marca Spis treści.
Programowanie obiektowe Wykład 02 Maciej Wołoszyn mailto:woloszyn@fatcat.ftj.agh.edu.pl 10 marca 2009 Spis treści 1 Klasa String 2 2 Przeładowywanie metod 5 2.1 Konstruktory..................................
Bardziej szczegółowoCzym jest polimorfizm?
Metody wirtualne oraz metody abstrakcyjne są ściśle związane z mechanizmem polimorfizmu. Polimorfizm jest jednym z filarów paradygmatu programowania obiektowego. Jak wiadomo język C# jest w całości językiem
Bardziej szczegółowoMarcin 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ółowoJęzyki i metody programowania Java Lab2 podejście obiektowe
Języki i metody programowania Java Lab2 podejście obiektowe https://docs.oracle.com/javase/tutorial/ http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/pojava/javazk4_2.pdf Zofia Kruczkiewicz 1 Zadanie
Bardziej szczegółowoJava 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ółowoObszar 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ółowoProgramowanie urządzeń mobilnych
Programowanie urządzeń mobilnych Najważniejsze platformy mobilne Android ios Windows Mobile / Windows Phone 7 Symbian Bada BlackBerry OS Brew Android Producent systemu: Open Handset Alliance Producenci
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. Metody stałe w klasie
Metody stałe w klasie Zadeklarowanie metody jako stałej stanowi obietnicę, że wykonanie tej metody nie zmieni stanu obiektu, na rzecz którego została wykonana Umieszczamy const między nawiasem zamykającym
Bardziej szczegółowoProgramowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne
1 Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie
Bardziej szczegółowoProgramowanie 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ółowoPodstawy Programowania semestr drugi. Wykład czternasty
Wykład czternasty 1. Polimorfizm Ostatni wykład zakończyliśmy stwierdzeniem, że możemy obiektowi dowolnej klasy przypisa ć obiekt klasy dziedziczącej po tej klasie. Przypisanie takie obejmuje jednak jedynie
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowoWykład 9: Metody wirtualne i polimorfizm
Języki programowania C i C++ Wykład 9: Metody wirtualne i polimorfizm 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD Podstawy programowania w C++ 2 to funkcje składowe, które przydają się szczególnie,
Bardziej szczegółowoPodstawy programowania obiektowego
1/23 Podstawy programowania obiektowego wykład 8 polimorfizm, wyjątki, kolekcje generyczne Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie klasy już istniejącej,
Bardziej szczegółowoPodstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 2
PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych
Bardziej szczegółowoTypy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:
Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów
Bardziej szczegółowo