Xbase++

Z Wikipedii, wolnej encyklopedii

Xbase++ – zorientowany obiektowo język programowania, obsługujący wielokrotne dziedziczenie i polimorfizm. Jest oparty na języku Xbase oraz jest w stu procentach kompatybilny z językiem programowania Clipper. Xbase++ obsługuje typy danych z języka Xbase, również te, które znajdują się w IDE Codeblocks. W języku Xbase++ można stworzyć aplikacje dla systemów z rodziny Windows: NT i nowszych.

Narodziny[edytuj | edytuj kod]

Xbase++ powstał po decyzji CA Technologies o zaprzestaniu prac nad językiem Clipper, aby rozwijać język Visual Objects. Niepowodzenie Visual Objects, jako następcy języka Clipper doprowadziło do stworzenia nowych bibliotek oraz kompilatorów zgodnych ze składnią języka Clipper.

Obsługa Clippera[edytuj | edytuj kod]

Język Xbase++ obsługuje stare komendy @SAY/GET z języka Clipper, służące do definicji formularzy. Visual Xbase++ - IDE języka Xbase++ posiada edytor graficzny do tworzenia formularzy podobnych do Visual FoxPro, obsługuje pliki OEM (format DOS) i ANSI (Windows). Ma zintegrowany debugger oraz kompilator zasobów do dodawania ikon i grafik do aplikacji. Program potrafi wygenerować pliki EXE lub DLL.

RDD[edytuj | edytuj kod]

Xbase++ obsługuje RDD (z ang. Replaceable Database Drivers - sterowniki, które zapewniają dostęp do wielu formatów baz danych) poprzez DatabaseEngines z języka Clipper. Podstawowy pakiet zawiera obsługę DBF, FOX, NTX, CDX, SDF i DEL. Ponadto wspiera standard Common COBRA 2.0, obsługuje formaty baz danych z Visual FoxPro od wersji 3.0 do 5.0 i oferuje dostęp do serwera SQL.

Przykładowy program[edytuj | edytuj kod]

#include "class.ch"
 
//
//  This program prints:
//
//  Missy  Meow!
//  Mr. Bojangles  Meow!
//  Lassie  Bark!
//  Press any key to continue...
//
 
/////////////////////////////
//
PROCEDURE Main()
//
/////////////////////////////
 
  LOCAL aAnimals := Array(3)
  LOCAL i
 
  aAnimals[1] :=  Cat():New("Missy")
  aAnimals[2] :=  Cat():New("Mr. Bojangles")
  aAnimals[3] :=  Dog():New("Lassie")
 
  FOR i:=1 TO LEN(aAnimals)
     ? aAnimals[i]:Name + "  " + aAnimals[i]:Talk()
  NEXT i
 
  WAIT
 
RETURN
 
/////////////////////////////
//
CLASS Animal
//
/////////////////////////////
 
   EXPORTED:
      VAR Name   READONLY
 
      METHOD Init
      DEFERRED CLASS METHOD Talk
ENDCLASS
 
METHOD Animal:Init( cName )
   ::Name := cName
RETURN Self
 
/////////////////////////////
//
CLASS Dog FROM Animal
//
/////////////////////////////
   EXPORTED:
   METHOD Talk
ENDCLASS
 
METHOD Dog:Talk()
RETURN "Bark!"
 
/////////////////////////////
//
CLASS Cat FROM Animal
//
/////////////////////////////
   EXPORTED:
   METHOD Talk
ENDCLASS
 
METHOD Cat:Talk()
RETURN "Meow!"

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]