Programování II. Modularita 2017/18

Podobné dokumenty
Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Programování II. Objektová dekompozice Třída jako objekt 2018/19

Programování II. Úvod do dědičnosti 2018/19

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19

Programování II. Dědičnost změna chování 2018/19

Programování II. Polymorfismus

Programování II. Návrh programu I 2018/19

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Program a životní cyklus programu

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7

Vyřešené teoretické otázky do OOP ( )

Úvod. Programovací paradigmata

VISUAL BASIC. Přehled témat

11 Návrh programového vybavení

DF FA Novinky v Simotion Scout

Sada 1 - Základy programování

IB111 Úvod do programování skrze Python Přednáška 13

ALGORITMIZACE A PROGRAMOVÁNÍ

PB161 Základy OOP. Tomáš Brukner

Programování v C++ 3, 3. cvičení

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Dědění, polymorfismus

Maturitní otázky z předmětu PROGRAMOVÁNÍ

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Programovací techniky

Lekce 01 Úvod do algoritmizace

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

Základy objektové orientace I. Únor 2010

TÉMATICKÝ OKRUH Softwarové inženýrství

IRAE 07/08 Přednáška č. 1

Delphi - objektově orientované

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Generické programování

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

DTP Základy programování Úvod do předmětu

Úvod do principů objektově orientovaného programování

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

PB161 Programování v jazyce C++ Přednáška 1

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

Obsah. Zpracoval:

Architektura softwarových systémů

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

10 Balíčky, grafické znázornění tříd, základy zapozdření

Maturitní témata Školní rok: 2015/2016

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Objektové programování

Metody popisu systému, základy UML

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Algoritmizace a programování

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

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í.

Úvod do programování - Java. Cvičení č.4

Objektově orientovaný přístup

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

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Problémové domény a jejich charakteristiky

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

State. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Objektově orientované technologie Diagram komponent Implementační náhled (Diagram rozmístění) Pavel Děrgel, Daniela Szturcová

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Algoritmizace. Cíle předmětu

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Objekty, třídy, vazby 2006 UOMO 30

Vývoj řízený testy Test Driven Development

6 Objektově-orientovaný vývoj programového vybavení

Virtuální metody - polymorfizmus

Vývoj informačních systémů. Přehled témat a úkolů

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Softwarové komponenty a Internet

Programovací jazyk Pascal

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

11. Přehled prog. jazyků

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Programovací techniky

Vývoj informačních systémů. Obecně o IS

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Vstupní požadavky, doporučení a metodické pokyny

Objektově orientované programování. Úvod

Servisně orientovaná architektura a její aplikace v systémech sledování a řízení výroby

Paralelní programování

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Software602 Form Designer

24. listopadu 2013, Brno Připravil: David Procházka

Design systému. Komponentová versus procesní architektura

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

Vývoj informačních systémů. Přehled témat a úkolů

Transkript:

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 paradigmat? Aspekty kvality software.

Velké projekty Programování velkých projektů je kvalitativně odlišné od vytváření malých programů. Důvodem k úvahám o principech programování byla a je rostoucí komplexnost počítačových programů.

Paradigmata Imperativní programování Deklarativní programování Funkcionální programování Logické programování Modulární programování Objektově orientované programování

Imperativní programování Procedurální programování Posloupnost kroků, kterými měníme stav proměnných programu. Strukturované programování Sekvence, iterace, větvení, skoky, abstrakce. Tak, jak to známe z běžně používaných jazyků.

Modulární programování Návrh shora-dolů. Rozdělení programu na nezávislé, zaměnitelné moduly, které zajišťují dílčí funkčnost. Modul obsahuje vše nezbytné pro zajištění funkčnosti (data a algoritmy).

Objektově orientované programování

Faktory kvality software Vnitřní a vnější faktory. Vnitřní jsou skryty uživateli. (JAK) Vnější popisují chování navenek. (CO)

Vnější faktory Správnost Robustnost Rychlost, rozšiřitelnost, použitelnost, kompatibilita,...

Klíčové faktory

Další faktory

