XBase++

lenguaje de programación

XBase++ es un lenguaje de programación desarrollado por Alaska Software Inc., una empresa germano-americana, totalmente compatible con Clipper 5.2, soportando la programación orientada a objetos, la herencia múltiple y el polimorfismo. Soporta todos los tipos nativos de xBase, incluyendo los Codeblocks. Permite generar aplicaciones Windows 10/ 7/ NT / 2000 / XP (32 bits) y 95 / 98 / ME.

XBase++
Información general
Tipo de programa lenguaje de programación
Lanzamiento inicial 1997
Enlaces

Soporte de Clipper

editar

XBase++ soporta tanto las viejas sentencias @SAY/GET para definir formularios como dispone de un editor gráfico de formularios similar al de Visual Foxpro. Cuenta asimismo con un entorno de desarrollo visual, soporte de ficheros OEM (formato DOS) y ANSI (Windows), un depurador integrado y un compilador de recursos para poder añadir iconos y gráficos a la aplicación. Puede generar ficheros EXE o DLL.

Xbase++ soporta los Replaceable Database Drivers (RDD, que permiten el soporte de múltiples formatos de base de datos, pudiendo ser desarrollados por terceros) de Clipper mediante sus DatabaseEngines (DBEs). El paquete incluye soporte para DBF, FOX, NTX, CDX, SDF y DEL. Soporta CORBA 2.0, los formatos de Visual FoxPro 3.0 a 5.0, y acceso a servidores SQL.

Nacimiento

editar

XBase++ nació tras la decisión de Computer Associates de abandonar Clipper para volcarse en Visual Objects. El fracaso de V.O. como sustituto de Clipper provoca que comiencen a desarrollarse primero bibliotecas de terceros para dotarlo de soporte Windows, y luego de compiladores alternativos como XBase++ que soporten la sintaxis de Clipper 5.2 (la versión más popular), expandiendo el soporte a aplicaciones de 32 bits.

Ejemplos de código

editar
#include "Common.ch"
#include "class.ch"

//
//  Este programa imprime:
//
//  Michifuz  Miau!
//  DonGato   Miau!
//  Rin Tin Tin  Guau!
//  Press any key to continue...
//

/////////////////////////////
//
PROCEDURE Main()
//
/////////////////////////////

  LOCAL aAnimales := Array(3)
  LOCAL i

  aAnimales[1] :=  Gato():New("Michifuz")
  aAnimales[2] :=  Gato():New("DonGato")
  aAnimales[3] :=  Perro():New("Rin Tin Tin")

  FOR i:=1 TO LEN(aAnimales)
     ? aAnimales[i]:Nombre + "  " + aAnimales[i]:Hablar()
  NEXT i

  WAIT

RETURN

/////////////////////////////
//
// Clase abstracta Animal
// se difiere la implementación
// del método Hablar.
//
CLASS Animal
//
/////////////////////////////

   EXPORTED:
      VAR Nombre   READONLY

      METHOD Init
      DEFERRED CLASS METHOD Hablar
ENDCLASS

METHOD Animal:Init( cNombre )
   ::Nombre := cNombre
RETURN Self

/////////////////////////////
//
// Clase concreta Perro
// Implementa Hablar, diferida en la
// clase Animal.
//
CLASS Perro FROM Animal
//
/////////////////////////////
   EXPORTED:
   METHOD Hablar
ENDCLASS

METHOD Perro:Hablar()
RETURN "Guau!"

/////////////////////////////
//
// Clase concreta Gato
// Implementa Hablar, diferida en la
// clase Animal.
//
CLASS Gato FROM Animal
//
/////////////////////////////
   EXPORTED:
   METHOD Hablar
ENDCLASS

METHOD Gato:Hablar()
RETURN "Miau!"

Enlaces externos

editar