SlideShare ist ein Scribd-Unternehmen logo
1 von 22
352 - Katedra automatizační
         techniky a řízení

Technické výpočty


   Ing. David Fojtík, Ph.D.
        A922, kl. 4193
Objekty, třídy a rozhranní
Objekty kolem nás
•   Objekt je „černá skříňka“ jenž zapouzdřuje složité interní
    procesy a stavy přičemž poskytuje vnějšímu okolí
    Rozhraní pro ovládání a komunikaci s objektem.
     •   Mobilní telefon, Automobil, Počítač – prakticky vše
•   Rozhraní objektu je vnější schránka objektu, přes kterou
    se objekt ovládá. Rozhraní tvoří tři skupiny prvků:
    Vlastnosti, Metody a Události.
•   Vlastnosti charakterizují objekt a jeho stav. Některé se
    dají volně měnit, jiné jsou závislé na jiných vlastnostech
    nebo stavu objektu, další jsou neměnné – dané výrobou.
     •   výška, hmotnost, paměť, melodie vyzvánění, barva, síla
         signálu, stav baterie, tapeta, spotřeba, motor atd.
•   Metody jsou funkce kterými se objekt ovládá.
     •   tlačítka: zapnout, vypnout, přijmout hovor, odmítnut hovor,
         vytočit číslo, plyn, brzda, volant atd.
•   Události jsou činnosti vyvolané objektem za účelem
    upozornit na změnu stavu objektu.
     •   Vyzvánění (někdo volá, budík), zvukový nebo visuální signál
         – upozornění (přišla SMS, naplánovaná schůzka , nebezpečí
         námrazy, ponechána rozsvícená světla) atd.
Základy objektové programování ve VB
• Objekt je instance třídy. Zabírá paměť, má konkrétní vlastnosti,
  nachází se v určitém stavu (je živý).
   •   Aplikace MS Excel, Sešit, List, Buňka, Graf atd.
• Třída je objektový datový typ, který kompletně definuje objekt,
  jeho vnitřní strukturu, procesy, funkce a také rozhraní.
• Objektová proměnná je proměnná typu Třídy objektu, která může
  mít asociovaný libovolný objekt dané třídy. Ve své podstatě je
  obálkou objektu poskytující rozhraní. Prázdná (bez asociace)
  proměnná má hodnotu Nothing. Objekt může být asociovaný s
  více proměnnými, avšak minimálně s jednou. Objekt ihned zaniká
  ztratí-li všechny asociace.
   •   Syntaxe: Založení proměnné
       Dim ObjektovaPromenna As TridaObjektu
   •   Syntaxe: Asociace proměnné s objektem
       Set ObjektovaPromenna = AsociovanaObjektovaPromenna
       Set ObjektovaPromenna = New TridaObjektu
   •   Zrušení asociace proměnné s objektem (je-li poslední objekt zanikne)
       Set ObjektovaPromenna = Nothing
Vlastnosti (Properties)
• Vlastnost zpřístupňuje členské proměnné objektu. Používají
  se stejně jako běžné proměnné, avšak mohou být omezeny
  pouze pro čtení nebo pouze pro zápis. Vlastnost může být
  libovolného datového typu včetně jiné třídy objektu.
   •   Syntaxe: Přečtení hodnoty vlastnosti
       promenna = ObjektovaPromenna.Vlastnost
   •   Syntaxe: Přiřazení hodnoty vlastnosti
       ObjektovaPromenna.Vlastnost = hodnota
Metody (Methods)
• Metody jsou členské subrutiny nebo funkce objektu, kterými se
  provádění, případně zahajují nebo ukončují požadované činnosti
  objektu. Interně jsou tvořeny subrutinami nebo funkcemi. Metody
  mohou být procedurálního nebo funkcionálního typu a mohou mít
  argumenty, kterými se upřesňují požadované činnosti. Obvykle
  jsou tyto argumenty nepovinné neboť požadovaná data jsou
  převážně součástí objektu ve formě členských proměnných.
   •   Syntaxe: Volání procedurální metody
       ObjektovaPromenna.Metoda
       ObjektovaPromenna.Metoda Argument1, Argument2
   •   Syntaxe: Volání funkcionální metody
       promenna = ObjektovaPromenna.Metoda()
       promenna = ObjektovaPromenna.Metoda(Arg1, Arg2)
Události (Events)
•   Události jsou členské procedury umožňující vyvolávat externí (nečlenské)
    subrutiny nebo funkce (událostní rutiny) na specifické změny stavu
    objektu. V podstatě jde o způsob, jak může objekt nezávisle informovat
    nadřízený kód o nastalé situaci. Počet podporovaných událostí je konečný
    a je dán definicí třídy objektu. Mnoho objektů události vůbec nepodporuje.
    Také nadřízený kód nemusí všechny události využívat, nebo může využívat
    pouze některé.
