Objektově orientovaný přístup

Podobné dokumenty
Diagram tříd (class diagram)

Základy objektové orientace I. Únor 2010

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

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

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

Sada 1 - Základy programování

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

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

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

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

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.

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

Objektově orientované technologie Logická struktura systému Objektový diagram. Pavel Děrgel, Daniela Szturcová

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

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

Objektové programování

Úvod do softwarového inženýrství IUS 2009/2010 p.1/42

Objekty, třídy, vazby 2006 UOMO 30

2005/2006. Seminář Java I p.1/48

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

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

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

1. Dědičnost a polymorfismus

OOT Objektově orientované technologie

Analýza a modelování dat. Přednáška 4

Úvod. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík,2016

Matematika v programovacích

7.5 Diagram tříd pokročilé techniky

IB111 Programování a algoritmizace. Programovací jazyky

Mnohotvarost (polymorfizmus)

typová konverze typová inference

OOT Objektově orientované technologie

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie

Úvod. Programovací paradigmata

7.5 Diagram tříd pokročilé techniky

7.3 Diagramy tříd - základy

Nepravidlové a hybridní znalostní systémy

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

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

Objektově orientované programování v jazyce Python

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika

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

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

7.3 Diagramy tříd - základy

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

Programovací jazyky Přehled a vývoj

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

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

Diagramy tříd - základy

Delphi - objektově orientované

OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů Standardně zavedené proudy

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

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

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

Třída. Atributy. Operace

Objektově orientované programování v jazyce Python

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

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

UML. Unified Modeling Language. Součásti UML

Programování II. Modularita 2017/18

Objektově orientované databáze. Miroslav Beneš

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

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

PB161 Základy OOP. Tomáš Brukner

Jazyk C++ II. Šablony a implementace

Jazyk C++ II. STL knihovna kontejnery část 2

Tvorba informačních systémů

Databázové systémy. Vztahy a relace. 3.přednáška

Programovací techniky

Objektově orientované programování. Úvod

Sdílení dat mezi podprogramy

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

Terminologie v relačním modelu

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

2. Konceptuální model dat, E-R konceptuální model

NEJLEP Í NÁPADY PRO DÌTI

JAK SE ASERTIVNÌ PROSADIT

ISBN (elektronická verze ve formátu PDF)


NEJLEP Í NÁPADY PRO DÌTI


JAK SE DOMLUVIT S TCHYNÍ

KAPITOLY Z O ETØOVATELSKÉ PÉÈE I

ZÁSADY KONCEPTUÁLNÍHO TOTÁLNĚ OBJEKTOVĚ ORIENTOVANÉHO MODELOVÁNÍ

KIV/ASWI 2007/2008 Pokročilé softwarové inženýrství. Cíle předmětu Organizační informace Opakování

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787

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

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

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

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

Pokročilé programování v jazyce C pro chemiky (C3220) Úvod do jazyka C++

8 Třídy, objekty, metody, předávání argumentů metod

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.

Přijímací zkouška - informatika

1 Úvod do kompilátorů

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

Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D.

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

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Transkript:

Objektově orientovaný přístup 1

Historie programovacích jazyků 1945: John von Neumann článek o nové metodě pro ukládání programů 1945: Grace Hopper poprvé termín "bug" 1946: Konrad Zuse Plankalkul - první vysokoúrovňový jazyk 1949: Maurice Wilkes EDSAT první systém pro ukládání programů (1k paměti) 1957: FORTRAN (FORmula TRANslating), COBOL, LISP 1960: ALGOL 60 předchůdce jazyka Pascal 2

Historie programovacích jazyků 1962: SIMULA první objektově orientovaný jazyk 1967: Simula II 1970: Kenneth Thompson jazyk B (vytváření aplikací pro UNIX) 1972: Dennis Ritchie jazyk C 1972: Smalltalk (částečně založen na jazyku SIMULA) 1983-5: Bjarne Stroustrup jazyk C++ 1989: ANSI standard C++ 1991: James Gosling, Patrick Naughton, Mike Sheridan jazyk Java (Sun) 1991: Guido van Rossum - Python 2000: Microsoft jazyk C# 3

Věci a abstraktní objekty Věci kolem nás se odborně nazývají objekty (jsou to skutečné objekty, např. konkrétní dům, reálná osoba, ) Abstraktní objekt obecný popis reálného objektu, jeho parametrů, vlastností, chování, U abstraktního objektu se soustředíme na podstatné věci (na to, co je pro daný účel důležité) Práce s objekty usnadňuje a zefektivňuje řešení složitých situací Např.: Dům: Počet podlaží Člověk: Jméno Zastavěná plocha Pohlaví Majitel Věk Cena Spaní Zastarávání Sezení 4

Procedurální a objektově orientované programování Procedurální programování využití procedur a funkcí znovupoužitelný kód aktualizuje se (pokud možno) na jednom místě Objektově orientované programování využívá tříd objektů, definuje jejich atributy a metody ty pak popisují parametry, vlastnosti a chování abstraktních objektů. Pojem "objektová orientace" je vykládán různě autor knihy [3] popisuje situaci, kdy zavřel odborníky na OOP do jedné místnosti a ti se shodli na jediné společné vlastnosti: zapouzdření. 5

Co znamená "objektově orientovaný"? Podle [3]: Zapouzdření Skrývání informací a implementací Zachování stavu Identita objektů Zprávy Třídy Dědičnost Mnohotvárnost Obecnost 6

Zapouzdření (encapsulation) Zapouzdření: seskupení souvisejících idejí (vlastností, chování, ) do jedné jednotky, na kterou se lze následně odkazovat jediným názvem Objektově orientované zapouzdření: zabalení operací (metod) a atributů představující nějaký stav do jednoho objektu, takže daný stav je přístupný či upravitelný pouze prostřednictvím rozhraní poskytovaného zapouzdřením (tedy pomocí operací či metod) Např.: Logo a želva, český Karel 7

Skrývání informací a implementací (information/implementation hiding) Skrývání informací a implementací: využití zapouzdření k omezení externí viditelnosti určitých informací nebo implementačních rozhodnutí, která jsou pro strukturu zapouzdření interní Přínosy: Lokalizace rozhodnutí při návrhu změny v implementaci uvnitř zapouzdření mají malý nebo žádný dopad na zbytek systému Zrušení vazby mezi obsahem informací a formou jejich reprezentace ostatní se např. nemusí zabývat vnitřkem -> méně chyb Např. želva v Logu má určitý směr, ale zvenku není vidět, jak je tento směr v počítači uložen (pomocí symbolu, ve stupních, v radiánech, ) 8

Zachování stavu (state persistence) Zachování stavu: objekt uchovává svůj stav (nějakou množinu hodnot) objekt "neumírá" po provedení nějakého požadavku na něj a může pokračovat ve svém "životě" Např. želva v Logu uchovává informaci o své pozici, směru natočení, barvě pera, 9

Identita objektu (object identity) Identita objektu: vlastnost, podle které je možné každý objekt (bez ohledu na jeho třídu nebo aktuální stav) identifikovat a pracovat s ním jako se samostatnou softwarovou entitou Např. v Logu může existovat několik želv každá má svoje parametry a lze s každou pracovat zvlášť a odkazovat se na ně 10

Zpráva (message) Zpráva: "dopravní prostředek", kterým odesílající objekt obj1 přenáší cílovému objektu obj2 požadavek, aby objekt obj2 použil jednu ze svých metod (objekty obj1 a obj2 mohou být i stejné) Zpráva může mít i argumenty Objekt může být: Odesílatelem Cílem Odkazován nějakou proměnnou v jiném objektu Odkazován nějakým argumentem předaným libovolným směrem ve zprávě Např.: želva(0).jdi(10) 11

Třída (class) Třída: šablona, podle které se vytvářejí objekty (jejich instance); každý objekt má stejnou strukturu a chování jako třída, jejíž je instancí; patří-li objekt obj do třídy T, pak říkáme, že "obj je instancí T" Třída je to, co programujeme, navrhujeme Objekt je to, co vytváříme (ze třídy) při běhu aplikace (tj. instance třídy) 12

Dědičnost (inheritance) Dědičnost (třídy U z třídy T): nástroj, jehož pomocí si třída U implicitně definuje všechny atributy a operace třídy T, jako by byly definovány přímo ve třídě U; T se nazývá nadřízenou třídou (nadřazenou třídou, nadtřídou) U; U se nazývá podřízená třída (podřazená třída, podtřída) T Např.: člověk je nadtřídou zaměstnance, zaměstnanec je nadtřídou učitele, kuchař je podtřídou zaměstnance, kuchař může být podtřídou odboráře, 13

Mnohotvarost (polymorphism) Mnohotvarost: prostředek, jehož pomocí může být jediný název operace nebo atributu definován na základě více než jedné třídy a může nabývat různých implementací v každé z těchto tříd Mnohotvarost: vlastnost, jejímž prostřednictvím může atribut nebo proměnná ukazovat (obsahovat identifikátor) na objekty různých tříd v různých okamžicích Přepisování (overriding): změna definice metody zadané ve třídě T v jedné z podřízených tříd třídy T Přetěžování (overloading) názvu nebo symbolu: daný název nebo symbol má několik operací (či operátorů) definovaných v jedné třídě Např.: "a" * 3, 3 * "a" 14

Obecnost (genericity) Obecnost: taková konstrukce třídy T, která umožňuje dodání jedné nebo více jejich interně používaných tříd až za běhu aplikace (v okamžiku, kdy je vytvořena instance objektu třídy T) Např.: kontejnerové třídy (uchování objektů v nějaké složitější struktuře vyvážený strom, binární strom, ) 15

Literatura 1. Keogh, J., Giannini, M. OOP bez předchozích znalostí: průvodce pro samouky. 1. vyd. Computer Press. Brno: 2006. ISBN 80-251-0973-9. 2. Schmuller, J. Myslíme v jazyku UML. Knihovna programátora. 1. vyd. Praha: Grada, 2001. ISBN 80-247-0029-8. 3. Page-Jones, M. Základy objektově orientovaného návrhu v UML. 1. vyd. Grada Publishing. Praha: 2001. ISBN 80-247-0210-X. 4. Arlow, J., Neustadt, I. UML a unifikovaný proces vývoje aplikací. 1. vyd. Computer Press. Praha: 2002. ISBN 80-7226-947-X. 16