Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt...
Transcript of Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt...
![Page 1: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/1.jpg)
Objektove programovanı
Anotace
Objektove programovanı.
![Page 2: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/2.jpg)
Objektove programovanı
Trıdy a objekty
Co je objekt?
Co je trıda?
Temer vsechno kolem nas je objekt.
Trıda je vlastne typem jednotlivych objektu.
Objekty majı ruzne vlastnosti (atributy) a schopnosti necodelat (metody).
![Page 3: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/3.jpg)
Objektove programovanı
Trıdy a objekty
Co je objekt?
Co je trıda?
Temer vsechno kolem nas je objekt.
Trıda je vlastne typem jednotlivych objektu.
Objekty majı ruzne vlastnosti (atributy) a schopnosti necodelat (metody).
![Page 4: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/4.jpg)
Objektove programovanı
Trıdy a objekty
Co je objekt?
Co je trıda?
Temer vsechno kolem nas je objekt.
Trıda je vlastne typem jednotlivych objektu.
Objekty majı ruzne vlastnosti (atributy) a schopnosti necodelat (metody).
![Page 5: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/5.jpg)
Objektove programovanı
Trıdy a objekty
Co je objekt?
Co je trıda?
Temer vsechno kolem nas je objekt.
Trıda je vlastne typem jednotlivych objektu.
Objekty majı ruzne vlastnosti (atributy) a schopnosti necodelat (metody).
![Page 6: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/6.jpg)
Objektove programovanı
Trıdy a objekty
Co je objekt?
Co je trıda?
Temer vsechno kolem nas je objekt.
Trıda je vlastne typem jednotlivych objektu.
Objekty majı ruzne vlastnosti (atributy) a schopnosti necodelat (metody).
![Page 7: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/7.jpg)
Objektove programovanı
Definice trıd
Jelikoz objekty jsou instance jednotlivych trıd, nema smysldefinovat jednotlive objekty, ale definujeme trıdy.
Rekneme, ze prvek ma byt typu object.
Nasledne postupujeme jako pri definici struktury (record).
Jenze mame mnohem vıce moznostı.
![Page 8: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/8.jpg)
Objektove programovanı
Definice trıd
Jelikoz objekty jsou instance jednotlivych trıd, nema smysldefinovat jednotlive objekty, ale definujeme trıdy.
Rekneme, ze prvek ma byt typu object.
Nasledne postupujeme jako pri definici struktury (record).
Jenze mame mnohem vıce moznostı.
![Page 9: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/9.jpg)
Objektove programovanı
Definice trıd
Jelikoz objekty jsou instance jednotlivych trıd, nema smysldefinovat jednotlive objekty, ale definujeme trıdy.
Rekneme, ze prvek ma byt typu object.
Nasledne postupujeme jako pri definici struktury (record).
Jenze mame mnohem vıce moznostı.
![Page 10: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/10.jpg)
Objektove programovanı
Definice trıd
Jelikoz objekty jsou instance jednotlivych trıd, nema smysldefinovat jednotlive objekty, ale definujeme trıdy.
Rekneme, ze prvek ma byt typu object.
Nasledne postupujeme jako pri definici struktury (record).
Jenze mame mnohem vıce moznostı.
![Page 11: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/11.jpg)
Objektove programovanı
Prıklad
Popıseme, co ma v prıslusne trıde byt:type autom=object
nosnost,nalozeno:integer;
procedure naloz(kolik:integer);
procedure vyloz(kolik:integer);
procedure dojed k hromade;
procedure dojed ke KS;
procedure stav;
end;
![Page 12: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/12.jpg)
Objektove programovanı
Implementace metod
Atributy jsou v poradku, ale co metody? Ty musıme definovat:
procedure autom.naloz(kolik:integer);
begin if(kolik+nalozeno>nosnost) then
nalozeno:=nosnost
else nalozeno:=nalozeno+kolik;
writeln(’Nakladam, mam nalozeno ’,nalozeno);
end;
procedure autom.vyloz(kolik:integer);
begin if(kolik>nalozeno) then
nalozeno:=0
else nalozeno:=nalozeno-kolik;
writeln(’Vykladam, mam nalozeno ’,nalozeno);
end;
![Page 13: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/13.jpg)
Objektove programovanı
PokracovanıDalsı metody
procedure autom.dojed k hromade;
begin
end;
procedure autom.dojed ke KS;
begin
end;
procedure autom.stav;
begin
writeln(’Mam nosnost ’,nosnost,’ a nalozeno
’,nalozeno,’ tun...’);
end;
![Page 14: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/14.jpg)
Objektove programovanı
Tvorba instance (tedy objektu)Konec prıkladu
var liaz:autom;
begin
liaz.nosnost:=10;
liaz.nalozeno:=0;
liaz.naloz(5);
liaz.stav;
end.
![Page 15: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/15.jpg)
Objektove programovanı
Rane poznamky k objektum
Vypadajı na pohled podobne jako struktury (recordy).
Umı ovsem priradit strukturam ”funkce”, coz muze prispetk zamezenı nekompetentnı prace se ”strukturou”.
Zatım to ovsem byla jen nevinna detska hra, objekty tohoumejı mnohem vıc...
![Page 16: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/16.jpg)
Objektove programovanı
Rane poznamky k objektum
Vypadajı na pohled podobne jako struktury (recordy).
Umı ovsem priradit strukturam ”funkce”, coz muze prispetk zamezenı nekompetentnı prace se ”strukturou”.
Zatım to ovsem byla jen nevinna detska hra, objekty tohoumejı mnohem vıc...
![Page 17: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/17.jpg)
Objektove programovanı
Rane poznamky k objektum
Vypadajı na pohled podobne jako struktury (recordy).
Umı ovsem priradit strukturam ”funkce”, coz muze prispetk zamezenı nekompetentnı prace se ”strukturou”.
Zatım to ovsem byla jen nevinna detska hra, objekty tohoumejı mnohem vıc...
![Page 18: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/18.jpg)
Objektove programovanı
Privatnı a verejne prvky
Chceme-li rıdit prıstup k vybranym prvkum, pouzijeme klıcovaslova public, private a protected.
public – modifikator rıka, ze prvek je verejny, smı k nemupristupovat kazdy (jako v prıkladu).
private – oznacuje sekci neverejnych prvku. K tem se smıjen zevnitr trıdy.
protected – pochopıme pozdeji, nynı strucne: Z trıdy lzeodvodit ”potomka”, tedy trıdu specifictejsı. Do polozekprotected se smı jen ze soucasne trıdy, nebo z potomka.
Toto je zpusob, jak zabranit nekompetentnımu prıstupu doobjektu. Nepovolujte zasahovat tam, kam to nenı nutne.
Typicky se povoluje prıstup k metodam a ne k atributum, proatributy se v krajnıch prıpadech zavadejı funkce get a set.
![Page 19: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/19.jpg)
Objektove programovanı
Privatnı a verejne prvky
Chceme-li rıdit prıstup k vybranym prvkum, pouzijeme klıcovaslova public, private a protected.
public – modifikator rıka, ze prvek je verejny, smı k nemupristupovat kazdy (jako v prıkladu).
private – oznacuje sekci neverejnych prvku. K tem se smıjen zevnitr trıdy.
protected – pochopıme pozdeji, nynı strucne: Z trıdy lzeodvodit ”potomka”, tedy trıdu specifictejsı. Do polozekprotected se smı jen ze soucasne trıdy, nebo z potomka.
Toto je zpusob, jak zabranit nekompetentnımu prıstupu doobjektu. Nepovolujte zasahovat tam, kam to nenı nutne.
Typicky se povoluje prıstup k metodam a ne k atributum, proatributy se v krajnıch prıpadech zavadejı funkce get a set.
![Page 20: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/20.jpg)
Objektove programovanı
Privatnı a verejne prvky
Chceme-li rıdit prıstup k vybranym prvkum, pouzijeme klıcovaslova public, private a protected.
public – modifikator rıka, ze prvek je verejny, smı k nemupristupovat kazdy (jako v prıkladu).
private – oznacuje sekci neverejnych prvku. K tem se smıjen zevnitr trıdy.
protected – pochopıme pozdeji, nynı strucne: Z trıdy lzeodvodit ”potomka”, tedy trıdu specifictejsı. Do polozekprotected se smı jen ze soucasne trıdy, nebo z potomka.
Toto je zpusob, jak zabranit nekompetentnımu prıstupu doobjektu. Nepovolujte zasahovat tam, kam to nenı nutne.
Typicky se povoluje prıstup k metodam a ne k atributum, proatributy se v krajnıch prıpadech zavadejı funkce get a set.
![Page 21: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/21.jpg)
Objektove programovanı
Privatnı a verejne prvky
Chceme-li rıdit prıstup k vybranym prvkum, pouzijeme klıcovaslova public, private a protected.
public – modifikator rıka, ze prvek je verejny, smı k nemupristupovat kazdy (jako v prıkladu).
private – oznacuje sekci neverejnych prvku. K tem se smıjen zevnitr trıdy.
protected – pochopıme pozdeji, nynı strucne: Z trıdy lzeodvodit ”potomka”, tedy trıdu specifictejsı. Do polozekprotected se smı jen ze soucasne trıdy, nebo z potomka.
Toto je zpusob, jak zabranit nekompetentnımu prıstupu doobjektu. Nepovolujte zasahovat tam, kam to nenı nutne.
Typicky se povoluje prıstup k metodam a ne k atributum, proatributy se v krajnıch prıpadech zavadejı funkce get a set.
![Page 22: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/22.jpg)
Objektove programovanı
Privatnı a verejne prvky
Chceme-li rıdit prıstup k vybranym prvkum, pouzijeme klıcovaslova public, private a protected.
public – modifikator rıka, ze prvek je verejny, smı k nemupristupovat kazdy (jako v prıkladu).
private – oznacuje sekci neverejnych prvku. K tem se smıjen zevnitr trıdy.
protected – pochopıme pozdeji, nynı strucne: Z trıdy lzeodvodit ”potomka”, tedy trıdu specifictejsı. Do polozekprotected se smı jen ze soucasne trıdy, nebo z potomka.
Toto je zpusob, jak zabranit nekompetentnımu prıstupu doobjektu. Nepovolujte zasahovat tam, kam to nenı nutne.
Typicky se povoluje prıstup k metodam a ne k atributum, proatributy se v krajnıch prıpadech zavadejı funkce get a set.
![Page 23: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/23.jpg)
Objektove programovanı
Privatnı a verejne prvky
Chceme-li rıdit prıstup k vybranym prvkum, pouzijeme klıcovaslova public, private a protected.
public – modifikator rıka, ze prvek je verejny, smı k nemupristupovat kazdy (jako v prıkladu).
private – oznacuje sekci neverejnych prvku. K tem se smıjen zevnitr trıdy.
protected – pochopıme pozdeji, nynı strucne: Z trıdy lzeodvodit ”potomka”, tedy trıdu specifictejsı. Do polozekprotected se smı jen ze soucasne trıdy, nebo z potomka.
Toto je zpusob, jak zabranit nekompetentnımu prıstupu doobjektu. Nepovolujte zasahovat tam, kam to nenı nutne.
Typicky se povoluje prıstup k metodam a ne k atributum, proatributy se v krajnıch prıpadech zavadejı funkce get a set.
![Page 24: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/24.jpg)
Objektove programovanı
Prıklad
Jak jsme rıkali, atributy neverejne, metody verejne: typeautom=object
private nosnost,nalozeno:integer;
public procedure naloz(kolik:integer);
procedure vyloz(kolik:integer);
procedure stav;
end;
... jenze ouha! Kod:var liaz:autom;
begin liaz.nosnost:=10;
liaz.nalozeno:=0;
liaz.naloz(5);
liaz.stav;
end. ... nebude fungovat!
![Page 25: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/25.jpg)
Objektove programovanı
Opravicka problemuZachranıme to funkcı init:
type autom=object
private nosnost,nalozeno:integer;
public procedure naloz(kolik:integer);
procedure vyloz(kolik:integer);
procedure stav;
procedure init(nosn:integer);
end;
procedure autom.init(nosn:integer);
begin nosnost:=nosn; nalozeno:=0;
end;
var liaz:autom;
begin liaz.init(10);
...
end.
![Page 26: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/26.jpg)
Objektove programovanı
Prirozene zobecnenıBez dynamicke alokace to nebylo ono ani bez objektu...
V programu nam typicky nepostacı predem dany (pevny)pocet objektu.
Zpravidla na ne chceme delat pointery (jako kdyz jsme se ucilio spojovych seznamech).
Stacı, aby auto dojelo do fronty u hromady s pıskem...
Postupujeme uplne stejne, jako kdyz jsme se ucili o pointerech(potazmo spojovych seznamech):
type automobil=^autom;
autom=object;
...
end;
var liaz:automobil;
...
![Page 27: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/27.jpg)
Objektove programovanı
Prirozene zobecnenıBez dynamicke alokace to nebylo ono ani bez objektu...
V programu nam typicky nepostacı predem dany (pevny)pocet objektu.
Zpravidla na ne chceme delat pointery (jako kdyz jsme se ucilio spojovych seznamech).
Stacı, aby auto dojelo do fronty u hromady s pıskem...
Postupujeme uplne stejne, jako kdyz jsme se ucili o pointerech(potazmo spojovych seznamech):
type automobil=^autom;
autom=object;
...
end;
var liaz:automobil;
...
![Page 28: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/28.jpg)
Objektove programovanı
Prirozene zobecnenıBez dynamicke alokace to nebylo ono ani bez objektu...
V programu nam typicky nepostacı predem dany (pevny)pocet objektu.
Zpravidla na ne chceme delat pointery (jako kdyz jsme se ucilio spojovych seznamech).
Stacı, aby auto dojelo do fronty u hromady s pıskem...
Postupujeme uplne stejne, jako kdyz jsme se ucili o pointerech(potazmo spojovych seznamech):
type automobil=^autom;
autom=object;
...
end;
var liaz:automobil;
...
![Page 29: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/29.jpg)
Objektove programovanı
Prirozene zobecnenıBez dynamicke alokace to nebylo ono ani bez objektu...
V programu nam typicky nepostacı predem dany (pevny)pocet objektu.
Zpravidla na ne chceme delat pointery (jako kdyz jsme se ucilio spojovych seznamech).
Stacı, aby auto dojelo do fronty u hromady s pıskem...
Postupujeme uplne stejne, jako kdyz jsme se ucili o pointerech(potazmo spojovych seznamech):
type automobil=^autom;
autom=object;
...
end;
var liaz:automobil;
...
![Page 30: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/30.jpg)
Objektove programovanı
Prirozene zobecnenıBez dynamicke alokace to nebylo ono ani bez objektu...
V programu nam typicky nepostacı predem dany (pevny)pocet objektu.
Zpravidla na ne chceme delat pointery (jako kdyz jsme se ucilio spojovych seznamech).
Stacı, aby auto dojelo do fronty u hromady s pıskem...
Postupujeme uplne stejne, jako kdyz jsme se ucili o pointerech(potazmo spojovych seznamech):
type automobil=^autom;
autom=object;
...
end;
var liaz:automobil;
...
![Page 31: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/31.jpg)
Objektove programovanı
Dynamicky alokovane objektyPracuje se s nimi uplne prirozene:
var liaz:automobil;
begin
liaz:=new(automobil);
liaz^.init;
liaz^.naloz(5);
...
dispose(liaz);
end.
Jenze typicky pri naalokovanı (nebo odalokovanı) chceme udelatplno vecı (zinicializovat nebo uklidit). K tomu byl navrzen tzv.konstruktor, resp. destruktor.
![Page 32: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/32.jpg)
Objektove programovanı
Konstruktory a destruktory
Definujeme je podobne jako metody, ale uvedeme je klıcovymslovem constructor resp. destructor.
K jejich volanı pak dochazı pri volanı new resp. dispose.
Temto funkcım jako druhy parametr predame explicitnı volanıkonstruktoru (resp. destruktoru).
Konstruktoru i destruktoru muze byt kolik chce a mohou sejmenovat vpodstate jak chtejı.
![Page 33: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/33.jpg)
Objektove programovanı
Konstruktory a destruktory
Definujeme je podobne jako metody, ale uvedeme je klıcovymslovem constructor resp. destructor.
K jejich volanı pak dochazı pri volanı new resp. dispose.
Temto funkcım jako druhy parametr predame explicitnı volanıkonstruktoru (resp. destruktoru).
Konstruktoru i destruktoru muze byt kolik chce a mohou sejmenovat vpodstate jak chtejı.
![Page 34: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/34.jpg)
Objektove programovanı
Konstruktory a destruktory
Definujeme je podobne jako metody, ale uvedeme je klıcovymslovem constructor resp. destructor.
K jejich volanı pak dochazı pri volanı new resp. dispose.
Temto funkcım jako druhy parametr predame explicitnı volanıkonstruktoru (resp. destruktoru).
Konstruktoru i destruktoru muze byt kolik chce a mohou sejmenovat vpodstate jak chtejı.
![Page 35: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/35.jpg)
Objektove programovanı
Konstruktory a destruktory
Definujeme je podobne jako metody, ale uvedeme je klıcovymslovem constructor resp. destructor.
K jejich volanı pak dochazı pri volanı new resp. dispose.
Temto funkcım jako druhy parametr predame explicitnı volanıkonstruktoru (resp. destruktoru).
Konstruktoru i destruktoru muze byt kolik chce a mohou sejmenovat vpodstate jak chtejı.
![Page 36: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/36.jpg)
Objektove programovanı
Prıklad konstruktory a destruktoryStale auta
type automobil=^autom;
autom=object;
...
constructor init;
constructor init(nosn:integer);
destructor done;
end;
constructor init;
begin nosnost:=10;
nalozeno:=0;
writeln(’Zavolan konstruktor bez parametru!’);
end;
![Page 37: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/37.jpg)
Objektove programovanı
Prıklad – pokracovanıKonstruktory a destruktory
constructor autom.init(nosn:integer);
begin
nosnost:=nosn;
nalozeno:=0;
writeln(’Vytvoreno auto s nosnosti ’,nosnost);
end;
destructor autom.done;
begin
writeln(’Auto jede do srotu!’);
end;
![Page 38: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/38.jpg)
Objektove programovanı
Konstruktory a destruktoryPouzitı – tedy volanı
var liaz,tatra:automobil;
begin
liaz:=new(automobil,init);
liaz^.naloz(5);
liaz^.stav;
dispose(liaz,done);
tatra:=new(automobil,init(15));
dispose(tatra,done);
{Tatra nezna bratra!}end.
![Page 39: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/39.jpg)
Objektove programovanı
Objektu by zjevne bylo mozno pouzıt k implementacispojoveho seznamu.
Funkce tento seznam obhospodarujıcı by bylo mozno udrzovatjako metody.
S konstruktory odpada nutnost vyplnovat udaje ve strukturevzdycky jeden po druhe.
Abychom mohli udelat spojovy seznam samostatneimplementovany (bez globalnıch funkcı), muzeme ho udelats hlavou (a volat metody nejakeho reprezentanta tohotospojoveho seznamu).
![Page 40: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/40.jpg)
Objektove programovanı
DedicnostZmena prıkladu!
Vrat’me se k prıkladu s knihovnou. Mame tiskoviny ruznychtypu.
Spolecne majı jen to, ze se davajı do knihovny.
Muze se jednat o knihu, casopis nebo noviny.
Jednotlive typy definujeme jako potomka typu tiskovina.
Syntakticky: Za klıcove slovo object do zavorky uvedemerodice.
Semanticky: Dojde ke zdedenı vseho, cım rodic disponoval.
![Page 41: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/41.jpg)
Objektove programovanı
DedicnostZmena prıkladu!
Vrat’me se k prıkladu s knihovnou. Mame tiskoviny ruznychtypu.
Spolecne majı jen to, ze se davajı do knihovny.
Muze se jednat o knihu, casopis nebo noviny.
Jednotlive typy definujeme jako potomka typu tiskovina.
Syntakticky: Za klıcove slovo object do zavorky uvedemerodice.
Semanticky: Dojde ke zdedenı vseho, cım rodic disponoval.
![Page 42: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/42.jpg)
Objektove programovanı
DedicnostZmena prıkladu!
Vrat’me se k prıkladu s knihovnou. Mame tiskoviny ruznychtypu.
Spolecne majı jen to, ze se davajı do knihovny.
Muze se jednat o knihu, casopis nebo noviny.
Jednotlive typy definujeme jako potomka typu tiskovina.
Syntakticky: Za klıcove slovo object do zavorky uvedemerodice.
Semanticky: Dojde ke zdedenı vseho, cım rodic disponoval.
![Page 43: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/43.jpg)
Objektove programovanı
DedicnostZmena prıkladu!
Vrat’me se k prıkladu s knihovnou. Mame tiskoviny ruznychtypu.
Spolecne majı jen to, ze se davajı do knihovny.
Muze se jednat o knihu, casopis nebo noviny.
Jednotlive typy definujeme jako potomka typu tiskovina.
Syntakticky: Za klıcove slovo object do zavorky uvedemerodice.
Semanticky: Dojde ke zdedenı vseho, cım rodic disponoval.
![Page 44: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/44.jpg)
Objektove programovanı
DedicnostZmena prıkladu!
Vrat’me se k prıkladu s knihovnou. Mame tiskoviny ruznychtypu.
Spolecne majı jen to, ze se davajı do knihovny.
Muze se jednat o knihu, casopis nebo noviny.
Jednotlive typy definujeme jako potomka typu tiskovina.
Syntakticky: Za klıcove slovo object do zavorky uvedemerodice.
Semanticky: Dojde ke zdedenı vseho, cım rodic disponoval.
![Page 45: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/45.jpg)
Objektove programovanı
DedicnostZmena prıkladu!
Vrat’me se k prıkladu s knihovnou. Mame tiskoviny ruznychtypu.
Spolecne majı jen to, ze se davajı do knihovny.
Muze se jednat o knihu, casopis nebo noviny.
Jednotlive typy definujeme jako potomka typu tiskovina.
Syntakticky: Za klıcove slovo object do zavorky uvedemerodice.
Semanticky: Dojde ke zdedenı vseho, cım rodic disponoval.
![Page 46: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/46.jpg)
Objektove programovanı
Prıklad
type ptisk=^tiskovina;
tiskovina=object
nazev:string;
pocet stran:integer;
procedure zasun do knihovny;
procedure vytahni z knihovny;
ptisk next;
end;
kniha=object(tiskovina)
autor:string;
end;
casopis=object(tiskovina)
sefredaktor:string;
barevnost:boolean;
end;
...
![Page 47: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/47.jpg)
Objektove programovanı
Prıklad – pokracovanı...
noviny=object(tiskovina)
sefredaktor:string;
objem reklamy:real;
end;
Trıdy kniha, casopis i noviny zdedı spolecne udaje,
stejne jako metody pridej do knihovny avytahni z knihovny
a dokonce i ukazatel na next.
![Page 48: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/48.jpg)
Objektove programovanı
Prıklad – pokracovanı...
noviny=object(tiskovina)
sefredaktor:string;
objem reklamy:real;
end;
Trıdy kniha, casopis i noviny zdedı spolecne udaje,
stejne jako metody pridej do knihovny avytahni z knihovny
a dokonce i ukazatel na next.
![Page 49: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/49.jpg)
Objektove programovanı
Prıklad – pokracovanı...
noviny=object(tiskovina)
sefredaktor:string;
objem reklamy:real;
end;
Trıdy kniha, casopis i noviny zdedı spolecne udaje,
stejne jako metody pridej do knihovny avytahni z knihovny
a dokonce i ukazatel na next.
![Page 50: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/50.jpg)
Objektove programovanı
Prıklad – pokracovanı...
noviny=object(tiskovina)
sefredaktor:string;
objem reklamy:real;
end;
Trıdy kniha, casopis i noviny zdedı spolecne udaje,
stejne jako metody pridej do knihovny avytahni z knihovny
a dokonce i ukazatel na next.
Prıklad nasvedcuje, ze pro objekty neplatı az tak striktnıtypova kontrola, jak zname a tedy ze je mozne na synovskyobjekt si ukazat jako na rodice.
![Page 51: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/51.jpg)
Objektove programovanı
Prıklad – pokracovanı...
noviny=object(tiskovina)
sefredaktor:string;
objem reklamy:real;
end;
Trıdy kniha, casopis i noviny zdedı spolecne udaje,
stejne jako metody pridej do knihovny avytahni z knihovny
a dokonce i ukazatel na next.
V konjunkci s tım, ze je mozne pri dedenı metodypredefinovavat zacına prava objektova legrace. Zacne bytzajımave zjist’ovat, ktere metody se kdy zavolajı a jak se dobytk tem spravnym.
![Page 52: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/52.jpg)
Objektove programovanı
Prıklad – pokracovanı...
noviny=object(tiskovina)
sefredaktor:string;
objem reklamy:real;
end;
Trıdy kniha, casopis i noviny zdedı spolecne udaje,
stejne jako metody pridej do knihovny avytahni z knihovny
a dokonce i ukazatel na next.
K tomu pouzijeme tzv. virtualnı metody.
![Page 53: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/53.jpg)
Objektove programovanı
Zapouzdrenı, polymorfismus, dedicnost
Zapouzdrenı (encapsulation) odkazuje k tomu, ze atributy”zijı”v dotycnem objektu a metody pracujı nad datyprıslusneho objektu. Nekdy se tak mluvı i o tom, ze objekt jezvenku urcitym zpusobem chraneny.
Polymorfismus – synovske trıdy se mohou chovat urcitymzpusobem odlisne, nez rodicovske trıdy. Muzeme metodypredefinovavat a prekryvat.
Dedicnost nam umoznuje definovat trıdu jako sablonu urcujıcı,jak majı byt definovany spolecne rysy synovskych trıd. Toovsem nenı vsechno.
Pointerem na rodicovsky typ je mozno ukazat na syna. Anynı, co z toho vsechno plyne?
![Page 54: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/54.jpg)
Objektove programovanı
Zapouzdrenı, polymorfismus, dedicnost
Zapouzdrenı (encapsulation) odkazuje k tomu, ze atributy”zijı”v dotycnem objektu a metody pracujı nad datyprıslusneho objektu. Nekdy se tak mluvı i o tom, ze objekt jezvenku urcitym zpusobem chraneny.
Polymorfismus – synovske trıdy se mohou chovat urcitymzpusobem odlisne, nez rodicovske trıdy. Muzeme metodypredefinovavat a prekryvat.
Dedicnost nam umoznuje definovat trıdu jako sablonu urcujıcı,jak majı byt definovany spolecne rysy synovskych trıd. Toovsem nenı vsechno.
Pointerem na rodicovsky typ je mozno ukazat na syna. Anynı, co z toho vsechno plyne?
![Page 55: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/55.jpg)
Objektove programovanı
Zapouzdrenı, polymorfismus, dedicnost
Zapouzdrenı (encapsulation) odkazuje k tomu, ze atributy”zijı”v dotycnem objektu a metody pracujı nad datyprıslusneho objektu. Nekdy se tak mluvı i o tom, ze objekt jezvenku urcitym zpusobem chraneny.
Polymorfismus – synovske trıdy se mohou chovat urcitymzpusobem odlisne, nez rodicovske trıdy. Muzeme metodypredefinovavat a prekryvat.
Dedicnost nam umoznuje definovat trıdu jako sablonu urcujıcı,jak majı byt definovany spolecne rysy synovskych trıd. Toovsem nenı vsechno.
Pointerem na rodicovsky typ je mozno ukazat na syna. Anynı, co z toho vsechno plyne?
![Page 56: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/56.jpg)
Objektove programovanı
Zapouzdrenı, polymorfismus, dedicnost
Zapouzdrenı (encapsulation) odkazuje k tomu, ze atributy”zijı”v dotycnem objektu a metody pracujı nad datyprıslusneho objektu. Nekdy se tak mluvı i o tom, ze objekt jezvenku urcitym zpusobem chraneny.
Polymorfismus – synovske trıdy se mohou chovat urcitymzpusobem odlisne, nez rodicovske trıdy. Muzeme metodypredefinovavat a prekryvat.
Dedicnost nam umoznuje definovat trıdu jako sablonu urcujıcı,jak majı byt definovany spolecne rysy synovskych trıd. Toovsem nenı vsechno.
Pointerem na rodicovsky typ je mozno ukazat na syna. Anynı, co z toho vsechno plyne?
![Page 57: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/57.jpg)
Objektove programovanı
Rodic ukazuje na syna
type zvire=^zv;
zv=object
vek:integer;
procedure kdotam;
next:zvire;
end;
pes=^p;
p=object(zv)
procedure hlidej;
end;
kocka=^k;
k=object(zv)
procedure chyt drzou mys;
end;
![Page 58: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/58.jpg)
Objektove programovanı
procedure zv.kdotam;
begin
writeln(’Ja ’’sem ale zvire!’);
end;
procedure p.hlidej;
begin
writeln(’Haf, baf!’);
end;
procedure k.sezer drzou mys;
begin
writeln(’Kocka kolotocka dela ham!’);
end;
![Page 59: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/59.jpg)
Objektove programovanı
Hlavnı program
var zverinec:zvire;
begin
zverinec:=new(zvire);
zverinec^.next:=new(kocka);
zverinec^.kdotam;
zverinec^.next^.kdotam;
end.
![Page 60: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/60.jpg)
Objektove programovanı
Vyuzitı dedicnosti
Dedicnost muzeme pouzıt jako sablonu na jednotlive(synovske) trıdy.
Jde tedy o neco jako variantnı record z minuta!
Jenze k tomu mısto definovanı novych trıd budeme chtıtpredefinovavat stare metody,...
... coz kupodivu lze.
![Page 61: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/61.jpg)
Objektove programovanı
Predefinovavanı metodMinuly prıklad
type zvire=^zv;
zv=object
vek:integer;
procedure kdotam;
next:zvire;
end;
pes=^p;
p=object(zv)
procedure hlidej;
end;
kocka=^k;
k=object(zv)
procedure chyt drzou mys;
end;
![Page 62: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/62.jpg)
Objektove programovanı
Predefinovavanı metodA hle, metody se jmenujı stejne!
type zvire=^zv;
zv=object
vek:integer;
procedure kdotam;
next:zvire;
end;
pes=^p;
p=object(zv)
procedure kdotam;
end;
kocka=^k;
k=object(zv)
procedure kdotam;
end;
![Page 63: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/63.jpg)
Objektove programovanı
Ale co udela program?
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
Ouha:Ja ’sem ale zvıre!Proc?
Protoze jednotlive metody se hledajı v prototypu (tedyv popisu prıslusne trıdy, v tomto prıpade zvire).Jak z toho?
![Page 64: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/64.jpg)
Objektove programovanı
Ale co udela program?
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
Ouha:Ja ’sem ale zvıre!Proc?
Protoze jednotlive metody se hledajı v prototypu (tedyv popisu prıslusne trıdy, v tomto prıpade zvire).Jak z toho?
![Page 65: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/65.jpg)
Objektove programovanı
Ale co udela program?
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
Ouha:Ja ’sem ale zvıre!Proc?
Protoze jednotlive metody se hledajı v prototypu (tedyv popisu prıslusne trıdy, v tomto prıpade zvire).Jak z toho?
![Page 66: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/66.jpg)
Objektove programovanı
Ale co udela program?
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
Ouha:Ja ’sem ale zvıre!Proc?
Protoze jednotlive metody se hledajı v prototypu (tedyv popisu prıslusne trıdy, v tomto prıpade zvire).Jak z toho?
![Page 67: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/67.jpg)
Objektove programovanı
Ale co udela program?
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
Ouha:Ja ’sem ale zvıre!Proc?
Protoze jednotlive metody se hledajı v prototypu (tedyv popisu prıslusne trıdy, v tomto prıpade zvire).Jak z toho?
![Page 68: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/68.jpg)
Objektove programovanı
Virtualnı funkce
Virtualnı metody se nehledajı v prototypu, nybrz kazdy objektma tabulku virtualnıch metod (alias VMT), ve ktere jsoupointery na jednotlive virtualnı funkce.
Funkci kdotam tedy udelame virtualnı (zejmena ve trıdezvire, pak uz ale bude virtualnı i v synovskych trıdach).
![Page 69: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/69.jpg)
Objektove programovanı
Virtualnı funkce
Virtualnı metody se nehledajı v prototypu, nybrz kazdy objektma tabulku virtualnıch metod (alias VMT), ve ktere jsoupointery na jednotlive virtualnı funkce.
Funkci kdotam tedy udelame virtualnı (zejmena ve trıdezvire, pak uz ale bude virtualnı i v synovskych trıdach).
![Page 70: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/70.jpg)
Objektove programovanı
Predefinovavanı metodA hle, metody jsou virtualnı!
type zvire=^zv;
zv=object
vek:integer;
procedure kdotam; virtual;
next:zvire;
end;
pes=^p;
p=object(zv)
procedure kdotam; virtual;
end;
kocka=^k;
k=object(zv)
procedure kdotam; virtual;
end;
![Page 71: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/71.jpg)
Objektove programovanı
Volanı virtualnıch metod
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
’Kocka kolotocka’
Virtualnı metoda se hleda ve VMT, kde je adresa kdotam odtypu kocka.
![Page 72: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/72.jpg)
Objektove programovanı
Volanı virtualnıch metod
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
’Kocka kolotocka’
Virtualnı metoda se hleda ve VMT, kde je adresa kdotam odtypu kocka.
![Page 73: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/73.jpg)
Objektove programovanı
Volanı virtualnıch metod
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
’Kocka kolotocka’
Virtualnı metoda se hleda ve VMT, kde je adresa kdotam odtypu kocka.
![Page 74: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/74.jpg)
Objektove programovanı
Volanı virtualnıch metod
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
’Kocka kolotocka’
Virtualnı metoda se hleda ve VMT, kde je adresa kdotam odtypu kocka.
![Page 75: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/75.jpg)
Objektove programovanı
Volanı virtualnıch metod
var zv:zvire; zv:=new(zvire);
Vytvorıme nove zvıre.
zv^.kdotam;
Ja ’sem ale zvıre!
zv:=new(kocka);
v poradku, prirazujeme syna do rodice.
zv^.kdotam;
’Kocka kolotocka’
Virtualnı metoda se hleda ve VMT, kde je adresa kdotam odtypu kocka.
![Page 76: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/76.jpg)
Objektove programovanı
Poznamky
Pokud nerekneme, ze metoda ma byt v synovskych metodachvirtualnı, prekladac to bud’to sam pochopı, nebo neprelozı(GPC vydedukuje). Pri divocejsım predefinovavanı virtualnıchmetod nevirtualnımi muzeme mıt problemy.
Pokud ma synovska trıda (na kterou si ukazujeme pomocırodicovskeho typu) destruktor, je potreba, aby tento bylvirtualnı!
![Page 77: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/77.jpg)
Objektove programovanı
Poznamky
Pokud nerekneme, ze metoda ma byt v synovskych metodachvirtualnı, prekladac to bud’to sam pochopı, nebo neprelozı(GPC vydedukuje). Pri divocejsım predefinovavanı virtualnıchmetod nevirtualnımi muzeme mıt problemy.
Pokud ma synovska trıda (na kterou si ukazujeme pomocırodicovskeho typu) destruktor, je potreba, aby tento bylvirtualnı!
![Page 78: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/78.jpg)
Objektove programovanı
Funkce typeof
Tım, ze muzeme priradit syna do rodice nam vznikaneporadek. Obcas chceme vedet, na jaky typ si ukazujeme.
K tomu je funkce typeof, ktere predame strukturu nebojmeno trıdy:
if typeof(zv^)=typeof(k) then writeln(’Je to
kocka!’);
Takto muzeme naprıklad implementovat spojovy seznams hlavou pomocı objektu, kde hlavu si oznacıme specialnımtypem.
Prıklad lze najıt na strankach kolegy Kryla.
![Page 79: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/79.jpg)
Objektove programovanı
Funkce typeof
Tım, ze muzeme priradit syna do rodice nam vznikaneporadek. Obcas chceme vedet, na jaky typ si ukazujeme.
K tomu je funkce typeof, ktere predame strukturu nebojmeno trıdy:
if typeof(zv^)=typeof(k) then writeln(’Je to
kocka!’);
Takto muzeme naprıklad implementovat spojovy seznams hlavou pomocı objektu, kde hlavu si oznacıme specialnımtypem.
Prıklad lze najıt na strankach kolegy Kryla.
![Page 80: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/80.jpg)
Objektove programovanı
Funkce typeof
Tım, ze muzeme priradit syna do rodice nam vznikaneporadek. Obcas chceme vedet, na jaky typ si ukazujeme.
K tomu je funkce typeof, ktere predame strukturu nebojmeno trıdy:
if typeof(zv^)=typeof(k) then writeln(’Je to
kocka!’);
Takto muzeme naprıklad implementovat spojovy seznams hlavou pomocı objektu, kde hlavu si oznacıme specialnımtypem.
Prıklad lze najıt na strankach kolegy Kryla.
![Page 81: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/81.jpg)
Objektove programovanı
Funkce typeof
Tım, ze muzeme priradit syna do rodice nam vznikaneporadek. Obcas chceme vedet, na jaky typ si ukazujeme.
K tomu je funkce typeof, ktere predame strukturu nebojmeno trıdy:
if typeof(zv^)=typeof(k) then writeln(’Je to
kocka!’);
Takto muzeme naprıklad implementovat spojovy seznams hlavou pomocı objektu, kde hlavu si oznacıme specialnımtypem.
Prıklad lze najıt na strankach kolegy Kryla.
![Page 82: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/82.jpg)
Objektove programovanı
Funkce typeof
Tım, ze muzeme priradit syna do rodice nam vznikaneporadek. Obcas chceme vedet, na jaky typ si ukazujeme.
K tomu je funkce typeof, ktere predame strukturu nebojmeno trıdy:
if typeof(zv^)=typeof(k) then writeln(’Je to
kocka!’);
Takto muzeme naprıklad implementovat spojovy seznams hlavou pomocı objektu, kde hlavu si oznacıme specialnımtypem.
Prıklad lze najıt na strankach kolegy Kryla.
![Page 83: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/83.jpg)
Objektove programovanı
Ciste virtualnı funkce, abstraktnı trıdy
Jde o metody, ktere nechceme definovat (spolecny predekslouzı jen jako sablona).
Ciste virtualnı funkce je virtualnı funkce, kterou nechcemedefinovat v rodicovskem typu, ale chceme, aby byla ve vsechsynovskych typech prekryta mıstnı virtualnı funkcı.
V Pascalu stojı na dobrovolnosti (funkce definujeme jakoRunError).
Zpravidla (v modernıch objektovych jazycıch) je syntaktickapodpora a naprıklad v C++ nelze vubec definovat promennoutakoveho typu.
Trıda obsahujıcı aspon jednu ciste virtualnı funkci se nazyvaabstraktnı.
![Page 84: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/84.jpg)
Objektove programovanı
Ciste virtualnı funkce, abstraktnı trıdy
Jde o metody, ktere nechceme definovat (spolecny predekslouzı jen jako sablona).
Ciste virtualnı funkce je virtualnı funkce, kterou nechcemedefinovat v rodicovskem typu, ale chceme, aby byla ve vsechsynovskych typech prekryta mıstnı virtualnı funkcı.
V Pascalu stojı na dobrovolnosti (funkce definujeme jakoRunError).
Zpravidla (v modernıch objektovych jazycıch) je syntaktickapodpora a naprıklad v C++ nelze vubec definovat promennoutakoveho typu.
Trıda obsahujıcı aspon jednu ciste virtualnı funkci se nazyvaabstraktnı.
![Page 85: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/85.jpg)
Objektove programovanı
Ciste virtualnı funkce, abstraktnı trıdy
Jde o metody, ktere nechceme definovat (spolecny predekslouzı jen jako sablona).
Ciste virtualnı funkce je virtualnı funkce, kterou nechcemedefinovat v rodicovskem typu, ale chceme, aby byla ve vsechsynovskych typech prekryta mıstnı virtualnı funkcı.
V Pascalu stojı na dobrovolnosti (funkce definujeme jakoRunError).
Zpravidla (v modernıch objektovych jazycıch) je syntaktickapodpora a naprıklad v C++ nelze vubec definovat promennoutakoveho typu.
Trıda obsahujıcı aspon jednu ciste virtualnı funkci se nazyvaabstraktnı.
![Page 86: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/86.jpg)
Objektove programovanı
Ciste virtualnı funkce, abstraktnı trıdy
Jde o metody, ktere nechceme definovat (spolecny predekslouzı jen jako sablona).
Ciste virtualnı funkce je virtualnı funkce, kterou nechcemedefinovat v rodicovskem typu, ale chceme, aby byla ve vsechsynovskych typech prekryta mıstnı virtualnı funkcı.
V Pascalu stojı na dobrovolnosti (funkce definujeme jakoRunError).
Zpravidla (v modernıch objektovych jazycıch) je syntaktickapodpora a naprıklad v C++ nelze vubec definovat promennoutakoveho typu.
Trıda obsahujıcı aspon jednu ciste virtualnı funkci se nazyvaabstraktnı.
![Page 87: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/87.jpg)
Objektove programovanı
Ciste virtualnı funkce, abstraktnı trıdy
Jde o metody, ktere nechceme definovat (spolecny predekslouzı jen jako sablona).
Ciste virtualnı funkce je virtualnı funkce, kterou nechcemedefinovat v rodicovskem typu, ale chceme, aby byla ve vsechsynovskych typech prekryta mıstnı virtualnı funkcı.
V Pascalu stojı na dobrovolnosti (funkce definujeme jakoRunError).
Zpravidla (v modernıch objektovych jazycıch) je syntaktickapodpora a naprıklad v C++ nelze vubec definovat promennoutakoveho typu.
Trıda obsahujıcı aspon jednu ciste virtualnı funkci se nazyvaabstraktnı.
![Page 88: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/88.jpg)
Objektove programovanı
Prıklad ciste virt. metody
Naprıklad kazda ziva hmota dycha. Je ale otazka, jestli dychakyslık nebo oxid uhlicity a jestli dycha zabrami nebo usty(kyslık ze vzduchu nebo ten rozpusteny ve vode).
Typu ziva hmota tak definujeme metodu dychej, ktera budeciste virtualnı a bude muset byt ve vsech synovskych trıdachprekryta.
![Page 89: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/89.jpg)
Objektove programovanı
Prıklad ciste virt. metody
Naprıklad kazda ziva hmota dycha. Je ale otazka, jestli dychakyslık nebo oxid uhlicity a jestli dycha zabrami nebo usty(kyslık ze vzduchu nebo ten rozpusteny ve vode).
Typu ziva hmota tak definujeme metodu dychej, ktera budeciste virtualnı a bude muset byt ve vsech synovskych trıdachprekryta.
![Page 90: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/90.jpg)
Objektove programovanı
Objekt self, operator vzetı pointeru
Rıkali jsme si o konstruktorech a destruktorech. Konstruktorcasto udelal plno uzitecne prace, naprıklad...
pridal prvek do spojoveho seznamu (obousmerneho). Jenzejak to udelal?
type spojak=^sp; sp=object
hod:longint; prev,next:spojak;
...
constructor init(h:longint;p,n:spojak);
begin hod:=h; next:=n; prev:=p;
end;
Stacı to takhle?
Spravne, naslednık a predchudce neukazuje na nas. Jak tozalepit?
![Page 91: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/91.jpg)
Objektove programovanı
Objekt self, operator vzetı pointeru
Rıkali jsme si o konstruktorech a destruktorech. Konstruktorcasto udelal plno uzitecne prace, naprıklad...
pridal prvek do spojoveho seznamu (obousmerneho). Jenzejak to udelal?
type spojak=^sp; sp=object
hod:longint; prev,next:spojak;
...
constructor init(h:longint;p,n:spojak);
begin hod:=h; next:=n; prev:=p;
end;
Stacı to takhle?
Spravne, naslednık a predchudce neukazuje na nas. Jak tozalepit?
![Page 92: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/92.jpg)
Objektove programovanı
Objekt self, operator vzetı pointeru
Rıkali jsme si o konstruktorech a destruktorech. Konstruktorcasto udelal plno uzitecne prace, naprıklad...
pridal prvek do spojoveho seznamu (obousmerneho). Jenzejak to udelal?
type spojak=^sp; sp=object
hod:longint; prev,next:spojak;
...
constructor init(h:longint;p,n:spojak);
begin hod:=h; next:=n; prev:=p;
end;
Stacı to takhle?
Spravne, naslednık a predchudce neukazuje na nas. Jak tozalepit?
![Page 93: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/93.jpg)
Objektove programovanı
Objekt self, operator vzetı pointeru
Rıkali jsme si o konstruktorech a destruktorech. Konstruktorcasto udelal plno uzitecne prace, naprıklad...
pridal prvek do spojoveho seznamu (obousmerneho). Jenzejak to udelal?
type spojak=^sp; sp=object
hod:longint; prev,next:spojak;
...
constructor init(h:longint;p,n:spojak);
begin hod:=h; next:=n; prev:=p;
end;
Stacı to takhle?
Spravne, naslednık a predchudce neukazuje na nas. Jak tozalepit?
![Page 94: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/94.jpg)
Objektove programovanı
Pomocı objektu self, ktery odkazuje k soucasnemu objektu.
A pomocı operatoru vzetı pointeru @.
Takhle: next^.prev:=@self;prev^.next:=@self;
Takto tedy muzeme v prıpade potreby odkazat k soucasnemuobjektu.
Samozrejme operatorem vzetı pointeru muzeme vytvoritpointer na cokoliv (podobne jako operatorem strısky muzemejakykoliv (negenericky) pointer dereferencovat).
![Page 95: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/95.jpg)
Objektove programovanı
Pomocı objektu self, ktery odkazuje k soucasnemu objektu.
A pomocı operatoru vzetı pointeru @.
Takhle: next^.prev:=@self;prev^.next:=@self;
Takto tedy muzeme v prıpade potreby odkazat k soucasnemuobjektu.
Samozrejme operatorem vzetı pointeru muzeme vytvoritpointer na cokoliv (podobne jako operatorem strısky muzemejakykoliv (negenericky) pointer dereferencovat).
![Page 96: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/96.jpg)
Objektove programovanı
Pomocı objektu self, ktery odkazuje k soucasnemu objektu.
A pomocı operatoru vzetı pointeru @.
Takhle: next^.prev:=@self;prev^.next:=@self;
Takto tedy muzeme v prıpade potreby odkazat k soucasnemuobjektu.
Samozrejme operatorem vzetı pointeru muzeme vytvoritpointer na cokoliv (podobne jako operatorem strısky muzemejakykoliv (negenericky) pointer dereferencovat).
![Page 97: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/97.jpg)
Objektove programovanı
Pomocı objektu self, ktery odkazuje k soucasnemu objektu.
A pomocı operatoru vzetı pointeru @.
Takhle: next^.prev:=@self;prev^.next:=@self;
Takto tedy muzeme v prıpade potreby odkazat k soucasnemuobjektu.
Samozrejme operatorem vzetı pointeru muzeme vytvoritpointer na cokoliv (podobne jako operatorem strısky muzemejakykoliv (negenericky) pointer dereferencovat).
![Page 98: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/98.jpg)
Objektove programovanı
Pomocı objektu self, ktery odkazuje k soucasnemu objektu.
A pomocı operatoru vzetı pointeru @.
Takhle: next^.prev:=@self;prev^.next:=@self;
Takto tedy muzeme v prıpade potreby odkazat k soucasnemuobjektu.
Samozrejme operatorem vzetı pointeru muzeme vytvoritpointer na cokoliv (podobne jako operatorem strısky muzemejakykoliv (negenericky) pointer dereferencovat).
![Page 99: Anotace - kam.mff.cuni.czperm/programovani/old/2015-16/NMIN102/slidy11.pdfRan e pozn amky k objekt um Vypadaj na pohled podobn e jako struktury (recordy). Um ov sem p ri radit struktur](https://reader033.fdocuments.net/reader033/viewer/2022041416/5e1b7389b9e96c65bc59e514/html5/thumbnails/99.jpg)
Objektove programovanı
Konec...dekuji za pozornost...
Otazky?