**XBase++** é unha linguaxe de programación desenvolto por Alaska Software, compatible con Clipper 5.2, soportando a programación orientada a obxectos, a herdanza múltiple e o polimorfismo. Soporta todos os tipos nativos de xBase, incluíndo os Codeblocks. Permite xerar aplicacións Windows NT / 2000 / XP (32 bits) e 95 / 98 / ME.

Historia
--------

XBase++ naceu tras a decisión de Computer Associates de abandonar Clipper para envorcarse en Visual Objects. O fracaso de V.Ou. como substituto de Clipper provoca que comecen a desenvolverse primeiro bibliotecas de terceiros para dotalo de soporte Windows, e logo de compiladores alternativos como XBase++ que soporten a síntaxis de Clipper 5.2 (a versión máis popular), expandindo o soporte a aplicacións de 32 bits.

Soporte de Clipper
------------------

XBase++ soporta tanto as vellas sentenzas @\SAY/GET para definir formularios como dispón dun editor gráfico de formularios similar ao de Visual Foxpro. Conta así mesmo cunha contorna de desenvolvemento visual, soporte de ficheiros OEM (formato DOUS) e ANSI (Windows), un depurador integrado e un compilador de recursos para poder engadir iconas e gráficos á aplicación. Pode xerar ficheiros EXE ou DLL.

RDD
---

Xbase++ soporta os Replaceable Database Drivers (RDD, que permiten o soporte de múltiples formatos de base de datos, podendo ser desenvolvidos por terceiros) de Clipper mediante os seus DatabaseEngines (DBEs). O paquete inclúe soporte para DBF, FOX, NTX, CDX, SDF e DO. Soporta CORBA 2.0, os formatos de Visual FoxPro 3.0 a 5.0, e acceso a servidores SQL.

Exemplos de Código
------------------

```
#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] :=  Can():New("Rin Tin Tin")

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

  WAIT

RETURN

/////////////////////////////
//
CLASS Animal
//
/////////////////////////////

   EXPORTED:
      VAR Nome   READONLY

      METHOD Init
      DEFERRED CLASS METHOD Falar
ENDCLASS

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

/////////////////////////////
//
CLASS Can FROM Animal
//
/////////////////////////////
   EXPORTED:
   METHOD Falar
ENDCLASS

METHOD Dog:Falar()
RETURN "Guau!"

/////////////////////////////
//
CLASS Gato FROM Animal
//
/////////////////////////////
   EXPORTED:
   METHOD Falar
ENDCLASS

METHOD Gato:Falar()
RETURN "Miau!"

```

Véxase tamén
------------

### Ligazóns externas

* Alaska Software *(en inglés)*.
* SQLExpress for Xbase++ Object-Oriented ODBC and SQL interface for Xbase++ sqlexpress.net *(en inglés)*.
* Xb2.NET Xbase++ web server & Internet development tool (TCP/IP, HTTP, SOAP, FTP, SSL, XML) *(en inglés)*.
* ot4xb Open Source Tools para Xbase++ xbwin.com *(en inglés)*.
* The Oasis comunidade de soporte a desenvolvedorres focalizada en Clipper, FoxPro e xBase++ *(en inglés)*.
* Dialectos xBase Arquivado 16 de abril de 2008 en Wayback Machine. *(en castelán)*.

| * v
* c
* e
Linguaxes de programación |
| --- |
| Baixo nivel | 

|  |  |
| --- | --- |
| Primeira xeración | Código máquina |
| Segunda xeración | Assembly |

 |
| Alto nivel | 

|  |  |
| --- | --- |
| Terceira xeración | 
* A+
* ABC
* Algol
* B
* BASIC
* C
* C++
* C#
* COBOL
* CPL
* D
* E
* Fortran
* Go
* Java
* JavaScript
* Lisp
* Objective-C
* PL/1
* Pascal
* Smalltalk
* Visual Basic .NET

 |
| Cuarta xeración | 
* Clarion
* Clipper
* Clojure
* Common Lisp
* Erlang
* GNU Octave
* Haskell
* Lisp
* Lua
* Julia
* Perl
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* S
* Scilab
* Stata
* SQL

 |
| Quinta xeración | 
* Mercury
* OPS5
* Prolog

 |

 |
| 
* Ambiente de desenvolvemento
* Metaprogramación
* Programación a nivel funcional
* Programación estruturada
* Programación non estruturada
* Programación imperativa
* Programación modular
* Programación multidimensional
* Orientación a obxectos

 |