Úvod do technologie programování a programovacích stylů, objektově orientovaný návrh, základní UML diagramy, psaní programů v Javě

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Založena nová stránka: Úvod : Programování je proces vytváření software splňující určité funkce. K programování využíváme programovací jazyky, dříve procedurální (nestrukturo...)
 
(Oprava nadpisu "Jazyk UML")
 
(Není zobrazeno 5 mezilehlých verzí od 4 uživatelů.)
Řádka 1: Řádka 1:
−
Úvod : Programování je proces vytváření software splňující určité funkce. K programování využíváme programovací jazyky, dříve procedurální (nestrukturované (asembler) - bez podprogramů, pouze skoky v programu (goto), nebo strukturované (basic, c, pascal) - podprogramy, skoky jen velmi vyjímečně), dnes nejčastěji objektově zaměřené (objekty jsou stavební kameny a obalují funkce, využití technik OOP).
+
== Úvod ==
 +
Programování je proces vytváření software splňující určité funkce. K programování využíváme programovací jazyky, dříve procedurální (nestrukturované (asembler) - bez podprogramů, pouze skoky v programu (goto), nebo strukturované (basic, c, pascal) - podprogramy, skoky jen velmi vyjímečně), dnes nejčastěji objektově zaměřené (objekty jsou stavební kameny a obalují funkce, využití technik OOP).
 +
 
 
Dříve bylo programování spojeno s testováním, nyní je proces rozdělen do několika fází:
 
Dříve bylo programování spojeno s testováním, nyní je proces rozdělen do několika fází:
  
−
Analýza - Sbírání informací od zákzníka či zadavatele
+
'''Analýza''' - Sbírání informací od zákzníka či zadavatele
−
Návrh - Návrh SW tak, aby splňoval požadavky analýzy
+
−
Kódování - Implementace návrhu
+
−
Ladění - Testování a odstraňování chyb
+
  
−
Styly:
+
'''Návrh''' - Návrh SW tak, aby splňoval požadavky analýzy
−
Vodopád - fáze jdou za sebou, nevracíme se, ani neodbočujeme (nejstarší), týmy se zapojují do procesu pokud je na řadě jejich blok
+
 
−
Formální - návrh je matematicky zcela do detailu popsán a jednotlivé bloky modelu jsou poté 1:1 implementovány
+
'''Kódování''' - Implementace návrhu
−
Evoluční - začíná se malým funkčním SW, na který nabalujeme další funkce, ale nevíme, jaké funkce bude v budoucnu mít
+
 
−
Iterativní - proces je rozdělen na iterace, v každé iteraci je naplánováno několik funkčností, iterace stejně dlouhé, po iteraci je SW vždy v kompletní spustitelné podobě
+
'''Ladění''' - Testování a odstraňování chyb
−
Komponentový - využití hotových komponent, či implementace vlastních, po té stavění SW z komponent jako z kostek
+
 
 +
 
 +
== Styly ==
 +
 
 +
'''Vodopád''' - fáze jdou za sebou, nevracíme se, ani neodbočujeme (nejstarší), týmy se zapojují do procesu pokud je na řadě jejich blok
 +
 
 +
'''Formální''' - návrh je matematicky zcela do detailu popsán a jednotlivé bloky modelu jsou poté 1:1 implementovány
 +
 
 +
'''Evoluční''' - začíná se malým funkčním SW, na který nabalujeme další funkce, ale nevíme, jaké funkce bude v budoucnu mít
 +
 
 +
'''Iterativní''' - proces je rozdělen na iterace, v každé iteraci je naplánováno několik funkčností, iterace stejně dlouhé, po iteraci je SW vždy v kompletní spustitelné podobě
 +
 
 +
'''Komponentový''' - využití hotových komponent, či implementace vlastních, poté stavění SW z komponent jako z kostek
 +
 
 +
== Objektově orientovaný návrh ==
  