•   Událostní rutiny (procedury) vytváří programátor užívající objekt. Rutiny
    musí mít přesně definované názvy a argumenty podle definice třídy.
    Umístění musí být v modulu třídy (nemohou být ve standardním modulu),
    nebo v modulu objektu (pouze u vizuálních objektů: list, sešit, formulář).
•   Název událostní rutiny je tvořen názvem objektové proměnné, podtržítkem
    a názvem události s argumenty. Nevizuální objektová proměnná musí být
    deklarovaná na úrovni modulu s klíčovým slovem WithEvents. Pro
    generování názvu lze použít rozbalovací seznamy modulu.
        Private WithEvents ObjPromenna As TridaObjektu
        Sub ObjPromenna_Udalost(Arg as Typ)
        End Sub
        Function ObjPromenna_Udalost(Arg as Typ) As Typ
        End Function
Příklad událostní rutiny
Události listu a sešitu dokumentu
                     MS Excelu
• Události sešitu.
 –   Activate()
 –   AddinInstall()
 –   AddinUninstall()
 –   AfterXmlExport(ByVal Map As XmlMap, ByVal Url As String, ByVal Result As XlXmlExportResult)
 –   BeforeClose(Cancel As Boolean)
 –   BeforePrint(Cancel As Boolean)
 –   BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 –   BeforeXmlExport(ByVal Map As XmlMap, ByVal Url As String, Cancel As Boolean)
 –   BeforeXmlImport(ByVal Map As XmlMap, ByVal Url As String, ByVal IsRefresh, Cancel)
 –   Deactivate()
 –   NewSheet(ByVal Sh As Object)
 –   Open()
 –   PivotTableCloseConnection(ByVal Target As PivotTable)
 –   PivotTableOpenConnection(ByVal Target As PivotTable)
 –   RowsetComplete(ByVal Description As String, ByVal Sheet As String, ByVal Success As Boolean)
 –   SheetActivate(ByVal Sh As Object)
 –   SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
 –   SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
 –   SheetCalculate(ByVal Sh As Object)
 –   SheetDeactivate(ByVal Sh As Object)
 –   SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
 –   SheetChange(ByVal Sh As Object, ByVal Target As Range)
 –   SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
 –   SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 –   Sync(ByVal SyncEventType As Office.MsoSyncEventType)
 –   WindowActivate(ByVal Wn As Window)
 –   WindowDeactivate(ByVal Wn As Window)
 –   WindowResize(ByVal Wn As Window)
Hierarchie objektů
• Složitější reálné objekty jsou
  často tvořeny sadou
  podřízených objektů.
   •   Například objekt auto má
       podřízený objekt motor,
       převodovku, podvozek,
       palubovku atd. Podvozek
       má kolekci objektů poloos,
       kol, ložisek atd.
• U softwarových objektů
  tomu není jinak. Podřízené
  objekty jsou přístupné přes
  vlastnosti.
   •   Například objekt
       Application (MS Excel) má
       podřízenou kolekci
       WorkBooks (sešity)
       složenou z objektů
       WorkBook (Sešit), který
       obsahuje kolekci
       WorkSheets (listy).
          Application.Workbooks("Soubor.xlsx").Worksheets("List1").Name
Kolekce - pokračování
• Pod pojmem kolekce v programovacím jazyce rozumíme objekt,
  reprezentující skupinu shodných nebo příbuzných objektů. Prvek
  (element, člen) kolekce je právě jeden dílčí objekt kolekce.
• Typické vlastnosti a metody kolekcí
 – Count – Pouze pro čtení - vrací počet elementů v kolekci
 – Add(…) – Přidá nový prvek do kolekce
 – Remove(…) – Odstraní prvek z kolekce
• Příklady kolekcí v MS Excelu:
 –   Workbooks (elementy: Workbook - Otevřené soubory)
 –   WorkSheets (elementy: WorkSheet – Listy souboru)
 –   Cells (elementy: Range – buňky listu)
 –   Selection (elementy: Range – uživatelem vybrané buňky)
• Přístup k objektu kolekce:
     ‒ Pomocí indexu (pořadového čísla), obvykle jsou objekty seřazeny
       podle pořadí vzniku. Index nemá stálou vazbu na objekt.
        Kolekce(Index)
        WorkBooks(1). WorkSheets(3)
     ‒ Pomocí klíče (názvu), klíč je v kolekci jedinečný. Objekt se vybere
       nezávisle na jeho pořadí. Není-li objekt nalezen vzniká výjimka.
       Kolekce(Klic)
       Workbooks("Sešit.xls").WorkSheets("List1")
