PVA1
Bc. Matěj Cajthaml — SSPŠ
©
OOP není jediný správný způsob programování.
K pochopení ostatních typů programování je potřeba tyto základy znát.
class
instance
/ object
method
Můžeme si představit jako šablony či formuláře
Co na těchto formulářích vidíte?
Co vám každý tento formulář zaručuje?
a to přesně třídy dělají!
Při definici třídy se stane jméno třídy klíčové a bude datovým typem.
Vlastnosti pojmenováváme jednotným stylem a nejlépe v angličtině.
.
public
Prozatím před všechny vlastnosti dáváme modifikátor public
. Proč to děláme, si
vysvětlíme později.
Ve třídě můžeme ve vlastnosti použít i jinou třídu.
Instance jsou vlastní balíčky dat — data si nepředávají a nesdílejí je.
void
this
Jaký modifikátor viditelnosti mají prvky třídy, když jej neurčíme?
K čemu se nám modifikátor viditelnosti hodí?
K čemu se nám konstruktory hodí?
Můžeme mít více konstruktorů?
K čemu by nám byly?
Můžeme vytvořit privátní konstruktor?
K čemu by nám byl?
Třídy lze vytvářet ve vlastních souborech.
VS nám dovoluje automaticky generovat konstruktor.
K čemu by se mohla dědičnost hodit?
a co kdybychom chtěli něco přidat do prvního řešení?
is
můžeme zkontrolovat, zda je instance z nějaké
třídy
Aktuální dědičnost dovoluje dědit pouze vlastnosti, které jsou public
.
private
se nenabízí, proč tomu tak je?
protected
private
K čemu nám slouží konstuktory?
base
Lze dědit jen z jedné třídy.
Všechny třídy nakonec dědí ze třídy Object
.
base
volá nadřazený konstruktor, který může volat jeho nadřazený konstruktor a tak
dále.
Bude to fungovat?
Co to vypíše do konzole?
new
base
new
Co to vypíše do konzole?
virtual
virtual
označujeme metodu, která se může prepsat
override
a virtual
Co to vypíše do konzole?
Jaký je rozdíl mezi tímto přístupem a virtuálním přepsáním?
abstract
abstract
override
Může mít abstraktní třída neabstraktní metodu?
mnoho tvarů
Neviděli jsme již někde polymorfismus?
Polymorfismus tedy zapříčíní že podobné objekty mají společného předka, který definuje metodu, kterou dědicové přepisují pro vlastní (podobné) chování.
Vymyslete vlastní polymorfismus pro nějaký příklad. Napište program (třídy, případně použití), kde polymorfismus použijete.
Co znamená slovo statické?
nevázané
static
Statické vlastnosti a metody nejsou vázané na instanci (objekt) ale na třídu. K přístupu používáme jméno třídy.
TENTO KÓD JE ŠPATNĚ. PROČ?
static
Neviděli jsme ještě před touto hodinou někde něco statického?
K čemu se statické vlastnosti a metody hodí?
Může existovat privátní statická vlastnost?
Vymyslete program, ve kterém použijete statické vlastnosti a (nebo) metody.
TBD
TBD