Mnozí z vás žádali o možnost definovat typ objektu od chvíle, kdy byl typ Object zpřístupněn. Díky objektovému zápisu mnozí z vás sní o tom, že budou mít k dispozici objektové funkce. Už nesněte a přivítejte třídy v databázi projektů 4D v18 R3! V tomto příspěvku na blogu vám představíme jeden z nejzajímavějších konceptů objektově orientovaného programování … spolu s příkladem databáze a bonusovým videem!
Poznámka: Počínaje verzí 4D v18 R3 budou všechna HDI umístěna na serveru GitHub. HDI můžete buď klonovat, nebo si přímo stáhnout soubor Zip. Podrobnosti najdete v tomto odstavci.
Co je to třída?
Třída je uživatelsky definovaný datový typ, který umožňuje definovat chování objektu. Obsahuje vlastní členské funkce, ke kterým lze přistupovat a které lze použít při vytvoření instance třídy.
Jak vytvořit třídu
Třídu můžete vytvořit z nabídky Nový na panelu nástrojů nebo z dialogového okna Průzkumník. Nyní, když je zobrazen editor třídy, můžete vytvořit konstruktor a funkce.
Jak vytvořit funkce třídy?
Chcete-li vytvořit funkci, musíte použít klíčové slovo Function, za kterým následuje název funkce. Poté můžete funkci předat parametry (stejně jako u metod).
Function methodName
( ; ) :="Ahoj "+ C_TEXT$0$1
$0$1
Co je to třída store?
Příkaz ds (který umožňuje přístup k datovému skladu) již znáte. Nyní máte s použitím stejné logiky k dispozici příkaz cs, který vrací úložiště tříd. Všechny třídy, které vytvoříte, jsou viditelné a dostupné v úložišti tříd.
Chcete-li vytvořit objekt, který je instancí třídy, použijte příkaz cs a členskou funkci new.
C_OBJECT($o)
$o :=cs.myClass.new()
Co je to konstruktor?
Konstruktor slouží k vytvoření a instanci objektu s výchozími atributy. Je volán automaticky při inicializaci objektu.
V editoru stačí napsat Class constructor. Konstruktoru můžete předat parametry, abyste inicializovali určité proměnné, stejně jako to můžete udělat s metodou pomocí $1, $2 atd.
Pro třídu :
Class constructor
( ) . := C_LONGINT$1
Thisvariable$1
Pro metodu, která instancuje objekt třídy, předejte parametr nové členské funkci:
C_OBJECT($o)
)
$o :=cs.Class1.new(8
Příklad
Podívejme se na konkrétní příklad s třídou „Person“. Vytvořím: „Třídu“, která je určena pro práci s osobními údaji, vytvořím:
- konstruktor,
- funkci getFullName,
- funkci getAge.
Zde je obsah mé třídy:
Class constructor
( ) ( ) ( ) . := . := . := ( ) := . +" "+ ( . ) ( ) :=( - . )/365,25 C_TEXT$1 // FirstName
C_TEXT$2 // LastName
C_DATE$3 // Birthdate
ThisfirstName$1
ThislastName$2
Thisbirthdate$3
Function getFullName
C_TEXT$0
$0ThisfirstNameUppercaseThislastName
Function getAge
C_LONGINT$0
$0Current dateThisbirthdate
Nyní v metodě vytvořím objekt „Person“. Poté načtu atributy a provedu funkce.
C_OBJECT($o)
$o :=cs.Person.new("John"; "Doe";!1956-10-27!) // instantiate the object
$firstname :=$o.firstName // return John
$lastname :=$o.lastName // return Doe
$fullName :=$o.getFullName() // return John DOE
$age:=$o.getAge(
) // return 63
Co bude dál?
V příštím příspěvku na blogu probereme pojem dědičnosti mezi třídami.