OOP 1

39. hodina PVA


Matěj Cajthaml — SSPŠ

©

Opakování

K čemu slouží třída Random?
Jak zjistíme na jakém indexu se nachází první hodnota v listu?
Kolikrát můžeme používat blok catch?
Jaké dva typy vícedimenzionálních polí známe?
Jak ve WPF fungují události?

Jak můžeme kód rozdělit na menší celky?

Co je to funkce, kterou znáte z matematiky?

Funkce

  • krabička
  • vstupní data → výstupní data
  • rozdělení kódu do více části
  • mohou se volat nezávisle

Příkaz return

  • podobný příkaz jako např. break
  • ukončí aktuální funkci a vrátí předanou hodnotu
  • případně nevrátí nic
  • kód za tímto blokem již nebude zavolán

Jednoduchá ukázka funkce

Vytvoření

  • každé funkci definujeme:
    • návratový (datový) typ
    • název
    • parametry

Parametry

  • ke každé funkci můžeme definovat vstupní hodnoty
  • tím říkáme parametry
  • parametr musí mít vždy datový typ a název
  • daný parametr bude proměnná, kterou můžeme využívat

Parametry

Parametry

Návratový typ

  • jako funkce v matematice
  • na nějaký vstup vrací nějaký výstup
  • výstup:
    • jedna hodnota
    • určujeme datovým typem
  • daný výstup při zavolání můžeme uložit či s ním dále pracovat

Návratový typ

Návratový typ void

  • někdy chceme, aby funkce nic nevracela
  • nastavíme datový typ na void
  • výstup z funkce nelze uložit
  • ve funkci nemůžeme používat return s hodnotou
  • např. vytvoření souboru

Návratový typ void

Modifikátor static

Aktuálně musíme před funkce v konzolových aplikací psát static, proč tomu tak je, si vysvětlíme později.

Proč používáme funkce?

Neviděli jsme již někde funkce?

Jak můžeme kód rozdělit na menší celky?

Hvězdičky

Práce

Napište funkci, která do konzole vypíše n-krát hvězdičku dle parametru.

Znaky

Práce

Napište funkci, která do konzole vypíše n-krát znak z dle parametrů.

Odduplikace

Práce

Napište funkci, která z parametrů získá stringové pole a z něj odstraní duplicity.

Rozdělení klasické konzolové aplikace

Co je to objektově orientované programování?

Způsoby programování

  • programovací paradigmata
  • přístup k tvorbě programů
  • většina jazyků podporuje více paradigmat

  • objektově orientované programování (OOP)
  • datově orientované programování
  • funkcionálně orientované programování

OOP není jediný správný způsob programování.

My budeme cílit pouze na OOP

K pochopení ostatních typů programování je potřeba tyto základy znát.

Myšlenky OOP

  • obyčejný kód je nepřehledný a velmi těžko se spravuje
  • rozdělíme kód na menší části (jako funkce)
  • všechno bude v určitých balíčkách (objektech)
  • data lze rozdělit do opakujících se balíčků

OOP

  • OOP se skládá z:
    • tříd — class
    • instancí / objektů — instance / object
    • metod — method

Třídy

Můžeme si představit jako šablony či formuláře

Celý formulář

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

Třídy

  • šablona / formulář
  • má jméno
  • podle které se vytváří nějaké balíčky dat
  • v každé třídě definujeme vlastnosti — proměnné
    • tyto vlastnosti bude mít každé vytvoření podle třídy
    • mají jméno a datový typ

Třídy v C#

Jak se tedy liší Třída a Struktura?

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

Instance

  • již známe ze struktur
  • vytvoříme dle šablony (třídy) objekt
  • daný objekt bude mít dané vlastnosti
  • k vlastnostem přistupujeme pomocí .

Instance v C#

Modifikátor 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.

Kruhy a obdelníky

Práce

Vytvořte třídu pro uchovávání informací pro obdelníky a kruhy.

Vaší implementaci vyzkoušejte na nějakých instancí (vytvořte je).

E-maily

Práce

Vytvořte třídy, které budou představovat e-mailovou stránku. Tedy, vytvořte uživatele (schránku), e-mail a například třídu pro přílohy. Třídy propojte.

Vaší implementaci vyzkoušejte na nějakých instancí (vytvořte je).

Školy

Práce

Vytvořte třídy pro evidenci školy, tedy, třídu pro studenty, učitele a školu. Třídy propojte.

Vaší implementaci vyzkoušejte na nějakých instancí (vytvořte je).

Co je to objektově orientované programování?

Děkuji za pozornost!

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