A Harbour programozási nyelv

Objektum-orientált programozás

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