Ošetřování výjimek
Výjimky
• Výjimky jsou chyby, které vznikají za běhu programu obvykle důsledkem
  neplatných hodnot zpracovávaných dat.
• Způsoby ošetřování
   • Předcházením vzniku. Snažíme se vzniku výjimek vyvarovat kontrolou
       dat před provedením požadovaných operací. Náročné, mnohdy nelze
       všechny chyby odhadnout. Často nezpřehledňuje kód.
   • Zachycením vzniku. Ošetřujeme až vznik výjimky.
• Zapnutí a vypnutí zachytávání výjimek
  On Error Goto Navesti – Vznikne-li skočí na návěstí
  On Error Resume Next – Pokračuje následujícím příkazem
  On Error Goto 0 – Ukončí zachytávaní
• Návěstí: je identifikátor na samostatném řádku v rámci jednoho algoritmu
  ukončený dvojtečkou:
  Navesti:
  Při skoku na návěstí se začnou provádět příkazy uvedené za návěstím. Je
  možné odskakovat oběma směry. Pro skok na návěstí se používá příkaz GoTo .
• Ošetřující kód výjimky je ohraničená část programu, ve které se provádí
  operace vzniklé při vzniku výjimky. Informaci o výjimce jsou k dispozici u
  objektu ERR.
  ERR.Number – číslo chyby; ERR.Description – popis chyby
• Resume – návrat z ošetřujícího kódu zpět na příkaz, který výjimku způsobil
  s odstraněním záznamu o chybě. Pozor na zacyklení!
• Resume Next – návrat na následující příkaz kódu s odstraněním záznamu
• Resume Navesti – skok na návěstí s odstraněním záznamu o chybě
Příklad ošetření výjimek
Sub Main()
  Dim Cislo As Integer   'Číselná hodnota pro výpočet faktoriálu
  Dim i As Integer       'Iterační pomocná proměnná

On Error GoTo CHYBA 'Zapnutí ošetřování výjimek
  'Nacteni hodnoty pro výpočet faktoriálu
   Cislo = InputBox("Zadej číslo:", "Výpočet Faktoriálu")
  'Výpis výsledku - je rekurzivně volaná funkce Faktorial
   MsgBox Cislo & "! = " & Faktorial(Cislo), , " Výpočet Faktoriálu"

Exit Sub 'Tento příkaz se vykoná pouze když nevznikla žádná výjimka
CHYBA:
  Select Case Err.Number
  Case 6 'Přetečení
     MsgBox "Výsledná hodnota je příliš velká, " & _
            "než aby jej program mohl vyčíslit!", _
            vbExclamation, "Program nemohl výpočet uskutečnit..."
  Case 13 'Nesoulad typů
     MsgBox "Nebyla zadaná platná číselná hodnota!" & vbNewLine & vbNewLine & _
            "Opakuj zadání...", vbExclamation, "Chyba zadání..."
     Resume
  Case Else 'Neznámá chyba
     MsgBox "Neošetřená chyba č. " & Err.Number & vbCrLf & _
            Err.Description, vbExclamation, "Chyba během provádění programu"
  End Select
End Sub
Uživatelské dialogy -
     formuláře
Formuláře
• Formuláře jsou grafické objekty, které
  zajišťují vizuální interakci s uživatelem.
• Třída formuláře se vytváří visuálně v
  prostředí jazyka Visual Basic for
  Application a programově se doplňují
  událostní rutiny.
   •    Vložíme formulář – Nejlépe přes
        kontextové menu okna Project
   •    Přidáme ovládací prvky. Myší zvolíme
        prvek v panelu „Toolbox“ a tažením
        vložíme (nakreslíme) ovládací prvek na
        formulář.
   •    Doplníme událostní rutiny. Postup je
        shodný jako u událostí listů nebo sešitu.
• Formuláře se spouštějí nejlépe přes
  subrutinu (makro) metodou Show()
       – Modálně
       Formular.Show vbModal
       – Modálně
       Formular.Show vbModeless
       – Není-li způsob uveden, je pak závislý na
         vlastnosti ShowModal (Ttrue/False)
Příklad uživatelského formuláře
Distribuce maker - doplňky
Osobní sešit maker
• Osobní sešit maker je sešit, který (je-
  li vytvořen) MS Excel automaticky
  otevírá ihned po spuštění jako skrytý.
