Logo

Ep. 20 – OOP Part 4 (Enkapsulácia)

V OOP chceme ochrániť naše objekty pred tým, aby si s nimi každý mohol robiť čo chce. Na toto nám slúži enkapsulácia a o enkapsulácii je aj táto epizóda. Vďaka enkapsulácii vieme skrývať interný stav objektov a prístup k tomuto stavu upraviť podľa potreby – get/set. Vďaka enkapsulácii sú zmeny v kóde lepšie izolované, redukujú sa nám test cases a znižuje sa nám previazanie kódu. Ale pozor, všetko treba brať opäť s mierou.

Stiahnuť

00:00 – 00:29 Úvod
00:30 – 02:06 Čo je to enkapsulácia
02:07 – 03:55 Príklad – auto
03:56 – 06:47 Načo sa používa enkapsulácia
06:48 – 11:12 Access modifiers
11:13 – 15:43 Prečo nemôže byť všetko public
15:44 – 18:36 Access modifiers v.2
18:37 – 24:20 Mini tips ohľadom enkapsulácie
24:21 – 25:09 Enkapsulácie znižuje impakt zmien
25:10 – 27:54 Loose coupling
27:55 Záver

Enkapuslácia

  • skrývanie hodnôt, stavu a funkcionality
  • zabraňuje tomu, aby používateľ objektu vedel dostať tento objekt do nevalídneho stavu
  • schovávame implementačné detaily – abstrakcia

Príklad auto

  • bez enkapsulácie vieme zabočiť ľavým kolesom doprava a pravým doľava – auto pokazíme
  • namiesto toho kolesá schováme pred verejnosťou (private) a spravíme verejnú metódu zaboč()
  • auto interne vie (alebo ten kto ju vytváral), že auto zabáča vždy oboma kolesami
  • používateľ nemusí vôbec vedieť ako auto zabáča, hlavne že zabáča

Access modifiers

  • týkajú sa propertiesov a metód
  • private – iba daná trieda vie k vlastnostiam pristupovať
  • protected – daná trieda a jej deti (triedy od nej dediace) vedia k vlastnostiam pristupovať
  • internal (C#) – public pre daný projekt (reálne assembly)
  • package private (Java) – public pre daný package – nedostupné mimo packagu
  • public – dostupné pre všetkých

Prečo nemôže byť všetko public

  • menenie propertiesov môže mať veľa side-effectov, ktoré viem ošetriť/zabezpečiť v setteri
  • vďaka enkapsulácii vieme spraviť read-only alebo write-only properties
  • bez settera nevieme napr. volať OnPropertyChanged() pri nastavení propertiesu

Mini tips

  • za každou private metódou sa schováva trieda – je to tak?
  • properties po väčšine majú byť private a ak treba, tak podľa potreby pridávame get/set
  • pri písaní nových tried/metód/propertiesov je fajn začať s najnižšími právami a postupne podľa potreby ich zvyšovať

Ďalej o enkapsulácii

  • zmeny kódu sú viac izolované
  • loose coupling – tým, že sa nechýtam vnútorností triedy sa znižuje previazanie kódu – neriešim dve kolesá auta, ale iba to, aby zabočilo
  • opäť treba hladať tú správnu mieru
  • enkapsulácia zjednodušuje aj testovanie

Užitočné odkazy

Jakubova hra, ktorá učí základné koncepty OOP
Stará dobrá Wiki
OOP pre 6 ročných

Logo
Street of Code o.z.Hlaváčiková 2984105, Bratislava
Chcem odoberať novinky
Poskytnutím emailu súhlasíš s jeho spracovaním v súlade s GDPR.
Copyright © 2024 Street of Code
Kód tejto stránky si vieš pozrieť na našom GitHub-e