Abstraktní Wikipedie/Požadavky na tvorbu objektů
Tato stránka je v současnosti pracovní verzí. Na diskusní stránce k tomu možná jsou dostupné bližší informace. Pro správce překladů: Obvykle se pracovní verze neoznačují pro překlady. |
- 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.