APNVZ_01. Návrhové vzory Design Patterns
|
|
- Jaroslav Matějka
- před 6 lety
- Počet zobrazení:
Transkript
1 APNVZ_01 Návrhové vzory Design Patterns 1
2 Definice vzoru Každý vzor popisuje problém, který nastává opakovaně v našem prostředí, a potom popisuje podstatu řešení tohoto problému takovým způsobem, že můžete použít řešení milionkrát bez toho, že byste dělali stejnou věc dvakrát. Christopher Alexander 2
3 Světlo z obou stran každého pokoje Když mají lidé na výběr, vždy tíhnou k takovým pokojům, do kterých přichází přirozené světlo alespoň ze dvou stran. Při projektování domu, je nejlepší umístit každý pokoj tak, aby měl vnější prostor alespoň ze dvou stran, s dostatkem oken, které by zachycovaly přirozené světlo více než z jednoho směru. 3
4 Literatura Gamma E., Helm R.: Degign Patterns. Addison -Wesley 1995 (český překlad Návrh programů pomocí vzorů. Grada 2003) 4
5 Základní literatura Pecinovský R.: Návrhové vzory. Computer Press 2007 Bruce Eckel: Thinking in Patterns. Buchmann F.: Pattern-Oriented Software Architecture A System of Patterns. Willey 1998 Metsker S.J. Wake W.C.: Design Patterns in Java. Addison-Wesley Freeman, E. Head First Design Patterns. O REILLY
6 Existující knihy k Business Patterns 6
7 Úvod Vzory pro návrh, návrhové vzory (Design Patterns) souvislost s objektově orientovanou analýzou a návrhem. Klíčový poje znovupoužitelnost (reusability) Znovupoužitelnost v oblasti objektově orientovaných jazyků části software, které se použijí buď přímo, nebo po malém přizpůsobení využívá se dědičnosti. Návrhové vzory pomáhají rozvíjet objektově orientované myšlení. 7
8 Úvod Znovupoužitelnost je v oblasti objektově orientovaných jazyků použita na úrovni implementace zdrojového kódu. Vzory pro návrh vycházejí z práce zkušeného návrháře, ten nezačíná svoji práci od nuly, ale pokud se mu nějaký způsob řešení osvědčil snaha používat ho znovu a vylepšovat ho. Znovupoužitelnost v oblasti návrhových vzorů znamená znovupoužití znalostí získaných v průběhu návrhu. 8
9 Úvod Znovupoužitelnost je možné chápat v několika úrovních: dědičnost a business objekty (aplikační objekty) znovupoužitelnost na implementační úrovni návrhové vzory znovupoužitelnost v oblasti návrhu nabytých znalostí 9
10 Co je vzor Vzor určuje opakující se (opětovný) návrh problému, který vzniká ve specifických situacích a presentuje nějaké jejich řešení. Vzory reprezentují existující, dobře prověřené zkušenosti návrhu. Vzory identifikují a specifikují abstrakce, které jsou nad úrovní jednotlivých tříd a instancí nebo komponent. Vzory poskytují společný slovník a pochopení principů návrhu. 10
11 Co je vzor Vzory jsou prostředky pro dokumentaci softwarové architektury. Vzory pomáhají obsáhnout složitost software a umožňují srozumitelnost a pochopitelnost software. 11
12 Co je návrhový vzor Návrhový vzor je libovolná znalost, která vznikla při návrhu programového systému abstrakcí od specifických konkrétních podmínek. Nutno doplnit konkrétní fyzickou podobu takovéto znalosti. Forma zápisu vzoru pro návrh není pevně daná, je závislá na tom, čeho se zkušenost kterou chceme vyjádřit návrhovým vzorem týká. 12
13 Forma zápisu Model použitý při návrhu potřebuje slovní komentář, který přesněji specifikuje použité prvky a vazby v modelu a umožní pochopení problému. Nejdůležitějšími charakteristikami tohoto popisu kromě jiných bývají: kontext situace, která způsobuje vznik problému, problém opakující se problém vznikající v daném kontextu, řešení prověřené řešení problému (někdy alespoň částečné). 13
14 Kontext, problém a řešení kontext: vytvoření programového vybavení s uživatelským grafickým rozhraním problém: obyčejně je problém reprezentovaný množinou někdy protichůdně působících sil např.: uživatelské rozhraní by mělo být snadno modifikovatelné, funkční jádro programového vybavení by nemělo být postiženo změnou uživatelského rozhraní. 14
15 Kontext, problém a řešení obecně síly pomáhají objasnit problém řešení z různých úhlů pohledu a pomáhají tak mu porozumět ve všech detailech, síly mohou působit doplňkově nebo protichůdně. řešení: ukazuje, jak řešit opakující se problém nebo lépe, jak vyrovnat síly, s ním sdružené. 15
16 Řešení v softwarové architektuře řešení zahrnuje dva aspekty: 1. Každý vzor specifikuje jistou strukturu a prostorovou konfiguraci prvků. Řešení naznačeného problému je v rozdělené aplikace na vlastní zpracování, vstupy, výstupy (MVC). To představuje statickou stránku (strukturu) řešeného problému. 2. Každý vzor specifikuje chování za běhu (run-time). Např. MVC controller dostane vstup od myši, klávesnice. Událost je transformována na požadavky služeb. 16
17 Řešení Tyto požadavky služeb jsou zaslány buď modelu nebo pohledům. Chování za běhu reprezentuje dynamickou stránku řešení problému. Jak účastníci spolupracují, jak je organizována práce mezi nimi? 17
18 Příklad Před popisem vzoru je třeba vzor identifikovat a abstrahovat od konkrétností. Při návrhu konkrétní aplikace se objevují některé analogie mezi chováním vytvářených objektů (mají shodné stavy a přechody), jejich vazbami na okolní objekty (vystupují v podobných rolích). 18
19 Cesty jak odhalit NV (DP) Postup, který zachycuje vztahy mezi skupinami rolí objektů. Např. benzínová pumpa objekty: zákazník role kupujícího benzínová pumpa role prodejce auto role příjemce Abstrakcí od detailů dojdeme k návrhu obecného vzoru prodeje (orientujeme se na role). 19
20 Cesty jak odhalit NV (DP) Pro prodej, kýmkoli realizovaný, je typické výskyt tří rolí: prodejce kupující příjemce Zaznamenáním vzájemného vztahu a operací probíhajících mezi těmito třemi aktéry (actors), vzniká návrhový vzor. Obecný vzor prodeje je potom možné aplikovat na jakýkoli prodej. 20
21 Formalizace popisu řešení CRC card Class Responsibility Collaborators Class třída, její název Responsibilities funkčnost, zodpovědnost Collaborators spolupracující třídy, komponenty Jiná grafická notace než UML UML grafická notace 21
22 Popis vzoru Kromě kontextu, problému a řešení diagramy a scénáře k zachycení statické a dynamické stránky řešení; varianty vzoru jméno a další aliasy struktura implementace příklady řešení výhody/ nevýhody vazby na další vzory 22
23 Vzor architektury vrstvy (Layers) Vzor Vrstvy (Layers) pomáhá strukturovat aplikace, které mohou být dekomponovány na skupiny podúloh, ve kterých každá skupina podúloh je na dané úrovni abstrakce. Nejznámějším příkladem architektury vrstev jsou síťové protokoly. Protokol se skládá z množiny pravidel a konvencí, které popisují, jak počítačové programy komunikují přes hranice počítačů. Je definován formát, obsah a význam zpráv. 23
24 Vzor architektury vrstvy (Layers) Protokol specifikuje dohody v množství abstraktních úrovní, začínající od přenosu bitů, až po nejvyšší úroveň aplikační logiky. 24
25 Vzor architektury vrstvy (Layers) Přístup po vrstvách je považován za lepší než implementace protokolu jako monolitického bloku, protože implementace koncepčně odlišných problémů odděleně přináší několik výhod např. podpora pro týmovou práci, podpora inkrementálního programování. FTP FTP protokol FTP TCP protokol TCP TCP IP protokol IP IP Ethernet Ethernet Fyzické propojení Ethernet 25
26 Kontext Rozsáhlý systém vyžadující dekompozici. Problém Navrhujeme systém, jehož dominantní charakteristikou je kombinace nízko a vysoko úrovňových problémů. Vysoce úrovňové operace závisí na nízko úrovňových. Typickým vzorem komunikačního toku požadavků je, že se pohybují z vysoko úrovňových k nízko úrovňovým. Odpovědi na tyto dotazy mají směr opačný. 26
27 Problém V takovém případě potřebujeme dát do rovnováhy následující síly: pozdější změny kódu by neměly ovlivňovat celý systém. Měly by být svázány s jednou vrstvou. stabilní interface, části systému by měly být zaměnitelné, Komponenty by měly mít možnost nahradit alternativní implementace bez účinku na zbytek systému. neexistuje žádná standardní granularita složité komponenty vyžadují další dekompozici 27
28 Řešení Z nejvyšší úrovně je řešení velmi jednoduché. Strukturujte systém do vhodného počtu vrstev a umístěte je na vrchol každé předcházející. Začněte nejnižší vrstvou abstrakce. Postupujte směrem nahoru od J-1 vrstvy k vrstvě J, až dosáhnete vrcholu. Většina služeb, které vrstva J poskytuje jsou složené služby poskytované vrstvou J-1. 28
29 Řešení Hlavní zásadou struktury tohoto vzoru je, že služby Vrstvy_J jsou pouze použity Vrstvou J+1. Neexistuje žádná další závislost mezi vrstvami. Tato struktura může být srovnatelná se zásobníkem. Každá konkrétní vrstva chrání nižší vrstvy od přímého přístupu některé z vyšších vrstev. Klient Vrstva N nejvyšší úroveň abstrakce Vrstva N-1 Vrstva 1 nejnižší úroveň abstrakce 29
30 Scénáře použití 1. Klient zadává dotaz nejvyšší vrstvě N. Protože tato vrstva nemůže požadavek kompletně splnit, obrací se na vrstvu N-1. Ta pošle další dotaz vrstvě N-2 a tak to pokračuje až k vrstvě 1. Tam jsou vykonány služby na nízké úrovni. Je-li třeba, odpovědi na různé dotazy jsou předány do vrstvy 2, z vrstvy 2, pak do vrstvy 3, až se konečně dostanou k vrstvě N. Je to tzv. top-down komunikace. 30
31 Scénáře použití 2. Tento scénář ilustruje bottom-up komunikaci. Např. když driver zařízení detekuje vstup: začíná se od vrstvy 1. pak se pokračuje vrstvou 2, až se dosáhne nejvyšší vrstvy N. 31
32 Scénáře použití 3. Tento scénář popisuje situaci, kdy požadavky prochází pouze podmnožinou vrstev. Např. požadavek na nejvyšší úrovni postoupí k úrovni N-1, pokud tato úroveň uspokojí jeho požadavek, dál se již nepokračuje. Příkladem může být cache. 4. Tento scénář je podobný předchozímu jen s tím rozdílem, že se začíná od nejnižší vrstvy a pokračuje se pouze nejvyšší nutné vrstvě. 32
33 Scénáře použití 5. Zahrnuje dva zásobníky komunikujících vrstev. Tento scénář je známý z komunikačních protokolů, kde jsou zásobníky známé jako zásobníky protokolů. 33
34 Implementace 1. Definovat abstraktní kritérium pro seskupení úloh do vrstev. 2. Stanovit počet abstraktních úrovní podle vašeho abstrakčního kritéria. Každá abstrakční úroveň koresponduje s jednou vrstvou vzoru. 3. Pojmenovat vrstvy a přiřadit úlohy ke každé z nich. 4. Specifikovat služby jednotlivých vrstev. 5. Zjemnit vrstvení. 6. Specifikovat rozhraní pro každou vrstvu. 7. Navrhnout strategii ošetření chyb. 34
35 Varianty Relaxed Layered System je méně restriktivní co se týká vztahů mezi vrstvami. V této variantě může každá vrstva využívat služeb libovolné nižší vrstvy. Může také existovat varianta, kdy jednotlivé vrstvy mohou zviditelnit některé služby pro libovolnou z vyšších vrstev a naopak některé služby poskytovat pouze pro nejbližší vyšší vrstvu. 35
36 Varianty Layered Through Inheritance je varianta, která se nachází v některých objektově orientovaných systémech. V této variantě jsou nižší vrstvy implementovány jako základní třídy. 36
37 Známé aplikace Virtuální stroje. Příkladem může být Java Virtual Machine (JVM) definující formát binárního kódu. Protože je JVM je závislý na softwarové platformě, existují různé JVM pro různé operační systémy a procesory. APIs- Application Programming Interface rozhraní aplikačních programů. API je obyčejně kolekce funkčních specifikací (volání systémových funkcí). 37
38 Známé aplikace Informační systém IS. Rovněž informační systémy bývají vytvářeny pomocí architektury založené na vrstvách. 38
39 Výhody Znovupoužitelnost vrstev, dá se využít v případě dobře definované abstrakce a dobře definovaného a dokumentovaného rozhraní. Podpora standardizace. Jasně definované a všeobecně akceptované úrovně abstrakce umožňují rozvoj standardizovaných úloh a rozhraní. Závislosti jsou lokální. Standardizované rozhraní mezi vrstvami obyčejně omezuje změnu kódu pouze na danou vrstvu. Zaměnitelnost. Daná implementovaná vrstva může být zaměněna sémanticky ekvivalentní implementací bez velkého úsilí. 39
40 Slabá místa Kaskádní změny chování může nastat při změně chování dané vrstvy. Nízká efektivnost. Architektura založená na vrstvách je obyčejně méně efektivní než monolitická. Problémy se stanovením správné granularity vrstev. 40
41 Roury a filtry Pipes and Filters Návrhový vzor roury a filtry poskytuje strukturu pro systémy, které zpracovávají tok dat (a stream of data). Každý krok zpracování je zapouzdřen v komponentě nazývané filtr. Data jsou posílána prostřednictvím rour (pipes) mezi sousedními filtry. Kombinace filtrů a rour dovoluje vytvořit řadu podobných systémů. 41
42 Kontext Zpracování datových toků. 42
43 Problém Je třeba vytvořit systém, který musí zpracovat a transformovat tok vstupních dat. Implementace takového systému jako jednotné komponenty není možné z několika důvodů: systém bude vytvořen několika vývojáři, úloha se přirozeně rozpadá do několika procesních stavů, je pravděpodobné, že se požadavky budou měnit. 43
44 Požadavky Budoucí rozšíření systému by mělo být možné změnou procesních kroků, nebo rekombinací kroků, které si je schopen provést i sám uživatel. Malé procesní kroky je snadné použít znova v odlišném kontextu, než velké komponenty. Procesní kroky, které bezprostředně na sebe nenavazují, spolu nesdílejí informace. 44
45 Požadavky Zda-li je separace procesních kroků řešitelná, silně závisí na aplikační doméně a problému, který má být řešen. Např. interaktivní, událostmi řízený systém je nemožné rozdělit do sekvenčních kroků. 45
46 Řešení Architektonický vzor roury a filtry dělí řešenou úlohu do několika sekvenčních, procesních kroků. Tyto kroky jsou spojeny pomocí datových toků (rour) do systému, kde výstupní data daného procesního kroku jsou vstupem do následujícího procesního kroku. Každý procesní krok je implementován jako komponenta filtr. 46
47 Řešení Filtr konzumuje a dodává data inkrementálně nejdříve spotřebuje celý vstup dat, než vytvoří jakýkoli výstup. Vstupem do takového systému je datový zdroj, jako např. textový soubor, výstupem data sink jako např. soubor, nebo terminál, či animační program. Datový zdroj, datový výstup a filtry jsou spojeny sekvenčně rourami. Každá roura implementuje datový tok mezi přilehlými procesními kroky. 47
48 Struktura Daný filtr může být kombinací libovolných z těchto základních principů: následující prvek si tahá výstupní data z filtru pull varianta, předchozí prvek tlačí vstupní data do filtru push varianta, nejběžnější, filtr je aktivní ve smyčce tahá si vstupní data a tlačí výstupní data pro další zpracování pull-push varianta. 48
49 Sekvenční diagram varianty pull Data Source Filter 1 pull Filter 2 pull Data Sink pull read read read f1 data f2 data 49
50 Sekvemční diagram varianty push Data Source push Filter 1 push Filter 2 push Data Sink write f1 write f2 write 50
51 Použití rour při V/V operacích mezi vlákny Pro vlákna bývá užitečné spolu komunikovat s využitím I/O operací. Knihovny pro vlákna poskytují podporu pro vnitro vláknové I/O operace formou rour (pipes). Třída PipedWriter umožňuje vláknu zapisovat do roury. Třída PipedReader dovoluji jinému vláknu číst ze stejné roury. 51
52 Použití rour při V/V operacích mezi vlákny Je možné se na to dívat jako na variace problému producent/konsument, kde roury představují zakonzervované řešení. 52
53 // Nastaví časový limit vykonávání programu Poznámky import java.util.*; public class Timeout extends Timer { public Timeout(int delay, final String msg) { super(true); // Daemon thread schedule(new TimerTask() { public void run() { System.out.println(msg); System.exit(0);, delay); 53
54 // Použití rour pro vnitro vláknové I/O operace Poznámky import java.io.*; import java.util.*; class Sender extends Thread { private Random rand = new Random(); private PipedWriter out = new PipedWriter(); public PipedWriter getpipedwriter() { return out; public void run() { while(true) { for(char c = 'A'; c <= 'z'; c++) { try { out.write(c); sleep(rand.nextint(500)); catch(exception e) { throw new RuntimeException(e); 54
55 class Receiver extends Thread { private PipedReader in; public Receiver(Sender sender) throws IOException { in = new PipedReader(sender.getPipedWriter()); public void run() { try { while(true) { // blokuje, dokud nepřijdou znaky: // výpis znaků System.out.println("Read: " + (char)in.read()); catch(ioexception e) { throw new RuntimeException(e); Poznámky // hlavní metoda public class PipedIO { public static void main(string[] args) throws Exception { Sender sender = new Sender(); Receiver receiver = new Receiver(sender); sender.start(); receiver.start(); new Timeout(4000, "Terminated"); 55
56 Read: A Read: B Read: C Read: D Read: E Read: F Read: G Read: H Read: I Terminated Read: J Read: K Read: L Read: M Read: N Poznámky 56
57 Implementace Implementace rour a filtrů je přímá. 1. Rozdělit systémové úlohy do sekvencí procesních kroků. Každý takový procesní krok musí záviset pouze na výstupu z předchozího procesního kroku. 2. Definovat datový formát, který bude přenášen rourami. 3. Rozhodnout, jak implementovat každé spojení rour. 4. Navrhnout a implementovat filtry. 5. Navrhnout zpracování chyb. 57
58 Výhody Nejsou třeba žádné mezi soubory, ale jsou možné. Flexibilita je umožněna výměnou filtrů. Flexibilita rekombinace. To umožňuje vytvořit novou zpracovávající sekvenci změnou filtrů, nebo přidáním dalších filtrů. Opakované využití komponenty filtru. Rychlé prototypování. 58
59 Slabá místa Sdílení stavových (globálních) informací je nákladné a nepružné. Poněkud složité zpracování chyb. 59
60 Shrnutí Návrhový vzor roury a filtry slouží ke strukturování systémů, které zpracovávají toky dat. Příkladem mohou být překladače, toky dat příkazů atd. Můžeme se s ním také setkat v aplikacích, které převádějí danou strukturu dat na jinou a k tomu využívají XML. 60
61 Singleton deklarace třídy singletonu final deklarace všech konstruktorů private deklarace třídní proměnné odkazující se na singleton deklarace metody getinstance(), getreference(), getconnection() singleton ve společné oblasti pool např. pro připojení databáze pouze stanovený počet instancí 61
62 public interface Connection { Object get(); void set(object x); Poznámky public class ConnectionImplementation implements Connection { private Object obj; public Object get() { Object result; result = obj; obj = null; return result; public void set(object s) { ConnectionPool.checkConnection(this); obj = s; public class EmptyPoolException extends Exception { public EmptyPoolException(String s){ super(s);
63 public class ConnectionPool { //A singleton private static PoolManager pool = new PoolManager(); //private static PoolManager pool; /* public static PoolManager getinstance(){ if(pool == null) pool = new PoolManager(); return pool; // not used declaration - getconnection is the access method */ Poznámky public static void addconnections(int number) { for(int i = 0; i < number; i++) pool.add(new ConnectionImplementation(), i+1); public static Connection getconnection() throws EmptyPoolException { return (Connection)pool.get(); public static void releaseconnection(connection c) { pool.release(c); public static void print() { pool.print(); public static void checkconnection(connection c){ pool.checkconnection(c);
64 public class PoolManager { private ArrayList<PoolItem> items = new ArrayList<PoolItem>(); Poznámky public void add(connection item, int id) { items.add(new PoolItem(item, id)); public Connection get() throws EmptyPoolException { for (int i = 0; i < items.size(); i++) { PoolItem pitem = items.get(i); if (pitem.getinuse() == false) { pitem.setinuse(true); return pitem.getitem(); // Fail early: throw new EmptyPoolException(" No Free Connection "); // return null; // Delayed failure public void release(connection item) { for (int i = 0; i < items.size(); i++) { PoolItem pitem = (PoolItem) items.get(i); if (item == pitem.getitem()) { pitem.setinuse(false); item = null; return; throw new RuntimeException(item + " not found");
65 public void checkconnection(connection item) { for (int i = 0; i < items.size(); i++) { PoolItem pitem = (PoolItem) items.get(i); if (item == pitem.getitem() && pitem.getinuse() == false) throw new RuntimeException(item + " out of function - released "); Poznámky public void print() { for (int i = 0; i < items.size(); i++) { System.out.println(items.get(i).toString());
66 public class PoolItem { private boolean inuse = false; private int ident; // connection private Connection item; // konstruktor public PoolItem(Connection item, int i) { this.item = item; ident = i; public boolean getinuse() { return inuse; public void setinuse(boolean b1) { inuse = b1; public int getident() { return ident; public Connection getitem() { return item; public void setitem(connection cn) { item = cn; public String tostring() { return String.format("ident: %d inuse: %s", getident(), getinuse()? "true" : "false"); public void print() { System.out.println(this.toString()); Poznámky
67 public class TestClass { private String name; private int number; private double bignumber; public TestClass(String nm, int c1, double c2) { name = nm; number = c1; bignumber = c2; public String getname() { return name; public int getnumber() { return number; public double getbignumber() { return bignumber; public String tostring() { return String.format("%s %s %d %.2f", getclass().getname(), getname(), getnumber(), getbignumber()); public void print() { System.out.println(this.toString()); Poznámky
68 public class ConnectionPoolDemo { public static void main(string[] args) { ConnectionPool.addConnections(3); TestClass t1; ConnectionPool.print(); Connection c = null; try { c = ConnectionPool.getConnection(); Poznámky catch (EmptyPoolException e) { //PoolManager.EmptyPoolException e //throw new RuntimeException(e); System.err.printf("EmptyPoolException %s\n", e); // checking connection the line 11 with line 12 if(c!= null) { c.set(new TestClass("Prvni", 22, )); t1 = (TestClass) c.get(); // mock operations t1.print(); ConnectionPool.print(); //ConnectionPool.releaseConnection(c); Connection c1 = null; try { c1 = ConnectionPool.getConnection(); c1.set(new TestClass("Druhy", 25, )); t1 = (TestClass) c1.get(); t1.print(); catch (EmptyPoolException e) { //throw new RuntimeException(e); System.err.printf("EmptyPoolException %s\n", e);
69 ConnectionPool.print(); Poznámky Connection c2 = null; try { c2 = ConnectionPool.getConnection(); c2.set(new TestClass("Treti", 33, )); //c.set(new TestClass("Treti", 33, 18.2); zpusobi chybu t1 = (TestClass)c2.get(); t1.print(); catch (EmptyPoolException e) { //throw new RuntimeException(e); System.err.printf("EmptyPoolException %s\n", e); ConnectionPool.releaseConnection(c); ConnectionPool.print(); //ConnectionPool.releaseConnection(c); //ConnectionPool.releaseConnection(c2);
70 Connection c3 = null; try { c3 = ConnectionPool.getConnection(); c3.set(new TestClass("Treti", 45, )); t1 = (TestClass)c3.get(); t1.print(); catch (EmptyPoolException e) { //throw new RuntimeException(e); System.err.printf("EmptyPoolException %s\n", e); ConnectionPool.print(); //ConnectionPool.releaseConnection(c1); ConnectionPool.print(); Connection c5 = null; ConnectionPool.releaseConnection(c); ConnectionPool.print(); try { c5 = ConnectionPool.getConnection(); c5.set(new TestClass("Paty", 458, )); t1 = (TestClass)c5.get(); t1.print(); catch (EmptyPoolException e) { //throw new RuntimeException(e); System.err.printf("EmptyPoolException %s\n", e); ConnectionPool.print(); Poznámky
Návrhové vzory Design Patterns
Návrhové vzory Design Patterns doc. Ing. František Huňka, CSc. Ostravská univerzita PřF 1 Definice vzoru Každý vzor popisuje problém, který nastává opakovaně v našem prostředí, a potom popisuje podstatu
Abstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.
Jakub Klemsa Jan Legerský Objektově orientované programování klemsjak@fjfi.cvut.cz jan.legersky@gmail.com 30. října 2012 návrhový vzor (design pattern) obecné řešení problému, které se využívá při návrhu
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
SW_04. Návrhové vzory (Design Patterns)
SW_04 Návrhové vzory (Design Patterns) 1 Definice vzoru Každý vzor popisuje problém, který nastává opakovaně v našem prostředí, a potom popisuje podstatu řešení tohoto problému takovým způsobem, že můžete
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
Z. Kotala, P. Toman: Java ( Obsah )
Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například
KTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
Generické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
Základy objektové orientace I. Únor 2010
Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných
RMI Remote Method Invocation
2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient
Architektura softwarových systémů
Architektura softwarových systémů Definice, Strukturní a Procesní doporučení Ing. Tomáš Černý, MSCS Pojem softwarové architektury (SA) Obvyklé způsoby vysvětlování pojmu SA komponenty a vazby celková struktura
Soubor jako posloupnost bytů
Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení
Projekty pro výuku programování v jazyce Java
JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Vytváření a použití knihoven tříd
Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Bridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
8. přednáška: Soubory a proudy
8. přednáška: Soubory a proudy Soubor jako posloupnost bytů Ukládání/čtení primitivních typů Ukládání/čtení primitivních typů a objektů (řetězců) Ukládání/čtení objektů do souboru - serializace Obsah Algoritmizace
Java - výjimky. private void vstup() throws IOException {... }
Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace
typová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
14.4.1. Typický prvek kolekce pro české řazení
14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení
Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.
13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny
Programování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
7 Jazyk UML (Unified Modeling Language)
7 Jazyk UML (Unified Modeling Language) 7.1 Základní charakteristika jazyka Motivace - vznik řady OO metod a metodologií (konec 80. let a první polovina 90.let) podobné notace vyjadřující totéž, komplikující
7 Jazyk UML (Unified Modeling Language)
7 Jazyk UML (Unified Modeling Language) 7.1 Základní charakteristika jazyka Motivace - vznik řady OO metod a metodologií (konec 80. let a první polovina 90.let) podobné notace vyjadřující totéž, komplikující
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC
OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational
Java a XML. 10/26/09 1/7 Java a XML
Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis
Programování II. Třídy a objekty (objektová orientovanost) 2018/19
Programování II Třídy a objekty (objektová orientovanost) 2018/19 Osnova přednášky Objektový přístup (proč potřebujeme objekty). Třídy, objekty,... Příklad. Proč potřebujeme objekty? Udržovatelnost softwaru
Programování v Javě I. Únor 2009
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory
Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server
ADMINISTRACE POČÍTAČOVÝCH SÍTÍ OPC Server Funkce a využití v průmyslové automatizaci Jiří NOSEK 2011 Co je OPC Server? OPC = Open Process Control (původně OLE for Process Control) sada specifikací průmyslového
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9
Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24
Seminář Java Návrhové vzory Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Návrhové vzory 1/ 24 Znovupoužitelnost Dědičnost implementace třídy pomocí jiné (již existující)
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++ Prostory jmen U programů mohou někdy nastat kolize mezi jmény (tříd, funkcí, globálních proměnných atd.) pokud v různých
Teoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
Programování II. Modularita 2017/18
Programování II Modularita 2017/18 Modul? Osnova přednášky Vývoj programování Modularita Příklad Vývoj programování Paradigmata programování Jak a proč se jazyky vyvíjejí? V čem se OOP liší od předchozích
Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25
Seminář Java Návrhové vzory Radek Kočí Fakulta informačních technologií VUT Duben 2009 Radek Kočí Seminář Java Návrhové vzory 1/ 25 Znovupoužitelnost Dědičnost implementace třídy pomocí jiné (již existující)
Návrh softwarových systémů - architektura softwarových systémů
Návrh softwarových systémů - architektura softwarových systémů Martin Tomášek, Jiří Šebek Návrh softwarových systémů (B6B36NSS) Převzato z přednášky X36AAS M. Molhanec Co je to architektura Využívá se
Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků
Programování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
Pokročilé typové úlohy a scénáře 2006 UOMO 71
Pokročilé typové úlohy a scénáře 2006 UOMO 71 Osnova Interní model typové úlohy Vazby include a extend Provázanost typových úloh na firemní procesy a objekty Nejčastější chyby 2006 UOMO 72 Interní model
Architektura softwarových systémů
Architektura softwarových systémů Ing. Jiří Mlejnek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jiří Mlejnek, 2011 jiri.mlejnek@fit.cvut.cz Softwarové
Datové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)
Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze A0B36PR2 Programování 2 Jan Faigl, 2015 A0B36PR2
Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25
Seminář Java Výjimky Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Výjimky 1/ 25 Výjimky Co a k čemu jsou výjimky výjimka je mechanizmus umožňující psát robustní, spolehlivé
20. Projekt Domácí mediotéka
Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý
1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services
13. Webové služby. K čemu slouží? Popis a vyhledávání služeb. Co je a k čemu slouží orchestrace a choreografie služeb. Technologie pro implementaci služeb 1. Webové služby. K čemu slouží? Definice WS -
UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/
UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok
Návrhové vzory OMO, LS 2014/2015
Návrhové vzory OMO, LS 2014/2015 Motivace Cílem objektového návrhu je strukturu aplikace navrhnout tak, aby splňovala následující kritéria: snadná rozšiřitelnost účelnost testovatelnost dokumentovatelnost
, Brno Připravil: David Procházka Návrhové vzory
7. 10. 2010, Brno Připravil: David Procházka Návrhové vzory Základy objektově orientovaného návrhu Design Patterns NV (Design patterns) můžeme s nadsázkou označit za ntu, jak řešit určitý problém nejen
Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu
Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní
Výčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme
Dědičnost (inheritance)
Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)
Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.
1. Zapouzdření Cíl látky Tento blok nejdříve přiblíží zásadu zapouzdření a odpoutání kódu a po té na relacích, jako jsou asociace, agregace a kompozice, vysvětlí jak lze objektový zdrojový kód zapouzdřovat
MVC (Model-View-Controller)
MVC vs PAC MVC (Model-View-Controller) Architektonický vzor zabývající se uživatelským rozhraním Odděluje doménovou (bussiness) logiku a uživatelské rozhraní do tří nezávislých komponent: Model View Controller
Algoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
PREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
IRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
Vývoj informačních systémů. Přehled témat a úkolů
Vývoj informačních systémů Přehled témat a úkolů Organizace výuky doc. Mgr. Miloš Kudělka, Ph.D. EA 439, +420 597 325 877 homel.vsb.cz/~kud007 milos.kudelka@vsb.cz Přednáška Znalosti Schopnosti Cvičení
Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth
Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
1. Dědičnost a polymorfismus
1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář
PŘÍLOHA C Požadavky na Dokumentaci
PŘÍLOHA C Požadavky na Dokumentaci Příloha C Požadavky na Dokumentaci Stránka 1 z 5 1. Obecné požadavky Dodavatel dokumentaci zpracuje a bude dokumentaci v celém rozsahu průběžně aktualizovat při každé
1 Nejkratší cesta grafem
Bakalářské zkoušky (příklady otázek) podzim 2014 1 Nejkratší cesta grafem 1. Uvažujte graf s kladným ohodnocením hran (délka). Definujte formálně problém hledání nejkratší cesty mezi dvěma uzly tohoto
Obsah. Zpracoval:
Zpracoval: houzvjir@fel.cvut.cz 03. Modelem řízený vývoj. Doménový (business), konceptuální (analytický) a logický (návrhový) model. Vize projektu. (A7B36SIN) Obsah Modelem řízený vývoj... 2 Cíl MDD, proč
public class Karel { private int position; public boolean issmiling; public int getposition() { return position;
Objekty, třídy a hierarchie tříd Interface a abstraktní třídy Dědičnost Message passing Class diagramy a příklady systémů modelovaných pomocí OOP Volba správného přístupu Rozdíl mezi asociací, agregací
Analýza a Návrh. Analýza
Analysis & Design Návrh nebo Design? Design = návrh Není vytváření použitelného uživatelského prostředí (pouze malinká podmnožina celého návrhu) Často takto omezeně chápáno studenty nedokáží si představit,
Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika
Vývoj informačních systémů Architektura, návrh Vzory: Doménová logika Zachman Framework Zdroje Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
Softwarové komponenty a Internet
Softwarové komponenty a Internet Doc. Dr. Ing. Miroslav Beneš Katedra informatiky FEI VŠB-TU Ostrava Miroslav.Benes@vsb.cz Obsah přednášky Motivace Vývoj přístupů k tvorbě programů Definice komponenty
Algoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01
Anotace sady: Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Autor: Blanka Sadovská Klíčová slova: Algoritmus, proměnná, diagram Stupeň a typ vzdělávání: gymnaziální vzdělávání, 3. ročník
Návrh softwarových systémů - architektura softwarových systémů
Návrh softwarových systémů - architektura softwarových systémů Jiří Šebek Návrh softwarových systémů (B6B36NSS) Převzato z přednášky X36AAS M. Molhanec Co je to architektura 2 Využívá se v různách oborech
2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
11. Dědičnost. Dědičnost strana 103
Dědičnost strana 103 11. Dědičnost V této kapitole si vysvětlíme jeden ze základních pojmů objektově orientovaného programování dědičnost (inheritance). S ní souvisejí i následující témata: předek a potomek
Design systému. Komponentová versus procesní architektura
Design systému Komponentová versus procesní architektura Architektura : třídy statické aspekty propojení logický pohled struktura popisu systému Architektura procesů: objekty dynamické aspekty koordinace
1. Téma 12 - Textové soubory a výjimky
1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se
Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.
3 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Business modelling, základní nástroje a metody business modelování.
Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML
Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní k
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti
Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů
Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,
Výjimky. v C# a Javě
Výjimky v C# a Javě Výjimky v C# Výjimky poskytují v C# způsob, jak reagovat na nečekané události. Uživatel např. zadá místo čísla text nebo soubor, který chceme otevřít, je využíván jiným procesem. To
Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011
Technologie Java Enterprise Edition Přemek Brada, KIV ZČU 8.6.2011 Přehled tématu Motivace a úvod Infrastruktura pro velké Java aplikace (Java základní přehled) Části třívrstvé struktury servlety, JSP
Kolekce, cyklus foreach
Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro
PŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
Architektury Informačních systémů. Jaroslav Žáček
Architektury Informačních systémů Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Nutné pojmy Co je to informační systém? Jaké oblasti zahrnuje? Jaká je vazba IS na podnikovou strategii?
Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika
Vývoj informačních systémů Architektura, návrh Vzory: Doménová logika Zachman Framework Zdroje Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented
Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu
Procesy, vlákna Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu Implementace vláken one-to-one o implementace na úrovni jádra o každé vlákno je pro
7.3 Diagramy tříd - základy
7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'
10 Balíčky, grafické znázornění tříd, základy zapozdření
10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému