Umíme to s Delphi: 152. díl – co přináší Delphi 2005, dokončení

V dnešním článku se podíváme na zbytek novinek a vylepšení, které přináší nejnovější verze Delphi. Probereme nejen přístup k databázím v Delphi 2005, ale také možnosti návrhu aplikací a další novinky. V neposlední řadě se pak zaměříme na zdrojový kód: ukážeme si, k čemu je vkládání funkcí a jak funguje smyčka for – in – do.

V minulém dílu našeho seriálu jsme se začali zabývat změnami a novinkami, které přináší Delphi 2005 oproti předchozím verzím. Dnes budeme pokračovat a podíváme se na zbytek novinek, o kterých stojí za to vědět.

Testování jednotek

Posledně jsme skončili popisem agilních programovacích konceptů v Delphi a řekli jsme si, že Delphi přinášejí celou řadu nástrojů pro podporu jednotlivých agilních technik, například refaktorizace (změny zdrojového kódu beze změny jeho funkčnosti).

Jakmile přistoupíme na myšlenku refaktorizace (a na myšlenku agilních přístupů vůbec), musíme se hluboce zamyslet nad jednou důležitou navazující oblastí. Pokud jsou totiž agilní přístupy založeny na rychlém dodávání funkčních částí zdrojového kódu, na velmi rychlých a stručných (či také žádných) specifikacích a na průběžných úpravách aplikací, musíme klást silný důraz na oblast zajišťování kvality, Quality Assurance.

Vzhledem k neexistenci podrobných specifikací a vzhledem k tomu, že kód měníme „za pochodu“, často jeden druhému „pod rukou“, musíme téměř neustále testovat (a provádět i další elementy Quality Assurance, počínaje tradičními – např. Faganovské inspekce nebo strukturované procházení – až k typicky agilním – např. párové programování nebo SCRUM meetings). V opačném případě bude téměř jisté, že výsledná aplikace nebude fungovat tak, jak potřebujeme.

Vraťme se však k Delphi. Jeho nejnovější verze, Delphi 2005, si všechny tato fakta dobře uvědomuje a integruje v sobě řadu nástrojů pro podporu Quality Assurance.

Jedna velká skupina těchto nástrojů se týká testování. Ruční testování všech částí kódu by bylo velmi neefektivní a časově náročné. Na řadu proto musí přijít automatizované testy. Delphi v tomto směru nabízejí hned dva nástroje:

  • NUnit framework pro automatizované testování modulů, který lze použít jak v případě C# pro a Delphi .NET,
  • DUnit pro použití v Delphi Win32.

Testování jednotek slouží k ověřování toho, že jednotky dělají to, co očekáváme. Například, že testování rozsahu hodnot proměnných funguje jak má, že výjimky jsou generovány očekávaným způsobem nebo že veškeré výpočty jsou prováděny správně. Čarodějové (wizards) přítomní jak s NUnit tak i s DUnit usnadňují tvorbu testových případů.

Delphi pro ADO.NET

V dnešní době potřebuje v podstatě jakákoliv podniková aplikace přistupovat k databázi. Prostředí Delphi RAD pro ADO.NET rozšiřuje možnosti použití Microsoft ADO.NET frameworku pro vývojáře v Delphi nebo C#.

Delphi 2005 nabízí koncepci tzv. Borland Data Provideru, což je generický mechanismus pro přístup k ADO.NET databázím: BDP ADO.NET ovladač je univerzální, takže při použití různých databázových back-endů stačí změnit BDP connection string. Nemusíme se starat o odlišné datové typy a další parametry.

Jinak řečeno, při použití BDP můžeme napsat databázovou aplikaci a následně ji poměrně jednoduše šířit ve verzích pro různé databázové systémy. BDP pro Delphi 2005 podporuje Microsoft SQL Server 2005 v edicích Enterprise a Developer, Oracle 10g, Borland Interbase, IBM DB2 a Sybase.

Další novinky

Dalších novinek v Delphi 2005 je celá řada a asi nemá smysl se podrobně zabývat každou z nich. Příslušných specifikací existuje celá řada a v závěru článku si uvedeme odkazy na některé z nich. Na tomto místě se podívejme jen na jednoho zajímavého zástupce.

Zajímavý je například nástroj pro návrh aplikací – Borland Enterprise Core Objects II (ECO). Namísto vytváření databázových tabulek je ECO založen na UML specifikaci struktury aplikace. Architekt tedy použije grafickou UML notaci pro popis tříd a jejich vzájemných vztahů a vazeb. Třídy pak jsou realizovány jako .NET objekty pro C# nebo Delphi vývojáře k použití v jejich kódu.

Na tom by nebylo nic příliš světoborného (jedná se v podstatě o určitý stupeň CASE nástroje), naštěstí však ECO framework poskytuje i další nadstandardní služby (jakožto trochu vyšší stupeň CASE nástroje :)), například kontrolu integrity modelů, a také prostředky pro uchovávání objektů v ADO.NET databázi nebo v XML souboru.

Změny v Object Pascalu

Důležité změny doznal také Object Pascal použitý v Delphi 2005. Jak jsme zmínili v předchozím článku, pokud nechceme, nemusíme novou verzi Pascalu a nové jazykové konstrukce používat; některé z nich však podstatně rozšiřují programátorské možnosti a stojí za to o nich přinejmenším vědět.

Zajímavé je například rozšíření příkazu for. K dispozici je nyní konstrukce for – in – do, která umožňuje elegantně zpracovávat indexované položky nebo kolekce. Podívejme se na následující příklad:

procedure TForm3.Button2Click(Sender: TObject);

var
  S: String;
 
begin
  Memo1.Clear;
  for S in ListBox1.Items do
    Memo1.Lines.Add(S);
 
end;

Proměnná S zde zastupuje řetězec, což je jeden element kolekce řetězců reprezentovaných vlastností Items seznamu ListBox1.

Další pascalská změna se týká vkládání funkcí a procedur. Jeho význam si ukážeme na praktickém příkladu. Spusťte Delphi (samozřejmě pouze za předpokladu, že máte k dispozici Delphi 2005) a vytvořte novou konzolovou aplikaci (File – New – Other, zvolte Console Application). Uložte projekt (File – Save Project As) a do Code Editoru zapište následující kód:

program InlineDemo;
{$APPTYPE CONSOLE}

uses
  MMSystem;

  function Max(const X,Y,Z: Integer): Integer;
  begin
    if X > Y then
      if X > Z then Result := X
               else Result := Z
    else
      if Y > Z then Result := Y
               else Result := Z
  end;

const
  Times = 10000000; // 10 million
var
  A,B,C,D: Integer;
  Start: LongInt;
  i: Integer;

begin
  Random; // 0
  A := Random(4242);
  B := Random(4242);
  C := Random(4242);
  Start := TimeGetTime;
  for i:=1 to Times do
    D := Max(A,B,C);
  Start := TimeGetTime-Start;
  writeln(A,`, `,B,`, `,C,`: `,D);
  writeln(`Calling Max `,Times,` times took `,Start,` milliseconds.`);
  readln

end.

Zkompilujte a spusťte program. Vypíší se výsledky, stejně jako přibližná doba, která byla potřeba k 10 milionům zavolání funkce Max.

Nyní změníme tělo funkce Max tak, že za její hlavičku přidáme klíčové slovo inline říkající, že funkce má být vložena:

function Max(const X,Y,Z: Integer): Integer; inline;
  begin
    if X > Y then
      if X > Z then Result := X
               else Result := Z
    else
      if Y > Z then Result := Y
               else Result := Z
  end;

Pokud nyní program znovu přeložíte a spustíte, budou výsledky stejné, ale výkon (doufejme :)) o trochu vyšší.

Co se změnilo? Klíčovým slovem inline jsme instruovali překladač, že namísto volání funkce Call má do přeloženého kódu vložit přímo tělo této funkce (příkazy, které funkce obsahuje). Eliminujeme tak nutnost volání funkce, což je časově náročná činnost.

Je logické, že dobrých výsledků dosáhneme především u kratších a nenáročnějších funkcí, jejichž přímé provedení bude rychlejší než volání externí funkce.

Delphi opět umožňuej několik dalších „her“ s klíčovým slovem inline, například lze použít direktivu {$INLINE AUTO}, která požádá překladač,aby sám rozhodl, které funkce jsou pro vnoření vhodné a které nikoliv.

Závěr

Delphi 2005 je zajímavé vývojové prostředí, které – jak tomu u Delphi občas bývá – nabízí celou řadu novinek ve srovnání se svými předchůdci. V závislosti na tom, co od svého Delphi očekáváte a v závislosti na tom, pro kterou platformu hodláte vyvíjet, může být pro vás požízení Delphi 2005 velkou výhrou a nebo také vyhozenými penězi. Dnešní článek se ve spolupráci s předchozím dílem pokusil upozornit vás na nejvýznamnější změny, které v Delphi 2005 nastaly: rozhodnutí, zda vás tyto změny přimějí zakoupit novou verzi Delphi, je na každém z vás.

Diskuze (2) Další článek: Začala výstava Mikroprocesory - srdce počítačů

Témata článku: Software, Programování, Přibližná doba, Console, Určitý stupeň, Díl, Zajímavá funkce, Rychlé dodávání, Automatizovaná funkce, Vzájemný vztah, Delphi, Zavolání, Random, Dokončení, Elsa, Náročná činnost, Náročné použití, Podniková aplikace, Dok, Pascal, Výsledná aplikace, Klíčová funkce, Předchozí nástroj, DEL


Určitě si přečtěte

Co je TikTok: Svérázná sociální síť chytla mladé uživatele, už jich má už 1,5 miliardy

Co je TikTok: Svérázná sociální síť chytla mladé uživatele, už jich má už 1,5 miliardy

** Sociální síť TikTok získala stamiliony uživatelů a stále roste ** Jaký obsah na ní najdete a co můžete v jejím rámci čekat? ** Je to zábava pro mladé, nebo platforma pro úchyláky?

Karel Kilián | 37

Vybrali jsme 21 programovatelných hraček a stavebnic pro děti i jejich rodiče

Vybrali jsme 21 programovatelných hraček a stavebnic pro děti i jejich rodiče

** Získejte děti pro matematiku a základy techniky ** Kupte jim hračku nebo stavebnici, které vdechnou vlastní život ** Vybrali jsme 21 stavebnic pro malé caparty i budoucí experty na A.I.

Jakub Čížek | 11



Aktuální číslo časopisu Computer

Test 9 bezdrátových reproduktorů

Jak ovládnout Instagram

Test levných 27" herních monitorů

Jak se zbavit nepotřebných věcí na internetu