−
Objektově orientovaný návrh:
 
 
OO umožňuje, a klade si za cíle:
 
OO umožňuje, a klade si za cíle:
−
Znovupoužitelnost - abstraktní části kódu jsou univerzální a je tedy možné je používat stále dokola
 
−
Robustnost - návrh předpokládá všechny vstup, nejen ty, které jsou očekávané
 
−
Přispůsobivost - návrh lze pouze s minimálními zásahy do kódu použít na různých platformách
 
  
−
Pilíře OO návrhu
+
'''Znovupoužitelnost''' - abstraktní části kódu jsou univerzální a je tedy možné je používat stále dokola
−
Dědičnost, Zapouzdření, Polymorfysmus - PPA2
+
 
−
Modularita - rozdělení programu na bloky - moduly
+
'''Robustnost''' - návrh předpokládá všechny vstupy, nejen ty, které jsou očekávané
−
Abstrakce - Návrh na abstraktní úrovni je snadno implementovatelný
+
 
 +
'''Přispůsobivost''' - návrh lze pouze s minimálními zásahy do kódu použít na různých platformách
 +
 
 +
== Pilíře OO návrhu ==
 +
 
 +
'''Dědičnost, Zapouzdření, Polymorfysmus''' - PPA2
 +
 
 +
'''Modularita''' - rozdělení programu na bloky - moduly
 +
 
 +
'''Abstrakce''' - Návrh na abstraktní úrovni je snadno implementovatelný
 +
 
 +
 
 +
[[Soubor:[[Soubor:Příklad.jpg]]]]
 +
 
 +
== Jazyk UML ==
  
−
Jazyk UML:
 
 
Jazyk pro abstraktní návrh OO SW, modelování SW před implementací, navrhujeme pouze strukturu, nikoliv funkčnost.
 
Jazyk pro abstraktní návrh OO SW, modelování SW před implementací, navrhujeme pouze strukturu, nikoliv funkčnost.
 
Typy UML:
 
Typy UML:
−
diagram tříd a objektů - popisují statickou strukturu systému
+
 
−
modely jednání (diagram případů užití) - dokumentují možné případy použití systému, události, na které musí systém reagovat
+
'''diagram tříd a objektů''' - popisují statickou strukturu systému
−
scénáře činností (diagramy posloupností) - popisují scénář průběhu určité činnosti, těchto činností je model jednání složen
+
 
−
diagramy spolupráce - zachycují komunikaci spolupracujících objektů
+
'''modely jednání (diagram případů užití)''' - dokumentují možné případy použití systému, události, na které musí systém reagovat
−
stavové diagramy - popisují dynamické chování objektu nebo systému
+
 
−
diagramy aktivit - průběh aktivit procesu nebo činností
+
'''scénáře činností (diagramy posloupností)''' - popisují scénář průběhu určité činnosti, těchto činností je model jednání složen
−
diagramy komponent - popisují rozdělení systému na funkční celky a definují náplň jednotlivých komponent
+
 
−
diagramy nasazení - popisují umístění funkčních celků
+
'''diagramy spolupráce''' - zachycují komunikaci spolupracujících objektů
 +
 
 +
'''stavové diagramy''' - popisují dynamické chování objektu nebo systému
 +
 
 +
'''diagramy aktivit''' - průběh aktivit procesu nebo činností
 +
 
 +
'''diagramy komponent''' - popisují rozdělení systému na funkční celky a definují náplň jednotlivých komponent
 +
 
 +
'''diagramy nasazení''' - popisují umístění funkčních celků
 +
 
  
 
Pro návrh diagramu tříd máme následující parametry:
 
Pro návrh diagramu tříd máme následující parametry:
 +
 
