Objektově orientované programování - cvičení 1
Práce s řetězci DELPHI (1) Napište jednoduchý program, který má 2 globální řetězce, Str1 a Str2. Po stisknutí tlačítka do Str1 zapíše ‘AHOJ’ a do Str2 nakopíruje hodnotu Str1. Druhé tlačítko změní hodnotu jednoho z řetězců. Po každém přiřazení vypište stav řetězců
…pokračování... K zobrazení stavu řetězců si napíšeme funkci StringStatus. Řetězec se do ní musí předávat jako VAR nebo CONST, aby se předával odkazem a nikoliv hodnotou (kopírováním). Nedokumentované pomůcky: na offsetu -8 je ReferenceCount, na offsetu -4 je délka stringu.
…pokračování... Ukázka řešení je v souboru demo1.exe (je to samozrobalovací komprimovaný soubor) Všechny ukázky jsou určeny k rozbalení v adresáři C:\WINDOWS\TEMP
…pokračování...
…pokračování...
Práce s řetězci DELPHI (2) Jako ukázku předávání stringů mezi Delphi a Windows volejte funkce API (Windows) pro název okna: (1) jméno okna přeneste do Delphi, (2) z Delphi změňte jméno okna. Řešený příklad je zde
…pokračování...
…pokračování Ale pozor na zradu! Kdybychom zapsali Edit1.Text := PomocnyString + ‘ je nadpis’; tak by se ten konec vůbec nezobrazil! Důvodem je, že Windows nenastavují délku stringu tak, jako to potřebují Delphi. Proto musíme použít S1:=String(PChar(S1)) nebo SetLength(S1, StrLen(PChar(S1)))
Dynamická (otevřená) pole Vytvořte funkci Sum, kterou můžete volat s libovolným počtem parametrů integer, real, nebo string. Výsledkem je součet všech hodnot parametrů (stringy obsahují textový zápis čísel). Vyřešený příklad je zde
…pokračování... Řešením je otevřené pole netypované: function Sum(const X: array of const): real;
…pokračování...
…pokračování...
…pokračování
Datový typ VARIANT Změřte, kolikrát jsou operace s datovým typem VARIANT pomalejší než stejné operace s celočíselnými typy. Příklad řešení je zde
…pokračování...
…pokračování...
…pokračování
Procedurální a funkcionální typy Vytvořte funkcionální typ. Bude to funkce typu „real“ s jedním parametrem „string“. S jeho pomocí provádějte výpočty tří různých funkcí, přičemž druh funkční závislosti se stanoví až za běhu programu. Vzorové řešení je zde
…příklad...
…pokračování...
…pokračování
Otázky ke zkoušce 1 (ke všem uveďte příklady) Řetězce, jejich reprezentace a práce s nimi Dynamická a otevřená pole Datový typ Variant Parametry s default hodnotou Procedurální a funkcionální typy
Otázky ke zkoušce 2 (ke všem uveďte příklady) Přetypování Typované konstanty Vyjmenujte a popište 3 (4) základní principy OOP