Modularita

Modul Metoda konstrukce software je modulární, pokud je založena na dekompozici, která pomáhá návrhářům decentralizovat architekturu a tvořit softwarové systémy složené z autonomních prvků, modulů, propojených do jednoduchých a srozumitelných struktur.

Modularita programu Pochopitelnost Samostatnost Kombinovatelnost Zapouzdření Explicitní rozhraní Syntaktická podpora

Pochopitelnost Modul by měl vykonávat jednu jasně definovanou a pochopitelnou úlohu, popřípadě několik jasně definovaných úloh.

Samostatnost Každý modul musí být relativně samostatný, a měl by mít co možná nejmenší počet vazeb na ostatní moduly. Nebylo by vhodné, aby byly všechny moduly programu navzájem propojené a na sobě závislé. Moduly bychom tak nemohli individuálně otestovat, pochopit ani přenést do jiného projektu.

Kombinovatelnost Moduly musí být navzájem kombinovatelné. Musí být možno modul vzít a použít jej v jiném kontextu nebo třeba i v jiném projektu.

Zapouzdření Moduly musí mít právo na jisté soukromí: je přípustné a žádoucí, aby veškeré informace, které nejsou potřebné pro klienty modulů, zůstaly skryté uvnitř modulu. V praxi se pak ukazuje, že většina funkcionality modulu je skryta a jen malá část je viditelná navenek. Skryté části říkáme implementace modulu a veřejné části říkáme rozhraní (interface) modulu.

Explicitní rozhraní Z definice modulu musí být všeobecně zřejmé, jaké předpoklady pro vykonávání své úlohy potřebuje.

Syntaktická podpora Moduly počítačového programu musí být jasně vymezeny syntaktickými jednotkami programu. Ze zápisu programovacího jazyka musí být zcela evidentní, kde začíná a kde končí zápis jednoho modulu. Není například možné, aby v kompaktním programu patřily modulu všechny sudé řádky, zatímco všechny liché řádky modulu nepatřily.

Pět kritérií a pravidel modularity Dekomponovatelnost. Kombinovatelnost. Pochopitelnost. Kontinuita. Ochrana. Přímé mapování. Pár rozhraní. Malá rozhraní (weak coupling). Explicitní rozhraní. Skrývání informací.

Kritéria

Kritéria

Pravidla

Příklad

Třída x Objekt Třída jako statický popis. Objekt jako run-time (běhová) reprezentace: stav (data) chování (algoritmy)

Terminologie Třída Členská funkce, metoda Členská položka, proměnná Objekt, instance třídy, this (vykonavatel metody) Konstruktor, destruktor

Deklarace třídy

Implementace (definice) třídy

Použití třídy 1

Použití třídy 2

Výsledek

Použití třídy 3

Úkoly na cvičení Implementujte třídu KeyValue dle přednášky a vytvořte zřetězenou lineární strukturu mnoha (např. tisíce) objektů a pracujte s ní (vypište např. všechny klíče od prvního do posledního objektu). Vytvořte podobnou třídu jako KeyValue, ale s hodnotou i klíčem typu (třídy) string a se dvěma sousedícími objekty. Implementuje jednoduchý klíč zvířat. Klíčem je rozhodovací kritérium, hodnotou název zvířete, resp. druhu apod. Naplňte klíč alespoň deseti objekty a vypište celý klíč na obrazovku.

Kontrolní otázky Co je hlavním motivem pro vývoj programovacího paradigmatu od imperativního k objektovému? Co je imperativní programování? Co je modulární programování? Jaké jsou hlavní faktory kvality software? Co je pochopitelnost modulu? Co je samostatnost modulu? Co je kombinovatelnost modulu? Co je zapouzdření modulu? Co je explicitní rozhraní modulu? Co je syntaktická podpora modularity? Co je pět kritérií pro dobrou modularitu? Co se rozumí pěti pravidly zajišťující dobrou modularitu?

Ke studiu Bertrand Meyer. Object-Oriented Software Construction. Prentice Hall 1997. [3-16, 39-52]