Zhrnutie na Základy programovania v Scratchi
Základy programovania v Scratchi: Kompletný Sprievodca
Úvod
Tento materiál porovnáva koncepty objektovo orientovaného programovania (OOP) s tým, ako fungujú postavy a logika v prostredí Scratch. Cieľom je ukázať paralely medzi triedami, objektmi, atribútmi a metódami v OOP a ekvivalentmi v Scratchi, vysvetliť obmedzenia a poukázať na praktické príklady použitia vlastných premenných a klonov.
Základné pojmy a paralely
Definícia: Trieda (class) v OOP je šablóna popisujúca atribúty a metódy; objekt je konkrétna inštancia tejto triedy.
Definícia: V Scratchi je postava (sprite) entita, ktorá obsahuje svoj vzhľad, skripty a vlastné premenné; správa sa zároveň ako trieda aj ako konkrétny objekt.
Trieda vs. postava (class vs. sprite)
- OOP: trieda definuje spoločné vlastnosti a správanie. Objekt je inštancia triedy.
- Scratch: každá postava má svoje vlastné skripty (metódy), vlastné premenné (atribúty) a kostýmy (vzhľad). Scratch nemá explicitné triedy, ale správanie postáv zodpovedá kombinácii triedy + objektu.
| Koncept OOP | Ekvivalent v Scratchi | Poznámka |
|---|---|---|
| trieda (class) | postava (sprite) — implicitne | Scratch nepriamo kombinuje šablónu a inštanciu |
| objekt (instance) | klon postavy alebo samotná postava | klony zdedia skripty pôvodnej postavy |
| atribúty (atribúty/fields) | vlastné premenné postavy | môžu byť lokálne pre postavu alebo globálne |
| metódy | skripty/bloky | riadené udalosťami (event-driven) |
| komunikácia medzi objektmi | posielanie správ (broadcast) | správy aktivujú skripty iných postáv |
| dedičnosť | nie je priamo podporovaná | napodobňovanie cez zdieľané bloky alebo správy |
Atribúty (premenné) a ich rozsah
- V OOP sú atribúty uložené v objekte (napr. $self.x$, meno, vek).
- V Scratchi pri vytváraní premennej vyberáme, či bude globálna (platí pre všetky postavy) alebo lokálna / vlastná premenná postavy (platí len pre danú postavu a jej klony).
Definícia: Globálna premenná je premenná viditeľná pre všetky postavy; lokálna (vlastná) premenná je viazaná iba na jednu postavu alebo jej klony.
Použitie:
- Globálne premenné: skóre, čas, stav hry.
- Lokálne premenné: zdravie alebo rýchlosť konkrétneho hráča/klonu.
Metódy a skripty
- OOP: metódy definujú správanie objektu, napr. $def\ pohyb(self):$.
- Scratch: skripty (sekvencie blokov) postavy fungujú ako metódy, ale sú spúšťané udalosťami: kliknutie, prijatie správy, podmienka.
Komunikácia medzi objektmi:
- V OOP objekty volajú metódy iných objektov.
- V Scratchi postavy medzi sebou komunikujú pomocou posielania správ (broadcast), ktoré spúšťajú skripty iných postáv.
Dedičnosť a jej obmedzenia
- Scratch nepodporuje priamu dedičnosť tried ako v tradičnom OOP.
- Napodobenie dedičnosti možno dosiahnuť:
- Vytvorením zdieľaných vlastných blokov (custom blocks) používaných viacerými postavami
- Posielaním správ na koordináciu správania
- Zdieľaním skriptov medzi postavami manuálnym kopírovaním
Kedy to obmedzenie znevýhodní riešenie
- Ak potrebujete komplexnú hierarchiu tried s premennými a prepísaním metód.
- Keď chcete polymorfizmus, ktorý automaticky smeruje volania do konkrétnej implementácie.
Práca so zoznamami (listami)
- V Python-e: zoznam = $[1,2,3]$; zoznam.append(4); len(zoznam)
- V Scratchi: vytvoríte nový zoznam a používate príkazy ako pridaj, zruš položku, zruš všetko.
Definícia: Zo zoznamov (lists) uchovávame usporiadané kolekcie hodnôt; v Scratchi sú to grafické zoznamy s operáciami na položky.
Praktické príklady a cvičenia
-
Dvaja hráči s vlastnými premennými
- Každá postava (hráč) má lokálnu premennú "skóre" a "zivoty".
- Globálna premenná: "čas" pre spoločné časovanie kola.
- Výhoda: žiadne kolízie mien premenných, ľahké sledovanie stavu každého hráča.
-
Klo
Už máš účet? Prihlásiť sa
OOP paralely v Scratchi
Klíčové pojmy: Postava v Scratchi kombinuje rolu triedy a objektu, Vlastné premenné postavy sú ekvivalentom súkromných atribútov, Globálna premenná ovplyvní všetky postavy, Klon zdiela skripty pôvodnej postavy, ale má vlastné lokálne premenné, Skripty v Scratchi fungujú ako metódy a sú event-driven, Dedičnosť v Scratchi nie je priamo podporovaná, napodobní sa cez vlastné bloky, Používanie broadcast správ simuluje komunikáciu medzi objektmi, Pri návrhu hry použite lokálne premenné pre per-entity stav a globálne pre herný stav, Zo zoznamov sa v Scratchi pracuje cez grafické operácie pridaj/zruš, Pri klonovaní vždy inicializujte premenné klonu