Jazyk C – Návrhové vzory a objektově orientovaný návrh (C3)
Programování, C, C++
Jazyk C je často vnímán jako nízkoúrovňový nástroj pro psaní výkonného kódu. Ve skutečnosti ale umožňuje vytvářet velmi dobře strukturované, modulární a dlouhodobě udržovatelné softwarové systémy.
Pomocí hlavičkových souborů, neprůhledných datových typů, funkčních rozhraní a schopností linkeru lze v C vytvářet komponenty, které spolu komunikují přes jasně definovaná rozhraní. Tím lze realizovat stejné architektonické vzory jako v objektově orientovaných jazycích – často s menší režií a větší kontrolou.
Kurz ukazuje, jak v čistém C navrhovat software pomocí návrhových vzorů, idiomů a architektonických principů používaných v reálných systémech.
TOTO ŠKOLENÍ VÁM POMŮŽE:
- Naučit se postavit si objektový datový model pomocí struktur ukazatelů na funkce
- Projít společně známé návrhové vzory a vyzkoušet si vybrané z nich v jazyce C
- Naučit se rozlišovat, kdy které ze vzorů dává smysl nasadit v praxi
- Umět si dávat pozor na nadužívání návrhových vzorů a overengineering
KDO BY SE MĚL KURZU ZÚČASTNIT?
- Vývojáři pracující v jazyce C na reálných produktech
- Programátoři embedded a low-level systémů
- Autoři knihoven, middleware a ovladačů
- Vývojáři, kteří chtějí psát testovatelný a modulární C kód
Privátní školení a termíny na míru
Tento kurz nabízíme pouze jako uzavřené privátní školení. Obsah, délka a termíny kurzů budou vytvořeny podle vašich specifických potřeb. Specifičnost tohoto školení a nízký zájem jednotlivců neumožňuje pro tento kurz vypisovat veřejné termíny.
Cenovou nabídku vám rádi připravíme na základě vašich požadavků a cílů zaslaných e-mailem nebo zadaných prostřednictvím poptávkového formuláře. Cena privátního školení vychází z náročnosti požadované obsahové náplně školení, časového rozsahu a celkového počtu přihlášených osob.
KDE A KDY KURZ PROBÍHÁ?
Kontaktujte nás
S námi
máte na výběr: Přijďte na
kurz osobně do naší učebny, nebo se ke kurzu
připojte online. Pokud preferujete online formu, uveďte prosím do poznámky v objednávce "Připojím se virtuálně".
Více informací k hybridní formě školení
naleznete zde.
Náplň kurzu:
Skrýt detaily
-
Srozumitelný a udržitelný kód psaný pro lidi
-
Využíváme známé postupy a návrhové vzory
-
Popisujeme software pomocí komponentů a chování
-
Oddělujeme chování od detailů implementace
-
Objektově orientovaný návrh software
-
Program složený ze spolupracujících komponent
-
Komponenty mají přiřazené úkoly (responsibilities)
-
Lze přemýšlet o jednotlivých komponentách (reason)
-
Zavedení objektově orientovaného programování
-
Virtuální metody formou ukazatelů na funkce
-
Abstraktní rozhraní pomocí operations struktur
-
Objektově orientovaná architektura
-
Odlišnosti od objektově orientovaných jazyků
-
Velké množství boiler plate kódu
-
Přetypování bez řádné typové kontroly
-
Imitace dědičnosti pomocí výchozích funkcí
-
Alternativy k implementaci OOP
-
Ukazatele na funkce přímo mezi daty
-
Architektura ve stylu Rustu a fat pointery
-
Statický polymorfismus pomocí linkování
-
Závislosti mezi komponentami
-
Ukazatele a vlastnictví
-
Zodpovědnost za zrušení objektu
-
Odstraňování memory leaků
-
Principy dobrého softwarového designu
-
Nezávislost komponent a lokalizace změn v kódu (SRP)
-
Závislost na rozhraní, ne implementaci (DIP)
-
Uzavřenost kódu vůči potřebám změny při rozšiřování (OCP)
-
Výměna chování komponenty za běhu
-
Stavový stroj a návrhový vzor stav (state)
-
Implementace pomocí switch a enum
-
Rozdíly od čistého stavového stroje (state machine)
-
Propojování rozhraní pomocí spojovacích prvků
-
Oddělení odlišných domén (bridge)
-
Překlenutí rozdílných rozhraní (adapter)
-
Zpřístupnění specializovaného rozhraní (facade)
-
Řetězení pomocí jednoho rozhraní
-
Přidání chování do hotového systému (decorator)
-
Řetězení možných handlerů (chain of responsibility)
-
Zajištění a řízení přístupu k objektům (proxy)
-
Lineární datové struktury a sekvence
-
Procházení datových struktur (iterátor)
-
Rozlišení spojového seznamu a řetězu
-
Zakončení bez nulového ukazatele (null object)
-
Kompozice složitějších objektů a komponent
-
Větvení podle konkrétního typu (visitor)
-
Stromová struktura objektů (composite)
-
Řešení v kombinaci union a switch
-
Vytváření různorodých typů objektů
-
Továrna na objekty všeho druhu (factory)
-
Abstraktní továrna na objekty (abstract factory)
-
Použití pointeru na funkci pro registraci typů
-
Objekty o jedné jediné instanci
-
Vytvoření jediné instance při prvním použití (singleton)
-
Správa globálních prostředků
-
Stavová komunikace s operačním systémem
-
Vícekrokové vytváření objektů
-
Stavitelský objekt jako mezikrok (builder)
-
Metody pro úpravu stavitele a finální build
-
Rozdělení stavitele do více fází
-
Signalizace a zpracování událostí
-
Centrální zodpovědná komponenta (mediator)
-
Registrace zájemců o události (observer)
-
Signály s pointery na funkce (signals & slots)
-
Generování, streamování a líné vyhodnocování
-
Zpracování sekvencí a pipelining (iterators)
-
Používání fronty zpráv (message queue)
-
Generování stavového stroje bez callbacků
-
Reprezentace datových změn
-
Popis konkrétní úpravy (transaction, command)
-
Sekvence následných změn (journal)
-
Použití minijazyka či bajtkódu (interpreter)
-
Uložení a obnovení stavu
-
Vytváření snímků stavových dat (snapshot, memento)
-
Práce s historií získaných snímků (history, recovery)
-
Kombinace snapshotů a transakcí (incremental backup)
-
Optimalizace práce s daty
-
Datové struktury s instantními snapshoty (copy-on-write)
-
Sdílení víceméně neměnných parametrů (flyweight)
-
Klonování objektů a „rule of zero“ (clone, prototype)
-
Předpokládané znalosti:
-
Dobrá znalost programování v jazyce C
-
Doporučený předchozí kurz:
-
Jazyk C – Praktické programování pro pokročilé (C2)
-
Časový rozvrh:
-
4 dny (9:00hod. - 17:00hod.)
Vybrané zákaznické reference
Schneider Electric CZ, s.r.o., Jaromír B.
Jazyk C – Návrhové vzory a objektově orientovaný návrh (
C3)
" Zajímavý kurz, sám jsem byl překvapený co neznám "