Abstraktní Wikipedie/Požadavky na tvorbu objektů

This page is a translated version of the page Abstract Wikipedia/Object creation requirements and the translation is 100% complete.

Abstraktní Wikipedie prostřednictvím e-mailového seznamu Abstraktní Wikipedie na IRC Wikifunkce na Telegramu Wikifunkce na Facebooku Wikifunkce na Twitteru Wikifunkce na Facebooku Wikifunkce na YouTube Webové stránky Wikifunkcí Translate

Wikifunkce budou mít ve svém hlavním jmenném prostoru různorodý počet objektů.

Každý objekt musí mít přesně jeden typ a tento typ se obvykle nemění.

  • Podle typu může mít objekt klíče, které mohou mít hodnoty.
  • Každá hodnota je zase jiným objektem (typ tohoto objektu však může být omezen definicí typu vkládaného objektu pro daný klíč).
  • Typy může vytvářet a udržovat (a měnit) komunita.

Například: předpokládejme, že chceme vytvořit objekt typu "Datum v gregoriánském kalendáři", který bude reprezentovat datum, například 7. května 1945.

  • Typ Date (Datum) by mohl deklarovat, že má jeden klíč pro měsíc (jeden pro rok, jeden pro den) a hodnota klíče "month" (měsíc) by byla typu "Month in the Gregorian calendar".
  • Tento typ by zase byl výčtem s dvanácti možnými hodnotami od ledna do prosince.

Samotné hodnoty mohou být poměrně složité a někdy rekurzivní, takže celá struktura může být poměrně velká a nepřehledná.

Otázka designu zní:

Jak umožnit snadné vytváření (a prohlížení a úpravy) objektů?

Postup je následující:

  • Editor chce vytvořit objekt.
  • Nejprve musí vybrat typ objektu, který má být vytvořen. Seznam možných typů může být poměrně dlouhý a přispěvatelé mohou vytvářet nové typy.
  • Na základě vybraného typu musí přispěvatel zadat hodnoty pro všechny vlastnosti klíče, pro které chce nebo musí zadat hodnoty.
    • Některé klíče mohou být nepovinné nebo mohou mít výchozí hodnoty.
    • Některé klíče mohou přebírat seznamy objektů buď určitého typu, nebo ne.
  • Každý klíč přebírá jiný objekt. Typ objektu, který každý klíč přebírá, je často určen typem, který definuje klíč, takže již víme, že tato hodnota musí být určitého typu.
    • Některé typy mohou mít uzavřený malý počet možných hodnot (např. boolean může být true nebo false, gregoriánský kalendářní měsíc může být leden až prosinec).
    • Některé typy nabývají většího počtu možných hodnot (např. v závislosti na jazyce, který MediaWiki podporuje).
    • Některé typy přijímají neomezený počet možných hodnot (např. řetězec může být libovolná hodnota zadaná uživatelem, číslo může být libovolné číslo zadané uživatelem).
  • Téměř všude, kde můžeme zadat hodnotu, můžeme také zadat volání funkce.
    • Volání funkce označuje funkci, která vrací hodnotu požadovaného typu a která může, ale nemusí přijímat řadu argumentů s určitými typy.
    • Každý parametr má své jméno. (Volání funkcí s argumenty vypadá podobně jako typy s klíči a může mít stejný design.)
    • Hodnoty parametrů zase mohou být voláními funkcí.

Příklad: předpokládejme, že zadáváme datum, jak bylo uvedeno dříve.

  • Když se dostaneme k výběru hodnoty pro klíč "měsíc", můžeme místo výběru jednoho z dvanácti dostupných objektů typu "gregoriánský kalendářní měsíc" zadat také volání funkce, např. "get month from date" (vrať měsíc z data) s jediným argumentem přebírajícím gregoriánské datum.
  • Tento parametr by zase mohl být voláním funkce, např. "převést datum z islámského kalendáře na gregoriánský kalendář", která zase přijímá jeden argument, kterým je "datum islámského kalendáře", a měla by své vlastní klíče, které je nyní třeba zadat.
  • Ten by se uložil jako celá struktura a nezměnil by se automaticky pouze na "May", takže je třeba strukturu znovu zobrazit a upravit.

Někdy může parametr nebo klíč nabývat hodnoty libovolného typu. V takovém případě musíme přispěvateli umožnit, aby před zadáním hodnoty nejprve vybral typ.

V ideálním případě by rozhraní mělo dobře fungovat na mobilních zařízeních:

  • Objekty vždy tvoří stromy.
  • V ideálním případě můžeme sbalit větve stromu, abychom se mohli zaměřit na určité části objektu a zobrazit je a upravit.

Viz též