OOP 4

49. hodina PVA


Matěj Cajthaml — SSPŠ

©

Opakování

K čemu slouží modifikátor viditelnosti protected?
Z kolika tříd můžeme dědit?
Jak se liší \n a \r\n? Kde se používají?
Jak převedeme nějakou hodnotu na textový řetězec?
Jaké jsou nevýhody výjimek?

Bude to fungovat?

Co to vypíše do konzole?

Přepsání metod

  • způsob úpravy metod děděných tříd
  • upravíme, co bude daná metoda dělat
  • máme tři typy
  • typy se liší dle toho jak abstrakce mění jejich volání

Skrytí — new

  • skryjeme již existující metodu s nějakým kódem
  • dědic bude moci používat nově definovanou, stará bude k dispozici jen pomocí base
  • stačí použít stejnou metodu se stejným:
    • jménem
    • argumenty
    • návratovým datovým typem
  • zmenšení na děděnou třídu nám skrytí resetuje
  • metody často označujeme pomocí new

Co to vypíše do konzole?

Virtuální — virtual

  • modifikátorem virtual označujeme metodu, která se může prepsat
  • při změněne kontextu třídy nám zůstane metoda k dispozici
  • třídu nemusíme přepisovat, pokud nebudeme chtít
  • používáme klíčová slova 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?

Abstraktní — abstract

  • metoda z abstraktní třídy nemá tělo (kód, tj. příkazy)
  • metodu kterou budeme přepisovat označujeme abstract
  • metodu přepisujeme pomocí override
  • metodu musí dědic PŘEPSAT, tj. ji definovat

Abstraktní třídy

  • nemohou existovat samostatně
  • můžeme je však referovat v kódu

Může mít abstraktní třída neabstraktní metodu?

Polymorfismus

  • (klasický buzz-word)
  • mnoho tvarů
  • základní dvě ideologie:
    • objekty mohou být odpojeny od své původní třídy a být reprezentovány tou zděděnou
    • základní třídy mohou definovat virtuální nebo abstraktní metodu, kterou dědic může přepsat a zapříčinit vlastní chování

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í.

Polymorfismus

Práce

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é?

Statičnost

  • = neměnné, stále
  • v programování jsou statické věci nevázané
  • v C# máme statické:
    • vlastnosti
    • metody
    • (třídy)
  • používáme 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.

Statické vlastnosti

Statické metody

TENTO KÓD JE ŠPATNĚ. PROČ?

Statické třídy

  • označujeme static
  • nelze z nich vytvořit instance
  • nad rámec toho předmětu

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?

Statičnost

Práce

Vymyslete program, ve kterém použijete statické vlastnosti a (nebo) metody.

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/