OOP kialakulása
A Clipper nyelv fejlesztése során a készítők átvettek néhány elemet a C és Pascal nyelvekből, valamint az objektumorientált programozási módszerekből, így könnyen kezelhető lekérdező felületet (sqlExecute()) biztosítottak.
A CA-Clipper 5.2 és főleg 5.3 hozott sok új beépített osztályt és egységes objektumorientált szintaxist.
Olyan könyvtárak, mint a Class(y), Fivewin, Clip4Win, és a TopClass biztosítottak objektumorientált funkcionalitásokat.
Ebből adódóan a Harbour is rendelkezik objektumorientált bővítményekkel, melyek teljes támogatást nyújtanak például a CLASS(y) szintaxisán alapuló öröklődéshez.
A Harbour objektumorientált programozási szintaxisa igen hasonló a korábbi Clipper osztályok könyvtáraihoz.
OOP példa:
#include "hbclass.ch"
PROCEDURE Main()
LOCAl oPerson := Person( "Dave" )
oPerson:Eyes := "Invalid"
oPerson:Eyes := "Blue"
Alert( oPerson:Describe() )
RETURN
CLASS Person
DATA Name INIT ""
METHOD New() CONSTRUCTOR
ACCESS Eyes INLINE ::pvtEyes
ASSIGN Eyes( x ) INLINE IIF( ValType( x ) == 'C' .AND. x IN "Blue,Brown,Green", ::pvtEyes := x, Alert( "Invalid value" ) )
// Sample of IN-LINE Method definition
INLINE METHOD Describe()
LOCAL cDescription
IF Empty( ::Name )
cDescription := "I have no name yet."
ELSE
cDescription := "My name is: " + ::Name + ";"
ENDIF
IF ! Empty( ::Eyes )
cDescription += "my eyes' color is: " + ::Eyes
ENDIF
ENDMETHOD
PRIVATE:
DATA pvtEyes
ENDCLASS
// Sample of normal Method definition.
METHOD New( cName ) CLASS Person
::Name := cName
RETURN Self