Atributy a metody - definujeme viditelnost a vlastnosti (+ public, # protected, - private, / readonly, in/out směr)
 
Atributy a metody - definujeme viditelnost a vlastnosti (+ public, # protected, - private, / readonly, in/out směr)
 +
 
Třída: obdélník, název tučně, pak seznam atributá a metod
 
Třída: obdélník, název tučně, pak seznam atributá a metod
 +
 
Objekt: Název:Třída
 
Objekt: Název:Třída
 +
 
Dědičnost - šipka od potomka k rodiči, může být i vícenásobná
 
Dědičnost - šipka od potomka k rodiči, může být i vícenásobná
 +
 
Asociace - 0..1  1..1 0..N 1...N  --> šipka od první třídy a ta obsahuje odkazy/využívá x..y objektů druhé třídy (např Podvozek 1 ---> 4 Kola ), nad šipkou název činnosti (pokud možno lepší než "má")
 
Asociace - 0..1  1..1 0..N 1...N  --> šipka od první třídy a ta obsahuje odkazy/využívá x..y objektů druhé třídy (např Podvozek 1 ---> 4 Kola ), nad šipkou název činnosti (pokud možno lepší než "má")
−
Kompozice - je li objekt v kompozici s jiným, je na něj silně vázán (například seznam a položka seznamu. seznam může existovat i bez položek, ale položka bez seznamu ne), značka prázdný kosočtverec
 
−
Agregace  - volná vazba, abstrakce "používá", objekty však mohou fungovat i nezávisle na sobě (například počítače v síti), značka plný kosočtverec
 
  
−
Java:
+
Kompozice - je li objekt v kompozici s jiným, je na něj silně vázán (například seznam a položka seznamu. seznam může existovat i bez položek, ale položka bez seznamu ne), značka plný kosočtverec
−
Návrh - UML diagramy, CRC karty (karty, kde je pro každá blok sloupec Má za úkol a Vyžaduje). Je li toho na kartě příliš, je vhodné zvážit její rozdělení
+
 
−
Implementace - podle návrhu, karta odpovídá třídě.  
+
Agregace  - volná vazba, abstrakce "používá", objekty však mohou fungovat i nezávisle na sobě (například počítače v síti), značka prázdný kosočtverec
−
Ladění  a testování - kontrolní výpisy, logování, watch na proměnných, ..., po té test pro různá data (generovaná, "nepříjemná")  a sledování správnosti, rychlosti, využití zdrojů, uvolnění
+
 
−
Dokumentace - štábní kultura, konvence pojmenovávání, komentáře, Javadoc komentáře a generovaná dokumentace
+
== Java ==
 +
 
 +
'''Návrh''' - UML diagramy, CRC karty (karty, kde je pro každá blok sloupec Má za úkol a Vyžaduje). Je li toho na kartě příliš, je vhodné zvážit její rozdělení
 +
 
 +
'''Implementace''' - podle návrhu, karta odpovídá třídě.  
 +
 
 +
'''Ladění  a testování''' - kontrolní výpisy, logování, watch na proměnných, ..., po té test pro různá data (generovaná, "nepříjemná")  a sledování správnosti, rychlosti, využití zdrojů, uvolnění
 +
 
 +
'''Dokumentace''' - štábní kultura, konvence pojmenovávání, komentáře, Javadoc komentáře a generovaná dokumentace
 +
 
 +
[[Kategorie:fav-kiv-bzinf]]

Aktuální verze z 20. 8. 2017, 09:54

Obsah

[editovat] Úvod

Programování je proces vytváření software splňující určité funkce. K programování využíváme programovací jazyky, dříve procedurální (nestrukturované (asembler) - bez podprogramů, pouze skoky v programu (goto), nebo strukturované (basic, c, pascal) - podprogramy, skoky jen velmi vyjímečně), dnes nejčastěji objektově zaměřené (objekty jsou stavební kameny a obalují funkce, využití technik OOP).

Dříve bylo programování spojeno s testováním, nyní je proces rozdělen do několika fází:

Analýza - Sbírání informací od zákzníka či zadavatele

Návrh - Návrh SW tak, aby splňoval požadavky analýzy

Kódování - Implementace návrhu

Ladění - Testování a odstraňování chyb


[editovat] Styly

Vodopád - fáze jdou za sebou, nevracíme se, ani neodbočujeme (nejstarší), týmy se zapojují do procesu pokud je na řadě jejich blok

Formální - návrh je matematicky zcela do detailu popsán a jednotlivé bloky modelu jsou poté 1:1 implementovány

Evoluční - začíná se malým funkčním SW, na který nabalujeme další funkce, ale nevíme, jaké funkce bude v budoucnu mít

Iterativní - proces je rozdělen na iterace, v každé iteraci je naplánováno několik funkčností, iterace stejně dlouhé, po iteraci je SW vždy v kompletní spustitelné podobě

Komponentový - využití hotových komponent, či implementace vlastních, poté stavění SW z komponent jako z kostek

[editovat] Objektově orientovaný návrh

OO umožňuje, a klade si za cíle:

Znovupoužitelnost - abstraktní části kódu jsou univerzální a je tedy možné je používat stále dokola

Robustnost - návrh předpokládá všechny vstupy, nejen ty, které jsou očekávané

Přispůsobivost - návrh lze pouze s minimálními zásahy do kódu použít na různých platformách

[editovat] Pilíře OO návrhu

Dědičnost, Zapouzdření, Polymorfysmus - PPA2

Modularita - rozdělení programu na bloky - moduly

Abstrakce - Návrh na abstraktní úrovni je snadno implementovatelný


[[Soubor:Soubor:Příklad.jpg]]

[editovat] Jazyk UML

Jazyk pro abstraktní návrh OO SW, modelování SW před implementací, navrhujeme pouze strukturu, nikoliv funkčnost. Typy UML:

diagram tříd a objektů - popisují statickou strukturu systému

modely jednání (diagram případů užití) - dokumentují možné případy použití systému, události, na které musí systém reagovat

scénáře činností (diagramy posloupností) - popisují scénář průběhu určité činnosti, těchto činností je model jednání složen

diagramy spolupráce - zachycují komunikaci spolupracujících objektů

stavové diagramy - popisují dynamické chování objektu nebo systému

diagramy aktivit - průběh aktivit procesu nebo činností

diagramy komponent - popisují rozdělení systému na funkční celky a definují náplň jednotlivých komponent

diagramy nasazení - popisují umístění funkčních celků


Pro návrh diagramu tříd máme následující parametry:

Atributy a metody - definujeme viditelnost a vlastnosti (+ public, # protected, - private, / readonly, in/out směr)

Třída: obdélník, název tučně, pak seznam atributá a metod

Objekt: Název:Třída

Dědičnost - šipka od potomka k rodiči, může být i vícenásobná

Asociace - 0..1 1..1 0..N 1...N --> šipka od první třídy a ta obsahuje odkazy/využívá x..y objektů druhé třídy (např Podvozek 1 ---> 4 Kola ), nad šipkou název činnosti (pokud možno lepší než "má")

Kompozice - je li objekt v kompozici s jiným, je na něj silně vázán (například seznam a položka seznamu. seznam může existovat i bez položek, ale položka bez seznamu ne), značka plný kosočtverec

Agregace - volná vazba, abstrakce "používá", objekty však mohou fungovat i nezávisle na sobě (například počítače v síti), značka prázdný kosočtverec

[editovat] Java

Návrh - UML diagramy, CRC karty (karty, kde je pro každá blok sloupec Má za úkol a Vyžaduje). Je li toho na kartě příliš, je vhodné zvážit její rozdělení

Implementace - podle návrhu, karta odpovídá třídě.

Ladění a testování - kontrolní výpisy, logování, watch na proměnných, ..., po té test pro různá data (generovaná, "nepříjemná") a sledování správnosti, rychlosti, využití zdrojů, uvolnění

Dokumentace - štábní kultura, konvence pojmenovávání, komentáře, Javadoc komentáře a generovaná dokumentace

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje