Úvod do objektově orientovaného programování ve 4D: Třídy

Automaticky přeloženo z Deepl

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!

Příklad s třídou „Osoba“

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.

Vanessa Talbot
• Product Owner • Vanessa Talbot se připojila k programovému týmu 4D v červnu 2014. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Od svého příchodu pracovala na definování klíčových prvků ve 4D. Pracovala na většině nových funkcí preemptivního multi-threadingu a také na velmi složitém tématu: nové architektuře pro enginované aplikace. Vanessa má titul z Telecom Saint-Etienne. Svou kariéru začala ve Výzkumném ústavu kriminalistickém jako vývojářka pro audiovizuální oddělení. Působila také v mediální a lékařské oblasti jako expertka na technickou podporu, produkci i dokumentaci novinek.