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

Z FAV wiki
Přejít na: navigace, hledání

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