Street of Code

Street of Code

By Street of CodeEducationCourses
Download on the App Store

Street of Code episodes

  • Ep. 27 – Frontend vs. Backend

    Keď si prebehneš pracovné ponuky pre programátorov, tak si môžeš všimnúť, že sa v nich často spomínajú slová Frontend a Backend. Keď sme začínali s programovaním, tak sme si ani my neboli istí, čo tieto dva pojmy znamenajú. A tak sme sa rozhodli, že ti ich skúsime aspoň trochu priblížiť.

    Stiahnuť
    https://wp.streetofcode.sk/wp-content/uploads/2019/12/StreetOfCode-Ep27.mp3

    00:00 – 00:32 – Úvod

    00:33 – 02:44 – Stručne – rozdiel medzi Frontendom a Backendom
    02:45 – 04:04 – Patrí klasický Javascript do Frontendu alebo do Backendu?
    04:05 – 05:10 – Je backend, ktorý využíva iný backend, frontendom pre ten backend?
    05:11 –  09:38 – Má androidová aplikácia frontend a backend?
    09:39 – 11:34 – Aké jazyky viem na čo použiť?
    11:35 – 15:14 – Sú jazyky striktne frontend alebo backend?
    15:15 – 19:02 – Musím byť dizajnér, ak chcem byť frontend developer?
    19:03 – 20:55 – Je backenďak viac ako frontenďák?
    20:56 – 22:45 – Kam spadá robenie stránok vo WordPresse?
    22:46 – 24:47 – Majú frontenďáci a backenďáci nejaké charakteristické črty?
    24:48 – 25:48 – Záver

    Frontend
    • frontend je všetko to, čo z programu vidí používateľ
    • vykreslovanie textu, farebných rámčekov, tlačidiel, formulárov, … to všetko je frontend
    • Javascript (angular, react, jQuery), Java (Android), Swift (iOS), HTML, CSS, …
    • získavanie dát zo serveru sa stále počíta do frontendu – kód na serveri však už nie
    • nemusí to byť iba webový frontend, môže to byť aj Android aplikácia, iOS aplikácia, Desktop aplikácia, …
    • Android aplikácia je frontend. Aj keď na pozadí volá nejakú api a robí nejaké komplikovanejšie operácie
    • Backend
      • backend je všetko to, čo sa deje na pozadi
      • backend ukladá dáta, ktoré si vie frontend potom vypýtať
      • Java (Spring), C# (ASP.NET), Python (Django, Flask), Ruby (on rails), Javascript (node.js), …
      • dáta získava backend napr. od používateľa prostredníctvom frontendu
      • väčšinou webový server
      • Na čo sa hodíš?

        To je naozaj veľmi individuálne a najlepšie je si to vyskúšať. Je však pár bodov, ktoré ti môžu pomôcť rozhodnúť sa. Ak máš napr. estetické cítenie a páči sa ti, keď vytváraš niečo pekné so super vizuálom, tak by frontend mohol byť pre teba vhodnejší. Ak máš však radšej funkčné veci a hrabanie sa v čiernych obrazovkách, tak by sa ti možno páčil viac backend. Je možné, že si hybrid medzi týmito dvomi svetmi a aj takých ľudí potrebujú do firiem.

        Viac epizód nájdeš na https://streetofcode.sk/podcast

        Pridaj sa na Discord tu - https://streetofcode.sk/discord

        26 min
      • Ep. 26 – 5 vecí, ktore máme a 5 vecí, ktoré nemáme radi na programovaní

        Dáme si trošku uvoľnenejšiu epizódu. Porozprávame sa o tom, čo máme a nemáme radi na programovaní. Obaja sme si pripravili 5 pozitívnych a 5 negatívnych, ale nevieme, čo napísal ten druhý.

        Stiahnuť
        https://wp.streetofcode.sk/wp-content/uploads/2019/11/StreetOfCode-Ep26V2.mp3

        00:00 – 01:30 – Úvod

        01:31 – 04:15 – 1. pozitívum – Kreativita
        04:16 – 5:55 – 2. pozitívum – Riešenie od základov
        05:56 – 06:53 – 3. pozitívum – Refaktorovanie
        06:54 – 09:34 – 4. pozitívum – Analytické úlohy
        09:35 – 11:45 – 5. pozitívum – Unit testy
        11:46 – 13:54 – 6. pozitívum – Debugovanie
        13:55 – 15:03 – 7. pozitívum – Výsledok
        15:04 – 17:55 – 8. pozitívum – Nekonečné možnosti
        17:56 – 19:10 – 9. pozitívum – Učenie sa nových vecí
        19:11 – 20:39 – Zhrnutie pozitívných vecí
        20:40 – 21:54 – 1. negatívum – Úlohy, ktoré su ľahké naprogramovať, ale treba sa s veľa ľudmi dohodnút, že čo
        21:55 – 23:05 – 2. negatívum – Problémy  s vývojovým prostredím
        23:06 – 24:22 – 3. negatívum – Úlohy, ktoré nie sú dostatočne vyšpecifikované
        24:23 – 27:12 – 4. negatívum – Tutoriály, ktoré sa nedajú urobiť
        27:13 – 28:47 – 5. negatívum – Programovanie pod stresom
        28:48 – 30:48 – 6. negatívum – Špagety kód/kód iných ľudí
        30:49 – 32:55 – 7. negatívum – Keď sa niekto pozerá ako programujem
        32:56 – 34:34 – 8. negatívum – Náročnosť
        34:35 – 37:10 – 9. negatívum – Meetingy
        37:11 – 42:19 – 10. negatívum – Milión spôsobov ako niečo urobiť a nevieš, ktorý je správny
        42:20 – 44:35 – Zhrnutie negatívných vecí
        44:36 – 46:11 – Záver

        Pozitíva Gabo
        • Kreativita
        • Refaktorovanie
        • Unit Testy
        • Výsledok
        • Návrh softvéru
        • Pozitíva Kubo
          • Riešenie od základov
          • Analytické úlohy
          • Debugovanie
          • Nekonečné možnosti
          • Učenie sa nových vecí
          • Negatíva Gabo
            • Problémy s vývojovým prostredím
            • Tutoriály, ktoré časom proste prestanú ísť
            • Špagety, nezrozumiteľný kód
            • Náročnosť
            • Milión spôsobov ako niečo urobiť a nevieš, ktorý je správny
            • Negatíva Kubo
              • Úlohy, ktoré su ľahké naprogramovať, ale treba sa s veľa ľudmi dohodnút, že čo
              • Úlohy, ktoré nie sú dostatočne vyšpecifikované
              • Programovanie pod stresom
              • Keď sa niekto pozerá ako programujem
              • Meetingy
              • Viac epizód nájdeš na https://streetofcode.sk/podcast

                Pridaj sa na Discord tu - https://streetofcode.sk/discord

                46 min
              • Ep. 25 – Source Control

                Git je source control systém/softvér. Ako a prečo vznikli source control systémy? Kto ich potrebuje? Ako sa ich môžeme naučiť a načo je to vlastne dobré? Všetko sa dozvieš v tejto epizóde.

                Stiahnuť
                https://wp.streetofcode.sk/wp-content/uploads/2019/11/StreetOfCode-Ep25.mp3

                00:00 – 00:50 Úvod

                00:52 – 06:17 Čo je to source control a prečo musel vzniknúť?
                06:18 – 11:43 História source control
                11:44 – 14:30 Kto používa source control. Komu je to dobré?
                14:31 – 28:47 Pojmy zo source control / git (pull, push, commit, pull request, conflict)
                28:48 – 32:46 Github. BitBucket, Gitlab
                32:47 – 37:14 Ako sa to môžem naučiť?
                37:15 – 43:50 Tipy na záver
                43:51 – 45:20 Záver

                Čo je to source control
                • systém na sledovanie zmien súboru – trackovanie histórie
                • príkladom source control je git alebo mercurial
                • Kto používa source control
                  • asi všetci programátori
                  • väčšina používa git, takže odporúčame toto sa naučiť
                  • source contol je pre tvorbu softvéru nevyhnutný, nevihttps://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workfloweme si bez toho predstaviť našu prácu
                  • Ako sa naučiť source control? (GIT)
                    • v škole sa toho veľa nenaučíte. Mali sme 2 predmety na FEIke, kde sme potrebovali mať projekt uložený na Githube a teda používať Git, ale nebol na to veľký dôraz
                    • ak sa chceš naučiť Git, tak najlepšia cesta je si pozrieť jeden tutoriál (odkaz nižšie), a potom si to vyskúšať na vlastnom projekte
                    • v práci sa naučíš Git najlepšie
                    • git má veľa pokročilých funkcií, ale väčšinou používaš len pár z nich (commit, push, pull, merge)
                    • pojmy, ktoré treba poznať
                      • commit
                      • pull
                      • push
                      • merge
                      • pull request / merge request
                      • repository
                      • github, gitlab, bitbucket
                      • branch
                      • Tipy na záver
                        • skúšať git čo najskôr (v škole, doma)
                        • nebáť sa používať konzolu. Treba poznať príkazy a nepoužívať len git pomocou IDE
                        • commandy vedieť najprv (aspoň základné), a až potom používať git pomocou IDE
                        • vyskúšať si doma projekt s viacerými vetvami, prípadne vyskúšať gitflow
                        • Git Tutoriál

                          Git learn2code
                          Gitflow

                          Viac epizód nájdeš na https://streetofcode.sk/podcast

                          Pridaj sa na Discord tu - https://streetofcode.sk/discord

                          46 min
                        • Ep. 24 – Potrebujem vedieť databázy?

                          Je tu konečne epizódka, ktorá sa nevenuje OOP. V epizóde číslo 24 sa pozrieme na to, či programátor potrebuje ovládať databázy. Najprv si v skratke povieme, čo to databázy vlastne sú. Postupne sa pozrieme na to, či ich treba ovládať a keď, tak čo konkrétne by si určite nemal vynechať pri ich štúdiu.

                          Stiahnuť
                          https://wp.streetofcode.sk/wp-content/uploads/2019/10/StreetOfCode-Ep24.mp3

                          00:00 – 00:51 Úvod

                          00:52 – 02:55 Čo sú to vlastne databázy?
                          02:56 – 04:19 Typy databáz
                          04:20 – 05:33 Prečo relačná databáza? Čo je to tá relácia?
                          05:34 – 09:19 Prečo mi nestačí iba súbor?
                          09:20 – 10:20 Kto by mal ovládať databázy?
                          10:21 – 13:11 Relačné vs. nerelačné databázy
                          13:12 – 15:57 Čo sa z databáz oplatí vedieť?
                          15:58 – 17:26 Načo SQL, keď za mňa všetko spraví ORM?
                          17:27 – 18:02 Záver

                          Čo sú to databázy?
                          • miesta, kam môžeme ukladať dáta, ktoré naša aplikácia potrebuje
                          • do databázy ukladáme dáta, ktoré majú existovať aj po ukončení aplikácie – persistentne
                          • premenné/objekty sú počas behu uložené iba v RAMke a po ukončení aplikácie zanikajú
                          • ak ich chceme ponechať, použijeme databázu
                          • Typy databáz
                            • relačné – MySQL, PostgreSQL, SQLite
                            • nerelačné – MongoDB (dokumentová), … Redis, neo4j, Cassandra
                            • Relačné databázy
                              • pracujú s entitami – objekty v databáze – zákazník, používateľ, zariadenie, platba, produkty, …
                              • medzi entitami sa definujú vzťahy – relácie (z eng. relation)
                              • zákazník má N objednávok, objednávka ma N tovarov, objednávka má 1 platbu (alebo aj viac)
                              • entity a vzťahy medzi nimi sa určujú pri návrhu databáz, nie je jedno správne riešenie
                              • Databázy sú iba súbory
                                • aj keď sa to tak na prvý pohľad nemusí zdať, databázy sú naozaj iba súbory
                                • sú to však súbory, ktoré sú prispôsobené na to, aby sa do nich dalo rýchlo zapisovať a rýchlo čítať
                                • tak ako video súbor je prispôsobený na ukladanie a prehrávanie videa, tak aj databáza je určená na ukladanie dát
                                • knižnice, ktoré pracujú s databázami sú vlastne iba programy, ktoré vedia správne s týmto súborom pracovať
                                • Kto by mal ovládať databázy?
                                  • každý developer by mal ovládať aspoň základy
                                  • keď už nič, tak aspoň na pohovore je fajn, keď človek tie databázy pozná
                                  • android developer ich potrebuje
                                  • iOS developer ich potrebuje
                                  • backend developer ich potrebuje
                                  • frontend developer nie až tak
                                  • desktop developer ich potrebuje
                                  • game developer ich tiež môže potrebovať
                                  • wordpressákovi sa tiež zídu databázy
                                  • Čo sa z databáz oplatí vedieť
                                    • CRUD operácie
                                    • SELECT, UPDATE, DELETE, CREATE, …
                                    • JOINy sú iba bonus, stačí vedieť, čo približne robia
                                    • základný návrh databáz – tabuľky, entity, vzťahy medzi entitami (one-to-one, one-to-many, many-to-many)
                                    • veľa vecí vie už za teba robiť aj ORMko, ale aj tak sa oplatí tieto veci vedieť kvôli tomu, aby si vedel čo to ORM na pozadí robí
                                    • MySQL kurz na learn2code.sk

                                      W3 Schools
                                      Wiki!!!

                                      Viac epizód nájdeš na https://streetofcode.sk/podcast

                                      Pridaj sa na Discord tu - https://streetofcode.sk/discord

                                      19 min
                                    • Ep. 23 – OOP Part 7 (Temná strana OOP)

                                      V záverečnej epizóde o OOP si najprv pripomenieme nejaké výhody, ale hlavne sa pozrieme na  negatíva objektovo orientovaného programovania. Nevýhod spomenieme viacero a preto aj taký názov epizódy. Najprv začneme takými zjavnejšími nevýhodami a potom prejdeme na nevýhody, ktoré sme si my vôbec začali všímať až po prečítaní týchto článkov.

                                      Stiahnuť
                                      https://wp.streetofcode.sk/wp-content/uploads/2019/10/StreetOfCode-Ep.23.mp3

                                      00:00 – 01:32 Úvod

                                      01:33 – 06:17 Výhody OOP
                                      06:18 – 14:27 Zjavné nevýhody OOP
                                      14:28 – 18:00 Prvý článok
                                      18:01 – 24:34 Druhý článok
                                      24:35 – 25:46 Tretí článok
                                      25:47 – 27:36 Prečo je OOP stále také populárne?
                                      27:37 – 29:01 Oplatí sa učiť OOP?
                                      29:02 – Záver

                                      Výhody OOP
                                      • poskytuje spôsob akým štrukturovať kód
                                      • Objekty môžu byž reusované
                                      • Softvér je jednoduchší na urdžiavanie (kritici hovoria presný opak)
                                      • Môžeme definovať abstraktné dátove typy, resp. objekty
                                      • Vďaka enkapsulácii a modularite máme malo prepojené moduly (loose coupling) 
                                      • Zjavné nevýhody OOP
                                        • veľa konceptov na naučenie
                                        • ťažko sa hľadá hranica, kedy som použil dané koncepty v správnom rozsahu
                                        • koncepty  vedia byť dosť mätúce
                                        • ukecaná syntax – Enterprise FizzBuzz
                                        • limituje myslenie na myslenie v objektoch
                                        • privátne metódy sa nedajú testovať
                                        • Nevýhody OOP od iných programátorov
                                          Prvý článok
                                          • svet nie je tvorený objektami
                                          • objekty su ilúzia
                                          • Druhý článok
                                            • OOP nie je prirodzené pre ľudský mozog, pretože ten je sústredený okolo robenia vecí a nie okolo rôznych hierarchií
                                            • pri programovaní je dôležitá jednoduchosť, čo podľa autora OOP nedosahuje, pretože má meniace sa stavy (objekty nie sú immutable)
                                            • môže sa stať, že pri veľkých projektoch si musím urdžiavať veľa kontextu v hlave
                                            • v reálnom svete objekty nie sú hierarchické
                                            • dedenie nie je modelované podľa reálneho sveta
                                            • v réalnom svete nie sú metódy
                                            • Tretí článok (Video)
                                              • Design Patterns, SOLID principles a všetky tieto veci sú iba band-aids pre zjednodušenie komplikovane vymysleného OOP
                                              • Prečo je OOP stále také popúlarne?
                                                • pretože je to niečo zaužívané
                                                • veľa systémov je v urobených v objektovo a je potrbené ich udržiavať
                                                • nič sa zatiaľ neukázalo byť o toľko lepšie, aby sa to oplatilo meniť
                                                • Oplatí sa učiť OOP?
                                                  • áno
                                                  • práca v tejto paradigme sa najbližšiu dobu bude dať nájsť
                                                  • aj keď by používateľnosť klesla, tak sa to oplatí naučiť kvôli rozšíreniu obzorov
                                                  • Užitočné odkazy

                                                    Jakubova hra, ktorá učí základné koncepty OOP

                                                    Stará dobrá Wiki
                                                    OOP pre 6 ročných
                                                    Enterprise FizzBuzz
                                                    1. Kritik
                                                    2. Kritik
                                                    3. Kritik

                                                    Zaujímavé video k téme. Hovorí o tom, ako OOP dosiahlo dnešnú popularitu. Vraj to nebolo až tak tým, že by OOP bolo nejaké úžasné, ale skôr zhoda viacerých okolností (a marketing Javy).

                                                    Viac epizód nájdeš na https://streetofcode.sk/podcast

                                                    Pridaj sa na Discord tu - https://streetofcode.sk/discord

                                                    30 min
                                                  • Ep. 22 – OOP Part 6 (Polymorfizmus)

                                                    Objekt je polymorfický, keď je inštanciou viac ako jednej triedy. Vďaka polymorfizmu si vieme skrátiť a zjednodušiť kód, ale tak ako je to aj so všetkým ostatným, vieme si to aj poriadne skomplikovať.

                                                    Stiahnuť
                                                    https://wp.streetofcode.sk/wp-content/uploads/2019/09/StreetOfCode-Ep22.mp3

                                                    00:00 – 02:00 Čo je to polymorfizmus

                                                    02:01 – 04:56 Príklad – muž a človek
                                                    04:57 – 06:48 Kedy je objekt polymorfický
                                                    06:49 – 15:45 Typy polymorfizmu (statický a dynamický)
                                                    15:46 – 19:35 Další príklad polymorfizmu
                                                    19:36 – 19:35 Výhody a nevýhody polymorfizmu
                                                    27:03 –  Zhrnutie a záver + pár užitočných tipov

                                                    Statický polymorfizmus

                                                    V Jave, ale aj v iných OOP jazykov vieme vytvoriť v triede viaceré metódy s tým istým názvom, dokonca aj s tou istou návratovou hodnotou, ale s inými parametrami.

                                                    Toto sa nazýva method overloading. Vieme to teda docieliť nasledujúcimi spôsobmi:

                                                    • Iný počet parametrov 
                                                    • Iné typy parametrov 
                                                    • Iné poradie parametrov (neodporúča sa, neprehľadné API) 
                                                    • Kedže metódy majú iné parametre, tak metódy majú tým pádom inú signature. 

                                                      Toto je statické, čiže compiler vie, ktorú metódu má v ktorom prípade použiť. 

                                                      Dynamický polymorfizmus

                                                      Táto forma polyformizmu nedovolí compileru dopredu vedieť, ktorú metódu bude treba zavolať. JVM (v pripade Javy) sa bude musieť rozhodnúť počas runtime. 

                                                      Dynamickž polymorfizmus sa dá dosiahnuť pomocou method overriding. A toto sa dá dosiahnut ako sme už aj spomínali: 

                                                      • Podtrieda overridne metódu svojho parenta (obe metódy majú rovnakú signaturu ale poskytujú rôzne implementácie) 
                                                      • Trieda ktorá implementuje nejaký interface, implementuje jeho metódy
                                                      • Práve vďaka dynamickému polymorfizmu vieme robiť “divočiny”.  

                                                        Príklad

                                                        Abstraktná trieda Animal, ktorá obsahuje spoločné vlastnosti a chovania zvierať. Obsahuje metódu move(), ktorú musia deti tejto triedy implementovať.

                                                        abstract class Animal {
                                                        String name;
                                                        public Animal(String name) {
                                                        this.name = name;
                                                        }
                                                        abstract void move();
                                                        }

                                                        Tri triedy (Horse, Bird, Fish), ktoré dedia od Animal. Každá implementuje metódu move() inak.

                                                        class Horse extends Animal {
                                                        public Horse(String name) {
                                                        super(name);
                                                        }
                                                        @Override
                                                        void move() {
                                                        System.out.println("Riding");
                                                        }
                                                        }
                                                        class Bird extends Animal {
                                                        public Bird(String name) {
                                                        super(name);
                                                        }
                                                        @Override
                                                        void move() {
                                                        System.out.println("Flying");
                                                        }
                                                        }
                                                        class Fish extends Animal {
                                                        public Fish(String name) {
                                                        super(name);
                                                        }
                                                        @Override
                                                        void move() {
                                                        System.out.println("Swimming");
                                                        }
                                                        }

                                                        Výhodu polymorfizmu môžeme vidieť na nasledujúcom snippete. Trieda ZooService obsahuje metódu moveAnimal, ktorá má parameter typu Animal. Ja do tejto metódy môžem poslať ale všetky jej deti, resp hocijakého koňa, vtáka či ryby.

                                                        class ZooService {
                                                        ...
                                                        void moveAnimal(Animal animal) {
                                                        animal.move();;
                                                        }
                                                        }
                                                        ...
                                                        Bird bird = new Animal("bird"); // Mozem vytvorit instanciu takto
                                                        Bird bird2 = new Bird("bird"); // Aj takto, je to jedno a to iste
                                                        Horse horse = new Horse("horse");
                                                        Fish fish = new Fish("fish");
                                                        zooService.move(bird); // vypise "Flying"
                                                        zooService.move(bird2); // vypise "Flying"
                                                        zooService.move(horse); // vypise "Riding"
                                                        zooService.move(bird); // vypise "Swimming"
                                                        ...

                                                         

                                                         

                                                        Užitočné odkazy

                                                        Jakubova hra, ktorá učí základné koncepty OOP

                                                        Stará dobrá Wiki
                                                        OOP pre 6 ročných

                                                        Viac epizód nájdeš na https://streetofcode.sk/podcast

                                                        Pridaj sa na Discord tu - https://streetofcode.sk/discord

                                                        30 min
                                                      • Ep. 21 – OOP Part 5 (Dedenie)

                                                        Dedenie, po anglicky inheritance, je ďalší veľmi dôležitý koncept OOP. Vdaka dedeniu vieme vytvárať hierarchie objektov. Toto môže byť veľmi nápomocné, ale aj nebezpečné. Viac si povieme v podcaste.

                                                        Stiahnuť
                                                        https://wp.streetofcode.sk/wp-content/uploads/2019/08/Ep.-21.mp3

                                                        00:00 – 00:56 Úvod

                                                        00:57 – 02:06 Čo je to dedenie
                                                        02:05 – 03:26 Príklad – auto
                                                        03:27 – 19:59 Načo je dobré a nie je dobré dedenie
                                                        20:00 – 23:14 Skúsenosti s vytváraním hierarchií
                                                        23:15 –  Zhrnutie a záver

                                                        Užitočné odkazy

                                                        Jakubova hra, ktorá učí základné koncepty OOP

                                                        Stará dobrá Wiki
                                                        OOP pre 6 ročných

                                                        Viac epizód nájdeš na https://streetofcode.sk/podcast

                                                        Pridaj sa na Discord tu - https://streetofcode.sk/discord

                                                        27 min
                                                      • 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ť
                                                        https://wp.streetofcode.sk/wp-content/uploads/2019/08/StreetOfCode-Ep20.mp3

                                                        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

                                                                    Viac epizód nájdeš na https://streetofcode.sk/podcast

                                                                    Pridaj sa na Discord tu - https://streetofcode.sk/discord

                                                                    30 min
                                                                  • Ep. 19 – OOP Part 3 (Abstrakcia)

                                                                    Abstrakcia. Jeden zo základných pojmov OOP (alebo aj programovania všeobecne). Pobavíme sa o tom, čo to abstrakcia je vo všeobecnosti, ale samozrejme aj o tom, čo je abstrakcia v programovaní. Spomenieme zároveň aj nejaké výhody OOP, refaktorovanie a duplikáciu.

                                                                    Stiahnuť
                                                                    https://wp.streetofcode.sk/wp-content/uploads/2019/07/StreetOfCode-Ep19.mp3

                                                                    00:00 – 00:34 Úvod

                                                                    00:35 – 04:39 Čo je to abstrakcia
                                                                    04:40 – 06:20 Abstrakcia pri programovani
                                                                    06:21 – 08:48 Pre koho vlastne abstrahujeme?
                                                                    08:49 – 10:27 Ďalšie príklady abstrakcie v programovaní
                                                                    10:28 – 12:25 Kedy používať abstrakciu
                                                                    12:25 – 13:50 Abstrakcia zvyšuje kvalitu kódu
                                                                    13:51 – 15:30 Divide and Conquer (rozdeluj a panuj)
                                                                    15:31 – 16:30 Výhody OOP
                                                                    16:31 – 18:55 Abstraktná trieda vs. abstrakcia
                                                                    18:56 – 19:53 Abstrakcia a školské zadania
                                                                    19:54 – 22:07 Nevýhody abstrakcie

                                                                    Abstrakcia všeobecne
                                                                    • neriešime ako niečo funguje, proste to používame
                                                                    • ignorovanie detailov a sústredenie sa na to, čo nás práve zaujíma
                                                                    • keď zapínam práčku, tak neriešim čo všetko sa vnútri odohráva, hodím prádlo a perem
                                                                    • matematická rovnica/funkcia môže byť tiež formou abstrakcie
                                                                    • Abstrakcia v programovaní
                                                                      • UI (user interface) je forma abstrakcie – klíkam na tlačidlá a neriešim, čo všetko sa mi deje na pozadí
                                                                      • pri programovaní figurujeme aj ako vlastníci kódu a aj ako jeho používatelia kódu
                                                                      •  pre koho abstrahujeme? – Aj pre nás, aj pre našich kolegov. Pre používateľov kódu
                                                                      • classy, funkcie, moduly, webapi, servisy, … to sú všetko abstrakcie. Vďaka ním vieme v kóde schovávať implementačné detaily, ktoré nás momentálne nezaujímajú
                                                                      • abstrakcia nie je dôležitá iba pri OOP, ale v OOP
                                                                      • Kedy použiť abstrakciu
                                                                        • keď si všimnem, že mám škaredý kód, alebo že sa mi niečo da z funkcie vytiahnuť
                                                                        • veľmi podobné ako refaktorovanie
                                                                        • využívame ju kvôli zjednodušeniu, zkrajšeniu a zlepšenia udržateľnosti kódu
                                                                        • zníženie duplikácie
                                                                        • Abstraktná trieda a abstrakcia sú rozdielné pojmy
                                                                          • abstraktná trieda je prvok v OOP, ktorý nám umožňuje lepšie štrukturovanie kódu
                                                                          • abstrakcia je to čo riešime v epizóde – vyňatie detailov, ktoré nás nezaujímajú
                                                                          • abstraktné – nechytateľné, nekonkrétne
                                                                          • Pri malých školských projektoch sa človek s abstrakciou príliš nezoznámi
                                                                            Nevýhody abstrakcie
                                                                            • dá sa ľahko prehnať
                                                                            • dá sa na to možno príliš spoliehať – napr. niečo nefunguje tak, ako si myslíme
                                                                            • niekedy môže veci akurát zkomplikovať
                                                                            • Užitočné odkazy

                                                                              Jakubova hra, ktorá učí základné koncepty OOP

                                                                              Stará dobrá Wiki
                                                                              OOP pre 6 ročných

                                                                              Viac epizód nájdeš na https://streetofcode.sk/podcast

                                                                              Pridaj sa na Discord tu - https://streetofcode.sk/discord

                                                                              23 min
                                                                            • Ep. 18 – OOP Part 2 (Trieda, Object, Inštancia)

                                                                              Pokračujeme druhou častou v sérií OOP. V tejto epizóde si najprv zopakujeme, čo je to objekt. Potom prejdeme na to, čo je to trieda a inštancia. Neskôr budeme rozoberať rozdiely medzi triedou, objektom a inštanciou. Nevyhneme sa ani príkladom z reálneho života, aby sme si to vedeli lepšie predstaviť.

                                                                              Stiahnuť
                                                                              https://wp.streetofcode.sk/wp-content/uploads/2019/07/StreetOfCode-Ep18.mp3

                                                                              00:00 – 00:35 Úvod

                                                                              00:36 – 02:22 Čo je to objekt (zopakovanie)
                                                                              02:23 – 06:20 Čo je trieda?
                                                                              06:21 –  09:05 Čo je inštancia?
                                                                              11:06 – 11:07 Aký je rozdiel medzi objektom, triedou a inštanciou?
                                                                              10:48 –  13:53 Príklad vytvorenia triedy Lampa
                                                                              13:54 – 15:07  Záver

                                                                              OBJEKT

                                                                              Objekty sú všade okolo nás. Keď sa teraz obzriem okolo seba vidím klávesnicu, monitor, myš, mobil, sluchadlá a všetko možné. Toto všetko sú reálne objekty, ktoré vieme reprezentovať aj v softvérovom svete.

                                                                              • Každý objekt má nejaké vlastnosti a chovania
                                                                              • TRIEDA

                                                                                Keď vidíme na ceste 2 škodovky, tak vidíme vlastne 2 objekty. Tieto objekty sú dosť podobné, ale je nám jasné, že nie sú to tie isté objekty. Oba objekty sú škodovky a majú spoločné charakteristiky. V softvérovom svete by sme vedeli povedať, že oba objekty sú vytvorené z triedy Škodovka.

                                                                                • Trieda je návrh/predloha, podľa ktorého sú jednotlivé objekty vytvárané
                                                                                • Triede môžeme dať nejaké vlastnosti/properties a metódy, ktoré reprezentujú chovania
                                                                                • Pomocou tried vytvárame objekty
                                                                                • Trieda je koncept a nedá sa “chytiť”
                                                                                • INŠTANCIA

                                                                                  V OOP terminológií môžeme povedať, že inštancia je objekt vytvorený z nejakej trieday. Je to už teda konkretny vytvorený objekt, ktorý je v pamäti programu.

                                                                                  • Inštancia je vytvorený objekt, ktorý žije v pamäti softvéru
                                                                                  • Termíny objekt a inštancia sú často zameniteľné a veľa ľudí vám povie, že medzi nimi nie je žiaden rozdiel. Vypočujte si v podcaste, ako sa vám napriek tomu posnažíme vysvetliť rozdiely.

                                                                                    Príklad – LAMPA

                                                                                    Lampa v reálnom svete má jednu vlastnosť (zjednodušene). Môže byť buď zapnutá alebo vypnutá.

                                                                                    Taktiež ma jedno chovanie, ktoré mení jej stav (pomocou vypínača/zapínača)

                                                                                    V softvérovom svete by sme si vytvorili triedu Lamp a dali by sme jej property boolean switched.

                                                                                    Následne 2 metódy, ktorými môžeme switched nastaviť na true alebo false.

                                                                                    class Lamp {
                                                                                    boolean switched;
                                                                                    public Lamp(boolean switched) {
                                                                                    this.switched = switched;
                                                                                    }
                                                                                    public void switchOn() {
                                                                                    this.switched = true;
                                                                                    }
                                                                                    public void switchOff() {
                                                                                    this.switched = false;
                                                                                    }
                                                                                    }

                                                                                    Je to jednoduchá trieda, ktorá poskytuje návrh, ktorým môžeme vytvoriť hocikoľko lámp. A aj keby sme vytvorili 2 lampy a obe by mali switched nastavené na true, tak stále by to boli 2 rôzne objekty/inštancie, pretože by odkazovali na iné miesto v pamäti.

                                                                                    Záver

                                                                                    V ďalších epizodách si prejdeme základné pojmy z OOP – dedenie, abstraktná trieda, rozhranie a polymorfizmus. Sústredíme sa na to, prečo to prináša také výhody, že je to najviac rozšírená paradigma.

                                                                                    Užitočné odkazy

                                                                                    Jakubova hra, ktorá učí základné koncepty OOP

                                                                                    Stará dobrá Wiki
                                                                                    OOP pre 6 ročných

                                                                                    Viac epizód nájdeš na https://streetofcode.sk/podcast

                                                                                    Pridaj sa na Discord tu - https://streetofcode.sk/discord

                                                                                    16 min

                                                                                  About Street of Code

                                                                                  From the publisher's feed

                                                                                  Miesto, kde sa môžeš vzdelávať o programovaní. Vytvárame programátorský podcast ako kurzy pre začínajúcich programátorov.

                                                                                  More shows like Street of Code

                                                                                  Dobré ráno | Denný podcast denníka SME by Podcasty SME

                                                                                  Dobré ráno | Denný podcast denníka SME

                                                                                  34 Listeners

                                                                                  DEEP TALKS [CZE] by Petr Ludwig

                                                                                  DEEP TALKS [CZE]

                                                                                  20 Listeners

                                                                                  Denník N Newsfilter by Denník N

                                                                                  Denník N Newsfilter

                                                                                  29 Listeners

                                                                                  Index s Evou Frantovou by Podcasty SME

                                                                                  Index s Evou Frantovou

                                                                                  5 Listeners

                                                                                  Lužifčák podcast by Lužifčák

                                                                                  Lužifčák podcast

                                                                                  13 Listeners

                                                                                  Rozhovory ZKH by SME.sk

                                                                                  Rozhovory ZKH

                                                                                  14 Listeners

                                                                                  PETR MÁRA PODCAST by Petr Mára

                                                                                  PETR MÁRA PODCAST

                                                                                  7 Listeners

                                                                                  Piatoček by Podcasty SME

                                                                                  Piatoček

                                                                                  10 Listeners

                                                                                  Diagnóza Podnikateľ by Edita Angyalová

                                                                                  Diagnóza Podnikateľ

                                                                                  0 Listeners

                                                                                  V redakcii by Denník N

                                                                                  V redakcii

                                                                                  14 Listeners

                                                                                  Mozgová Atletika by Grindworks

                                                                                  Mozgová Atletika

                                                                                  13 Listeners

                                                                                  Michal Truban Podcast by Michal Truban

                                                                                  Michal Truban Podcast

                                                                                  3 Listeners

                                                                                  Ekonómia ľudskou rečou by skpodcasty.sk

                                                                                  Ekonómia ľudskou rečou

                                                                                  0 Listeners

                                                                                  tak bolo by ZAPO

                                                                                  tak bolo

                                                                                  6 Listeners

                                                                                  Mentalita Foundera by ZAPO

                                                                                  Mentalita Foundera

                                                                                  0 Listeners