Vytvoření kostry aplikace - bez dialogových boxů

Přehled informací

Využití zástupných funkcí pří tvorbě aplikace

Při vytváření kostry aplikace ze získaných údajů bez dialogových boxů použijeme tzv. zástupné funkce. Zástupné funkce jsou funkce, které mají definovanou pouze hlavičku a vrací pouze jméno funkce, případně popis co bude funkce v budoucnu dělat. Tento postup nám umožní testovat jednotlivé části výsledné nadřazené funkce aniž bychom museli mít hotovou celou aplikaci..

Příklad - zástupné funkce:

(defun zastupna_fce1 ()
 (princ "zastupna_fce1")
)

Definice hlavičky hlavní funkce aplikace c:SObjekty()

Funkce definuje příkaz SObjekty po jehož zadání bude uživatel požádán o zadání potřebných údajů pro vykreslení zvoleného obrazce.

(defun c:SObjekty (/ id co_delat)
  - tělo funkce
)

Fragmenty kódu, které musí obsahovat funkce SObjekty

Jelikož veškeré zadávání hodnot bude realizováno pomocí příkazového řádku nebo uživatelského dialogového panelu, nadefinujeme si zástupnou funkci pro nastavení způsobu zadávání požadovaných hodnot:

(defun so:zpusob_zadani()
 (princ "Tady bude v budoucnu rozhodovací funkce.")
)

V předchozí ukázce kódu si všimněte prefixu so: ve jménu funkce so:zpusob_zadani(). Prefix je vhodné uvádět při zadávání funkcí, které přísluší k nějaké nadřazené aplikaci. V našem případě signalizuje, že funkce so:zpusob_zadani() je volána z funkce SObjekty(). Tato maličkost však může značně urychlit orientaci ve výsledném kódu.

Zástupná funkce pro dialogový box so:dialog(), bude mít následující definici:

(defun so:dialog()
 (princ  "Tady bude v budoucnu dialogový box")
)

Zadávání hodnot od uživatele bude realizováno pomocí funkce so:zadej_hodnoty(). Do naší kostry aplikace si tedy doplníme následující fragment kódu:

(defun so:zadej_hodnoty()
 (princ "Tady bude v budoucnu zadání hodnot od uživatele")
)

Hodnoty získané od uživatele přiřadíme do globální proměnné gl_pam_hodnoty. Po přiřazení hodnot musíme zjistit co uživatel požadoval vykreslit a následně zavoláme odpovídající funkci so:kresli_nuhelnik() nebo so:kresli_kruznici(). Obě tyto funkce budou volány s proměnou gl_pam_hodnoty.

(defun so:kresli_nuhelnik ()
 (princ "Tady bude v budoucnu vykreslení n - úhelníků")
)

(defun so:kresli_kruznici()
 (princ "Tady bude v budoucnu vykreslení kružnic")
)

Výsledná kostra aplikace

Hlavní body kostry funkce:

Vlastní kód kostry hlavní funkce:

(defun c:SObjekty ()
              ;;; definice nové funkce kresli
 (setq zadani (so:zpusob_zadani))
              ;;; nastavení proměnné určující jakým způsobem
              ;;; se mají zadat informace
 (if (= zadani "prikaz")
  (if (= (so:zadej_hodnoty) T)
   (so:vykresli)
              ;;; vykreslení požadovaného objektu, v případě
              ;;; že byly zadány hodnoty
  )
 )
 (if (= zadani "dialog")
              ;;; zavolání dialogového boxu
  (if (= (so:dialog) T)
   (so:vykresli)
              ;;; vykreslení požadovaného objektu
  )
 )
 (princ "Funkce c:SObjekty právě dokončila činnost")
              ;;; informace o ukončení funkce
 (princ)
)

Uživatel si může po napsání výše uvedených fragmentů vyzkoušet přeložení napsané funkce. V případě, že nechcete psát uvedený kód aplikace je zde k dispozici zdrojový kód kostry aplikace a zástupných funkcí.

Při spuštění funkce zatím neproběhnou nijak zajímavé akce, ale je demonstrováno použití zástupných funkcí.