• Používá se jako úložiště maker
  používaných nezávisle na aktuálně
  otevřeném sešitu. MS Excel
  automaticky povoluje makra.
• Vždy je pojmenován jako
  Personal.xlsb (do verze 2003
  personal.xls) a musí být umístěn do
  složky profilu uživatele
  AppDataRoamingMicrosoftExcel
  XLStart
• Nejsnadněji se vytvoří metodou
  záznamu s výběrem Uložit makro do:
  „Osobní sešit maker“
• Každý uživatel má jeden osobní sešit
  maker, ale je možné do téže složky
  přidat další XLSM soubory, které se
  budou automaticky otvírat.
Doplňky
• Doplňky jsou připojitelné programové moduly, které rozšiřují
  funkcionalitu aplikace. Lze je vytvářet:
   1. v prostředí MS Excelu –v podstatě jde o soubory MS Excelu,
   2. v profesionálním programovacím jazyce – obvykle se instalují
       jako samostatné aplikace.
• Vytvoření doplňku
   1. V prostředí MS Excelu vytvoříme dokument
       s požadovanými makry, funkcemi a dialogy.
   2. Přidáme klávesové zkratky, případně pro
       daný dokument přidáme zástupce v panelu
       Rychlý přístup.
   3. Uložíme soubor „jako“ doplněk aplikace xlam.
• Připojení doplňku
   1. Karta „Soubor“ nabídka „Možnosti“ a v dialogu „Možnosti
       aplikace Excel“ položka „Doplňky“. V seznamu „Spravovat“
       vybrat položku „Doplňky aplikace Excel“ a tlačítko „Přejít…“
   2. V dialogu „Doplňky“ procházením vybereme soubor,
       nebo (je-li doplněk již v seznamu) zatrhneme položku a
       potvrdíme „OK“.
??? kontrolní otázky ???
• Co je to Rozhranní objektu?
• Co znamená chyba Can't assign to read-only
  property.
• Jak se edituje hodnota vlastnosti a jak se volá
  metoda?
• Jaký je rozdíl mezi událostí a událostní rutinou?
• Kde se zapisují událostní rutiny?
• Jak lze přistupovat k prvkům kolekcí?
• Co je to návěstí a jak se používá?
• Jak lze ošetřit vznik výjimky?
• K čemu slouží soubor Personal.XLSB?
• Jak vytvořit doplněk XLAM?
352 - Katedra automatizační techniky a řízení




Ing. David Fojtík, Ph.D.
     A922, kl. 4193

Weitere ähnliche Inhalte

Was ist angesagt?

KST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáškaKST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáškaJan Hřídel
 
KST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaKST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaJan Hřídel
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaJan Hřídel
 
Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Jan Hřídel
 
KST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaKST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaJan Hřídel
 
Databazove systemy5
Databazove systemy5Databazove systemy5
Databazove systemy5olc_user
 
TV 02 2011
TV 02 2011TV 02 2011
TV 02 2011352
 
Tv 04 2011
Tv 04 2011Tv 04 2011
Tv 04 2011352
 
Scala - jazyk budoucnosti
Scala - jazyk budoucnostiScala - jazyk budoucnosti
Scala - jazyk budoucnostiZdeněk Farana
 
Java – Annotations
Java – AnnotationsJava – Annotations
Java – AnnotationsMartin Majlis
 

Was ist angesagt? (12)

KST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáškaKST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáška
 
KST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaKST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáška
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáška
 
Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#
 
KST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaKST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáška
 
Databazove systemy5
Databazove systemy5Databazove systemy5
Databazove systemy5
 
TV 02 2011
TV 02 2011TV 02 2011
TV 02 2011
 
Linq
LinqLinq
Linq
 
Tv 04 2011
Tv 04 2011Tv 04 2011
Tv 04 2011
 
Scala - jazyk budoucnosti
Scala - jazyk budoucnostiScala - jazyk budoucnosti
Scala - jazyk budoucnosti
 
Omega g2
Omega g2Omega g2
Omega g2
 
Java – Annotations
Java – AnnotationsJava – Annotations
Java – Annotations
 

Ähnlich wie Tv 10 11

Doctrine: co dělat, když entity nestačí
Doctrine: co dělat, když entity nestačíDoctrine: co dělat, když entity nestačí
Doctrine: co dělat, když entity nestačíFilip Procházka
 
TPL - konkurenční, paralelní a asynchronní kód pro náročné
TPL - konkurenční, paralelní a asynchronní kód pro náročnéTPL - konkurenční, paralelní a asynchronní kód pro náročné
TPL - konkurenční, paralelní a asynchronní kód pro náročnéRené Stein
 
Talend Open Studio DQ
Talend Open Studio DQTalend Open Studio DQ
Talend Open Studio DQdpejcoch
 
Czjug Zari 2008
Czjug Zari 2008Czjug Zari 2008
Czjug Zari 2008RENESTEIN
 
Návrhové vzory v programování
Návrhové vzory v programováníNávrhové vzory v programování
Návrhové vzory v programováníTaste Medio
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftumdevtalk
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Kuba Břečka
 
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Péhápkaři
 
03 Významné vlastnosti digitálních objektů.pptx
03 Významné vlastnosti digitálních objektů.pptx03 Významné vlastnosti digitálních objektů.pptx
03 Významné vlastnosti digitálních objektů.pptxMagdalnaBohuslavov
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariRoman Pichlík
 
Easymock
EasymockEasymock
EasymockKeyup
 
INPTP přednáška 01b 2016
INPTP přednáška 01b 2016INPTP přednáška 01b 2016
INPTP přednáška 01b 2016Jan Hřídel
 
Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconVojta Svoboda
 
Petr zaplatílek, závěrečný úkol kpi, systémy
Petr zaplatílek, závěrečný úkol kpi, systémyPetr zaplatílek, závěrečný úkol kpi, systémy
Petr zaplatílek, závěrečný úkol kpi, systémyPepanisko
 
Dependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuDependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuRené Stein
 

Ähnlich wie Tv 10 11 (20)

Doctrine: co dělat, když entity nestačí
Doctrine: co dělat, když entity nestačíDoctrine: co dělat, když entity nestačí
Doctrine: co dělat, když entity nestačí
 
TPL - konkurenční, paralelní a asynchronní kód pro náročné
TPL - konkurenční, paralelní a asynchronní kód pro náročnéTPL - konkurenční, paralelní a asynchronní kód pro náročné
TPL - konkurenční, paralelní a asynchronní kód pro náročné
 
Talend Open Studio DQ
Talend Open Studio DQTalend Open Studio DQ
Talend Open Studio DQ
 
Czjug Zari 2008
Czjug Zari 2008Czjug Zari 2008
Czjug Zari 2008
 
Návrhové vzory v programování
Návrhové vzory v programováníNávrhové vzory v programování
Návrhové vzory v programování
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
 
Django
DjangoDjango
Django
 
P2021
P2021P2021
P2021
 
PZ2021
PZ2021PZ2021
PZ2021
 
PR2021
PR2021PR2021
PR2021
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
 
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
 
03 Významné vlastnosti digitálních objektů.pptx
03 Významné vlastnosti digitálních objektů.pptx03 Významné vlastnosti digitálních objektů.pptx
03 Významné vlastnosti digitálních objektů.pptx
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
Easymock
EasymockEasymock
Easymock
 
INPTP přednáška 01b 2016
INPTP přednáška 01b 2016INPTP přednáška 01b 2016
INPTP přednáška 01b 2016
 
Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
 
Petr zaplatílek, závěrečný úkol kpi, systémy
Petr zaplatílek, závěrečný úkol kpi, systémyPetr zaplatílek, závěrečný úkol kpi, systémy
Petr zaplatílek, závěrečný úkol kpi, systémy
 
Dependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuDependency injection v .Net Frameworku
Dependency injection v .Net Frameworku
 

Tv 10 11

  • 1. 352 - Katedra automatizační techniky a řízení Technické výpočty Ing. David Fojtík, Ph.D. A922, kl. 4193
  • 2. Objekty, třídy a rozhranní
  • 3. Objekty kolem nás • Objekt je „černá skříňka“ jenž zapouzdřuje složité interní procesy a stavy přičemž poskytuje vnějšímu okolí Rozhraní pro ovládání a komunikaci s objektem. • Mobilní telefon, Automobil, Počítač – prakticky vše • Rozhraní objektu je vnější schránka objektu, přes kterou se objekt ovládá. Rozhraní tvoří tři skupiny prvků: Vlastnosti, Metody a Události. • Vlastnosti charakterizují objekt a jeho stav. Některé se dají volně měnit, jiné jsou závislé na jiných vlastnostech nebo stavu objektu, další jsou neměnné – dané výrobou. • výška, hmotnost, paměť, melodie vyzvánění, barva, síla signálu, stav baterie, tapeta, spotřeba, motor atd. • Metody jsou funkce kterými se objekt ovládá. • tlačítka: zapnout, vypnout, přijmout hovor, odmítnut hovor, vytočit číslo, plyn, brzda, volant atd. • Události jsou činnosti vyvolané objektem za účelem upozornit na změnu stavu objektu. • Vyzvánění (někdo volá, budík), zvukový nebo visuální signál – upozornění (přišla SMS, naplánovaná schůzka , nebezpečí námrazy, ponechána rozsvícená světla) atd.
  • 4. Základy objektové programování ve VB • Objekt je instance třídy. Zabírá paměť, má konkrétní vlastnosti, nachází se v určitém stavu (je živý). • Aplikace MS Excel, Sešit, List, Buňka, Graf atd. • Třída je objektový datový typ, který kompletně definuje objekt, jeho vnitřní strukturu, procesy, funkce a také rozhraní. • Objektová proměnná je proměnná typu Třídy objektu, která může mít asociovaný libovolný objekt dané třídy. Ve své podstatě je obálkou objektu poskytující rozhraní. Prázdná (bez asociace) proměnná má hodnotu Nothing. Objekt může být asociovaný s více proměnnými, avšak minimálně s jednou. Objekt ihned zaniká ztratí-li všechny asociace. • Syntaxe: Založení proměnné Dim ObjektovaPromenna As TridaObjektu • Syntaxe: Asociace proměnné s objektem Set ObjektovaPromenna = AsociovanaObjektovaPromenna Set ObjektovaPromenna = New TridaObjektu • Zrušení asociace proměnné s objektem (je-li poslední objekt zanikne) Set ObjektovaPromenna = Nothing
  • 5. Vlastnosti (Properties) • Vlastnost zpřístupňuje členské proměnné objektu. Používají se stejně jako běžné proměnné, avšak mohou být omezeny pouze pro čtení nebo pouze pro zápis. Vlastnost může být libovolného datového typu včetně jiné třídy objektu. • Syntaxe: Přečtení hodnoty vlastnosti promenna = ObjektovaPromenna.Vlastnost • Syntaxe: Přiřazení hodnoty vlastnosti ObjektovaPromenna.Vlastnost = hodnota
  • 6. Metody (Methods) • Metody jsou členské subrutiny nebo funkce objektu, kterými se provádění, případně zahajují nebo ukončují požadované činnosti objektu. Interně jsou tvořeny subrutinami nebo funkcemi. Metody mohou být procedurálního nebo funkcionálního typu a mohou mít argumenty, kterými se upřesňují požadované činnosti. Obvykle jsou tyto argumenty nepovinné neboť požadovaná data jsou převážně součástí objektu ve formě členských proměnných. • Syntaxe: Volání procedurální metody ObjektovaPromenna.Metoda ObjektovaPromenna.Metoda Argument1, Argument2 • Syntaxe: Volání funkcionální metody promenna = ObjektovaPromenna.Metoda() promenna = ObjektovaPromenna.Metoda(Arg1, Arg2)
  • 7. Události (Events) • Události jsou členské procedury umožňující vyvolávat externí (nečlenské) subrutiny nebo funkce (událostní rutiny) na specifické změny stavu objektu. V podstatě jde o způsob, jak může objekt nezávisle informovat nadřízený kód o nastalé situaci. Počet podporovaných událostí je konečný a je dán definicí třídy objektu. Mnoho objektů události vůbec nepodporuje. Také nadřízený kód nemusí všechny události využívat, nebo může využívat pouze některé. • Událostní rutiny (procedury) vytváří programátor užívající objekt. Rutiny musí mít přesně definované názvy a argumenty podle definice třídy. Umístění musí být v modulu třídy (nemohou být ve standardním modulu), nebo v modulu objektu (pouze u vizuálních objektů: list, sešit, formulář). • Název událostní rutiny je tvořen názvem objektové proměnné, podtržítkem a názvem události s argumenty. Nevizuální objektová proměnná musí být deklarovaná na úrovni modulu s klíčovým slovem WithEvents. Pro generování názvu lze použít rozbalovací seznamy modulu. Private WithEvents ObjPromenna As TridaObjektu Sub ObjPromenna_Udalost(Arg as Typ) End Sub Function ObjPromenna_Udalost(Arg as Typ) As Typ End Function
  • 9. Události listu a sešitu dokumentu MS Excelu • Události sešitu. – Activate() – AddinInstall() – AddinUninstall() – AfterXmlExport(ByVal Map As XmlMap, ByVal Url As String, ByVal Result As XlXmlExportResult) – BeforeClose(Cancel As Boolean) – BeforePrint(Cancel As Boolean) – BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) – BeforeXmlExport(ByVal Map As XmlMap, ByVal Url As String, Cancel As Boolean) – BeforeXmlImport(ByVal Map As XmlMap, ByVal Url As String, ByVal IsRefresh, Cancel) – Deactivate() – NewSheet(ByVal Sh As Object) – Open() – PivotTableCloseConnection(ByVal Target As PivotTable) – PivotTableOpenConnection(ByVal Target As PivotTable) – RowsetComplete(ByVal Description As String, ByVal Sheet As String, ByVal Success As Boolean) – SheetActivate(ByVal Sh As Object) – SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) – SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) – SheetCalculate(ByVal Sh As Object) – SheetDeactivate(ByVal Sh As Object) – SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) – SheetChange(ByVal Sh As Object, ByVal Target As Range) – SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable) – SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) – Sync(ByVal SyncEventType As Office.MsoSyncEventType) – WindowActivate(ByVal Wn As Window) – WindowDeactivate(ByVal Wn As Window) – WindowResize(ByVal Wn As Window)
  • 10. Hierarchie objektů • Složitější reálné objekty jsou často tvořeny sadou podřízených objektů. • Například objekt auto má podřízený objekt motor, převodovku, podvozek, palubovku atd. Podvozek má kolekci objektů poloos, kol, ložisek atd. • U softwarových objektů tomu není jinak. Podřízené objekty jsou přístupné přes vlastnosti. • Například objekt Application (MS Excel) má podřízenou kolekci WorkBooks (sešity) složenou z objektů WorkBook (Sešit), který obsahuje kolekci WorkSheets (listy). Application.Workbooks("Soubor.xlsx").Worksheets("List1").Name
  • 11. Kolekce - pokračování • Pod pojmem kolekce v programovacím jazyce rozumíme objekt, reprezentující skupinu shodných nebo příbuzných objektů. Prvek (element, člen) kolekce je právě jeden dílčí objekt kolekce. • Typické vlastnosti a metody kolekcí – Count – Pouze pro čtení - vrací počet elementů v kolekci – Add(…) – Přidá nový prvek do kolekce – Remove(…) – Odstraní prvek z kolekce • Příklady kolekcí v MS Excelu: – Workbooks (elementy: Workbook - Otevřené soubory) – WorkSheets (elementy: WorkSheet – Listy souboru) – Cells (elementy: Range – buňky listu) – Selection (elementy: Range – uživatelem vybrané buňky) • Přístup k objektu kolekce: ‒ Pomocí indexu (pořadového čísla), obvykle jsou objekty seřazeny podle pořadí vzniku. Index nemá stálou vazbu na objekt. Kolekce(Index) WorkBooks(1). WorkSheets(3) ‒ Pomocí klíče (názvu), klíč je v kolekci jedinečný. Objekt se vybere nezávisle na jeho pořadí. Není-li objekt nalezen vzniká výjimka. Kolekce(Klic) Workbooks("Sešit.xls").WorkSheets("List1")
  • 13. Výjimky • Výjimky jsou chyby, které vznikají za běhu programu obvykle důsledkem neplatných hodnot zpracovávaných dat. • Způsoby ošetřování • Předcházením vzniku. Snažíme se vzniku výjimek vyvarovat kontrolou dat před provedením požadovaných operací. Náročné, mnohdy nelze všechny chyby odhadnout. Často nezpřehledňuje kód. • Zachycením vzniku. Ošetřujeme až vznik výjimky. • Zapnutí a vypnutí zachytávání výjimek On Error Goto Navesti – Vznikne-li skočí na návěstí On Error Resume Next – Pokračuje následujícím příkazem On Error Goto 0 – Ukončí zachytávaní • Návěstí: je identifikátor na samostatném řádku v rámci jednoho algoritmu ukončený dvojtečkou: Navesti: Při skoku na návěstí se začnou provádět příkazy uvedené za návěstím. Je možné odskakovat oběma směry. Pro skok na návěstí se používá příkaz GoTo . • Ošetřující kód výjimky je ohraničená část programu, ve které se provádí operace vzniklé při vzniku výjimky. Informaci o výjimce jsou k dispozici u objektu ERR. ERR.Number – číslo chyby; ERR.Description – popis chyby • Resume – návrat z ošetřujícího kódu zpět na příkaz, který výjimku způsobil s odstraněním záznamu o chybě. Pozor na zacyklení! • Resume Next – návrat na následující příkaz kódu s odstraněním záznamu • Resume Navesti – skok na návěstí s odstraněním záznamu o chybě
  • 14. Příklad ošetření výjimek Sub Main() Dim Cislo As Integer 'Číselná hodnota pro výpočet faktoriálu Dim i As Integer 'Iterační pomocná proměnná On Error GoTo CHYBA 'Zapnutí ošetřování výjimek 'Nacteni hodnoty pro výpočet faktoriálu Cislo = InputBox("Zadej číslo:", "Výpočet Faktoriálu") 'Výpis výsledku - je rekurzivně volaná funkce Faktorial MsgBox Cislo & "! = " & Faktorial(Cislo), , " Výpočet Faktoriálu" Exit Sub 'Tento příkaz se vykoná pouze když nevznikla žádná výjimka CHYBA: Select Case Err.Number Case 6 'Přetečení MsgBox "Výsledná hodnota je příliš velká, " & _ "než aby jej program mohl vyčíslit!", _ vbExclamation, "Program nemohl výpočet uskutečnit..." Case 13 'Nesoulad typů MsgBox "Nebyla zadaná platná číselná hodnota!" & vbNewLine & vbNewLine & _ "Opakuj zadání...", vbExclamation, "Chyba zadání..." Resume Case Else 'Neznámá chyba MsgBox "Neošetřená chyba č. " & Err.Number & vbCrLf & _ Err.Description, vbExclamation, "Chyba během provádění programu" End Select End Sub
  • 15. Uživatelské dialogy - formuláře
  • 16. Formuláře • Formuláře jsou grafické objekty, které zajišťují vizuální interakci s uživatelem. • Třída formuláře se vytváří visuálně v prostředí jazyka Visual Basic for Application a programově se doplňují událostní rutiny. • Vložíme formulář – Nejlépe přes kontextové menu okna Project • Přidáme ovládací prvky. Myší zvolíme prvek v panelu „Toolbox“ a tažením vložíme (nakreslíme) ovládací prvek na formulář. • Doplníme událostní rutiny. Postup je shodný jako u událostí listů nebo sešitu. • Formuláře se spouštějí nejlépe přes subrutinu (makro) metodou Show() – Modálně Formular.Show vbModal – Modálně Formular.Show vbModeless – Není-li způsob uveden, je pak závislý na vlastnosti ShowModal (Ttrue/False)
  • 18. Distribuce maker - doplňky
  • 19. Osobní sešit maker • Osobní sešit maker je sešit, který (je- li vytvořen) MS Excel automaticky otevírá ihned po spuštění jako skrytý. • Používá se jako úložiště maker používaných nezávisle na aktuálně otevřeném sešitu. MS Excel automaticky povoluje makra. • Vždy je pojmenován jako Personal.xlsb (do verze 2003 personal.xls) a musí být umístěn do složky profilu uživatele AppDataRoamingMicrosoftExcel XLStart • Nejsnadněji se vytvoří metodou záznamu s výběrem Uložit makro do: „Osobní sešit maker“ • Každý uživatel má jeden osobní sešit maker, ale je možné do téže složky přidat další XLSM soubory, které se budou automaticky otvírat.
  • 20. Doplňky • Doplňky jsou připojitelné programové moduly, které rozšiřují funkcionalitu aplikace. Lze je vytvářet: 1. v prostředí MS Excelu –v podstatě jde o soubory MS Excelu, 2. v profesionálním programovacím jazyce – obvykle se instalují jako samostatné aplikace. • Vytvoření doplňku 1. V prostředí MS Excelu vytvoříme dokument s požadovanými makry, funkcemi a dialogy. 2. Přidáme klávesové zkratky, případně pro daný dokument přidáme zástupce v panelu Rychlý přístup. 3. Uložíme soubor „jako“ doplněk aplikace xlam. • Připojení doplňku 1. Karta „Soubor“ nabídka „Možnosti“ a v dialogu „Možnosti aplikace Excel“ položka „Doplňky“. V seznamu „Spravovat“ vybrat položku „Doplňky aplikace Excel“ a tlačítko „Přejít…“ 2. V dialogu „Doplňky“ procházením vybereme soubor, nebo (je-li doplněk již v seznamu) zatrhneme položku a potvrdíme „OK“.
  • 21. ??? kontrolní otázky ??? • Co je to Rozhranní objektu? • Co znamená chyba Can't assign to read-only property. • Jak se edituje hodnota vlastnosti a jak se volá metoda? • Jaký je rozdíl mezi událostí a událostní rutinou? • Kde se zapisují událostní rutiny? • Jak lze přistupovat k prvkům kolekcí? • Co je to návěstí a jak se používá? • Jak lze ošetřit vznik výjimky? • K čemu slouží soubor Personal.XLSB? • Jak vytvořit doplněk XLAM?
  • 22. 352 - Katedra automatizační techniky a řízení Ing. David Fojtík, Ph.D. A922, kl. 4193