RSL | |
---|---|
Jazyková třída |
multiparadigma : |
Typ provedení | interpretován |
Objevil se v | 1994 |
Autor | Sergej Kubrin |
Přípona souboru | ..mac |
Uvolnění | 1151 [1] ( 19. března 2015 ) |
Typový systém | dynamický |
Hlavní implementace | RS-Bank , InterBank, RS-Securities, RS-Platby |
webová stránka | softlab.ru |
RSL nebo Object RSL ( zkratka z anglického R-Style Language ) je objektově orientovaný , doménově orientovaný , interpretovaný , proprietární programovací jazyk vyvinutý společností R-Style Softlab pro použití v jejích softwarových produktech .
Vývojové prostředí s názvem „RSL Shell“ zahrnuje:
RSL se také nazývá makrojazyk a programy na něm založené se nazývají makra . Nástroje pro vytváření a ladění RSL programů jsou k dispozici ke stažení zdarma na stránkách vývojáře, nicméně taková makra by neměla obsahovat volání modulů obsahujících obchodní logiku a zabudovaných do hlavních programů R-Style Softlab. Interpret je implementován pod Windows , umožňuje pracovat pod Wine . Dřívější verze podporovaly MS-DOS .
Podpora RSL je zabudována do všech subsystémů RS-Bank ABS , stejně jako InterBank, RS-Payments.
Modul RSLSRV registruje v systému objekt RSLSrv.RslEngine, což umožňuje použít makro RSL jako ActiveX objekt . Globální makro proměnné se stávají vlastnostmi a procedury metodami. Řekněme například, že existuje makro myactivex.mac :
var str1: String = "Testovací řetězec" ; makro func1(a) return a*a; konec ;pak můžete použít následující kód jazyka Visual Basic :
Sub TestRSL () Set eng = CreateObject ( "RSLSrv.RslEngine" ) Set MyObj = eng . LoadModule ( "myactivex.mac" ) Ladění . Tisk MyObj . str1 ' vypíše Testovací řetězec Debug . Tisk MyObj . func1 ( 2 ) ' vytiskne 4 End SubRSD je knihovna navržená pro univerzální přístup ke zdrojům dat podporujícím SQL z programů C++ a RSL . Objektový model je založen na ADO .
Knihovna má několik úrovní (každá následující úroveň je založena na té předchozí: deleguje většinu funkcí na základní úroveň):
Úrovně 1 a 2 jsou implementovány jako DLL , zatímco úroveň 3 je implementována jako DLM.
Windows Reports je objektově orientovaná knihovna pro výstup sestav do formátů kancelářských aplikací MS Excel , MS Word , Internet Explorer . Knihovna je založena na technologiích RSCOM a ActiveX . Většina je napsána v RSL, součástí jsou i DLM moduly.
RSL má vestavěnou podporu pro práci s databázemi (DB) spravovanými Pervasive PSQL ( dříve Btrieve a Pervasive.SQL ). Databázové slovníky mají příponu .def(analog .ddf), soubory databázových tabulek - .dbt(analog .mkd). Je také možné pracovat s databázovými soubory .dbf. Práce s SQL je organizována pomocí ADO prostřednictvím modulu RSLX a knihoven RSD .
Pokud jde o syntaxi, RSL sdílí podobnosti s C++ a Pascal . Například přiřazovací a porovnávací operace „rovná se“, „nerovná“ se zapisuje stejně jako v C++ ( =, ==, !=). A logické operace jsou jako v Pascalu ( and, or, not).
RSL (podobně jako C++ ) podporuje dva typy komentářů : víceřádkové a jednořádkové .
/* Příklad velkého komentáře, skládající se z několika řádků */ // Zbytek řádku je komentářJazyk RSL umožňuje vnořené komentáře obou typů, a to jak samostatně, tak společně.
Všechny podporované datové typy v RSL jsou rozděleny na skalární a objektové.
Skalární typy:
Typy objektů:
RSL poskytuje implicitní a explicitní převod z jednoho datového typu na jiný.
V roce 1997 se RSL stal objektově orientovaným a změnil svůj název na Object RSL [3] . Představuje třídy, které poskytují tři nejdůležitější vlastnosti objektově orientovaného programování (OOP): zapouzdření , dědičnost a polymorfismus .
ObjektyV RSL (na rozdíl od jiných programovacích jazyků, například C++) probíhá konstrukce objektů ve dvou fázích:
Ve třídách RSL se tedy nepoužívají uživatelsky definované destruktory (objekty a jejich vlastnosti se automaticky smažou).
DědičnostV RSL vám dědičnost umožňuje popsat novou třídu na základě již existující (nadřazené, základní) třídy. Všechny metody a vlastnosti nadřazené třídy se tedy stávají také metodami a vlastnostmi podřízené třídy. Kromě toho může podřízená třída přidat své vlastní vlastnosti a metody nebo přepsat metody nadřazené třídy . Dědičnost umožňuje vytvářet hierarchie tříd. Vícenásobné dědictví je v RSL zakázáno.
Při dědění je název nadřazené třídy uveden v závorkách za klíčovým slovem Class. Chcete-li inicializovat nadřazenou třídu, musíte zavolat předdefinovanou metodu, jejíž název je tvořen přidáním předpony k názvu nadřazené třídy Init.
Příklad dědění třídou Zaměstnanec ("Zaměstnanec") třídy Osoba ("Osoba"), když k ní přidáte vlastnost Příspěvek ("Pozice"):
Třída Osoba (Jméno, Příjmení) // Seznam vlastností a metod třídy Osoba end ;V RSL je zapouzdření implementováno specifikací úrovně přístupu k vlastnostem a metodám třídy a také k proměnným a procedurám makromodulu.
|
|
Úrovně přístupu k vlastnostem a metodám třídy :
Přístup | Místní (místní) |
Soukromé (soukromé) |
Globální | Globální síla |
Ve třídě | ano / ne | Ano | ano (přes objekt třídy) |
Ano |
V dědicích | Ne | Ano | ano (přes objekt třídy) |
Ano |
Zvenku | Ne | Ne | ano (přes objekt třídy) |
Ano |
Úrovně přístupu k proměnným , procedurám a objektům makromodulů :
Přístup | Místní (místní) |
Soukromé (soukromé) |
Globální | Globální síla |
V makro modulu | ano / ne | Ano | Ano | Ano |
V modulech, které toto importují |
Ne | Ne | Ano | Ano |
Všechny metody tříd RSL jsou virtuální . RSL tedy implementuje inkluzní polymorfismus (nebo čistý polymorfismus) prostřednictvím dědičnosti. Pokud přidáte metodu do odvozené třídy s názvem, který se již používá pro jednu z metod nadřazené třídy, odvozená metoda nadřazenou metodu přepíše. Nadřazená metoda bude přístupná pouze z podřízené metody, která ji přepíše. Tato rodičovská metoda se nazývá svým názvem. Ale v podřízené třídě, mimo přepisovací metodu, nebude mít přístup k přepsané rodičovské metodě. Bude také nemožné získat přístup k této metodě nadřazené třídy prostřednictvím odkazu na objekt podřízené třídy v hlavní části programu.
Class First() // Nadřazená třída Var x = 2 , y = 3 ;V tomto příkladu, pokud je metoda odstraněna z nadřazené třídy Sum(), bude metoda volána rekurzivněSum() v podřízené třídě .
Není nutné deklarovat proměnné a specifikovat jejich typ. Porovnávací operátory mají vyšší prioritu než logické operátory. Pokud například potřebujete provést "akci" v případě, že proměnná a je rovna 1 nebo 2, musíte použít následující konstrukci:
if ((a == 1 ) nebo (a == 2 )) // akce konec ;Provádění programu začíná prvním příkazem, který není součástí třídy nebo procedury, jako v php .
makro funkce1 [Jsem funkce 1 ]; konec ; // zde začíná provádění [Pojďme!];Quine na RSL (formátování pro čitelnost):
s= "''s=Print(SubStr(s,1,2)+StrFor(34)+s+StrFor(34)+StrFor(59)+SubStr(s,3));''" ; Tisk ( SubStr (s, 1 , 2 )+ StrFor ( 34 )+s+ StrFor ( 34 )+ StrFor ( 59 )+ SubStr (s, 3 ));