Detail předmětu

Seminář C#

FIT-ICSAk. rok: 2022/2023

Syntaxe jazyka C#. Objektová orientace. Objektový model, objekty, třídy. Visual Studio. Ladění a profilace. Návrhové vzory. Grafické uživatelská rozhraní, WPF. Asynchronní programování - procesy, vlákna, úlohy. Dotazování nad persistentními daty pomocí LINQ a ORM Entity Framework.

Jazyk výuky

čeština

Počet kreditů

4

Garant předmětu

Výsledky učení předmětu

Studenti se seznámí s moderními přístupy při vývoji software na platformě .NET s použitím jazyka C# při vývoji desktopové aplikace s GUI. Důraz je kladen na použití návrhových vzorů a architektury při návrhu software. Persistence dat bude zajištěna pomocí SQL databáze spolu s využitím objektově relačního mapování, které je hojně užíváno v objektově orientovaných jazycích při práci s relačními databázemi. Prací v týmu se studenti naučí vzájemné koordinaci a správnému přístupu k softwarovému vývoji. V kurzu si studenti osvojí dobré programátorské praktiky uplatnitelné v komerčním vývoji. Vybaveni nezbytnou znalostí základních návrhových vzorů a jejich implementací, vzhledem ke specifickým rysům jazyka C# a běžně používaných knihoven, budou absolventi připraveni na započetí své kariéry coby .NET vývojáře.

Prerekvizity

Základní znalosti imperativního programování (jazyk C), algoritmizace a verzování kódu.

Způsob a kritéria hodnocení

  • Odevzdání projektu je rozdělené do tří částí během semestru.
  • Každá část je samostatně hodnocena a student obdrží zpětnou vazbu ke své práci, kterou zapracuje do následující fáze.
  • Bodové rozdělení je dle fází: 20, 30, 50 bodů.
  • Výsledný projekt bude hodnocený v třetí fázi při obhajobě.

Učební cíle

Cílem je naučit studenty objektově orientované programování v jazyce C#, principy návrhu desktopových aplikací s GUI dle standardů používaných v praxi.

Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky

  • Vypracování týmového projektu v rozsahu 5 členů v prostředí Azure DevOps.
  • Cílem je vytvořit plně funkční desktopovou aplikaci, podle OOP principů, komunikující s databází.
  • V hodnocení projektu bude zohledněno správné použití S.O.L.I.D, zásad CleanCode, návrhových vzorů a architektury aplikace.
  • V případě řádně ohlášené a doložené překážky ve studiu může student požádat o odložení termínu odevzdání u kterékoliv části projektu.

Prerekvizity a korekvizity

Doporučená literatura

ALBAHARI, Joseph; ALBAHARI, Ben.; C# 7.0 in a Nutshell: The Definitive Reference. O'Reilly Media, Inc., 2017.
ALBAHARI, Joseph; ALBAHARI, Ben.; C# 7.0 in a Nutshell: The Definitive Reference. O'Reilly Media, Inc., 2017.
BISHOP, J. (2007). C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems. " O'Reilly Media, Inc.".
BISHOP, J. (2007). C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems. " O'Reilly Media, Inc.".
GAMMA, Erich. Design patterns: elements of reusable object-oriented software. Pearson Education India, 1995.
GAMMA, Erich. Design patterns: elements of reusable object-oriented software. Pearson Education India, 1995.
MARTIN, R. C., & MARTIN, M. (2006). Agile principles, patterns, and practices in C. Pearson Education.
MARTIN, Robert C. Clean code: a handbook of agile software craftsmanship. Pearson Education, 2009.

Elearning

Zařazení předmětu ve studijních plánech

  • Program BIT bakalářský 2 ročník, letní semestr, povinně volitelný
  • Program BIT bakalářský 2 ročník, letní semestr, povinně volitelný

  • Program IT-BC-3 bakalářský

    obor BIT , 2 ročník, letní semestr, povinně volitelný

  • Program VUB bakalářský

    obor VU-D , 2 ročník, letní semestr, volitelný
    obor VU-IDT , 2 ročník, letní semestr, volitelný
    obor VU-VT , 2 ročník, letní semestr, volitelný
    obor VU-VT , 2 ročník, letní semestr, volitelný
    obor VU-VT , 2 ročník, letní semestr, volitelný
    obor VU-VT , 2 ročník, letní semestr, volitelný
    obor VU-IDT , 2 ročník, letní semestr, volitelný
    obor VU-IDT , 2 ročník, letní semestr, volitelný
    obor VU-IDT , 2 ročník, letní semestr, volitelný
    obor VU-IDT , 2 ročník, letní semestr, volitelný
    obor VU-VT , 2 ročník, letní semestr, volitelný
    obor VU-D , 2 ročník, letní semestr, volitelný
    obor VU-VT , 2 ročník, letní semestr, volitelný
    obor VU-IDT , 2 ročník, letní semestr, volitelný
    obor VU-D , 2 ročník, letní semestr, volitelný
    obor VU-IDT , 2 ročník, letní semestr, volitelný

Typ (způsob) výuky

 

Seminář

26 hod., nepovinná

Vyučující / Lektor

Osnova

  1. Úvod do jazyka C# a platformy .NET, základní syntaxe jazyka, instalace a představení Visual Studia.
  2. Úvod do objektově orientovaného programování a pokročilé konstrukce v jazyce C# - výjimky, události, delegáty, lambda výrazy a generika.
  3. Představení základních knihovních funkcí (BCL) a dotazování za pomocí vestavěného nástroje LINQ nad datovými zdroji (kolekcemi, XML, MSSQL). (Ing. Tibor Jašek, MSP)
  4. Propojení aplikace s databází pro zajištění persistence pomocí ORM rozšíření Entity Framework s návrhovými vzory UnitOfWork a Repository.
  5. Psaní čistého, udržovatelného kódu s respektováním Clean Code, S.O.L.I.D. zásad. Ukázky refaktorizace a práce s legacy kódem. (Martin Dybal, Microsoft MVP)
  6. Návrhový vzor Model-View-ViewModel (MVVM) a architektura desktopových aplikací. Mapování databázových entit na modelové třídy. (Bc. Michal Mrnuštík, MSP)
  7. Continous Integration v prostředí Azure DevOps a testování aplikací - smoke, unit, integrační, UI a akceptační testy. (Ing. Jiří Pokorný, Solarwinds)
  8. Základní koncepty tvorby uživatelského rozhraní pomocí Windows Presentation Foundation (WPF).
  9. Návrhové vzory pro práci s vytvářením, strukturováním a chováním - Gang of Four (GoF) v kontextu C#. (Martin Dybal, Microsoft MVP)
  10. WPF za pomoci MVVM, tvorba komponenty a stylování aplikací. (Ing. Roman Jašek, Microsoft MVP)
  11. Nástroje pro správu paměti a profilaci výkonu. (Velikonoční pondělí - odpadá)
  12. Paralelní a asynchronní programování, proces, vlákno, úloha z pohledu C# a použitého frameworku .NET.
  13. Multiplatformní programování .NET Standard, .NET Core. Konteinerizace aplikací pomocí Docker a jejich orchestrace Kubernetes, Docker Swarm.

Elearning