Harbour (perisian)

Daripada Wikipedia, ensiklopedia bebas.
Lompat ke: pandu arah, cari
Projek Harbour
Paradigma Pelbagai paradigma: imperatif, kefungsian, berorientasikan objek, pantulan
Muncul pada 1999
Direka oleh Antonio Linares
Pembangun Viktor Szakáts dan komuniti
Lepasan stabil 3.0.0 (17 Julai 2011; 3 tahun yang lalu (2011-07-17))
Lepasan pratunjuk 3.1.x tersedia daripada SVN
Disiplin penjenisan secara pilihan itik, dinamik, selamat, separuh tegas
Dialek Clipper, Xbase++, Flagship, FoxPro, xHarbour
Dipengaruhi dBase, Clipper
Mempengaruhi xHarbour
OS Rentas-pelantar
Lesen Sumber terbuka serasi GPL
Sambugan fail biasa .prg, .ch, .hbs, .dbf
Laman web http://www.harbour-project.org/

Harbour ialah sebuah bahasa pengaturcaraan komputer moden. Ia serasi dengan Clipper yang rentas-pelantar, mampu berjalan pada kebanyakan sistem pengendalian (DOS, Microsoft Windows, Linux, varian Unix, beberapa keturunan BSD, Mac OS X, MINIX 3, Windows CE, Pocket PC, Symbian, iPhone, QNX, VxWorks, OS/2/eComStation, BeOS/Haiku, AIX) menggunakan kod sumber dan pangkalan data yang sama.

Walaupun ia sebuah bahasa pengaturcaraan serbaguna yang hebat, namun ia diguna terutamanya untuk mencipta atur cara pangkalan data/perniagaan. Harbour telah diselenggarakan dengan aktif mencari kepelbagaian sambil mengekalkan keserasian kebelakang dengan gaya Clipper. Ia telah melalui pelbagai perubahan dan mendapat kepopularan meluas dalam tahun 1980-an dan 1990-an.

Lesen sumber terbuka Harbour[1] serupa dengan Lesen Awam Am GNU, kecuali ia menyokong aplikasi hak milik, jadi sesebuah aplikasi hak milik boleh dihasilkan dengan Harbour dan diedarkan.

Contoh[sunting | sunting sumber]

Ringkas[sunting | sunting sumber]

Contoh atur cara "hello world" biasa ialah:

 
  ? "Hello, world!"

Atau:

  QOut( "Hello, world!" )

Atau:

  Alert( "Hello, world!" )

Atau, dikurung dalam tatacara nyata:

 PROCEDURE Main()
 
    ? "Hello, world!"
 
 RETURN

OOP[sunting | sunting sumber]

 #include "hbclass.ch"
 
 PROCEDURE Main()
 
    LOCAL oPerson := Orang( "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" ) )
 
    // Contoh pentakrifan Method DALAM-BARIS
    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
 
 // Contoh pentakrifan Method biasa.
 METHOD New( cName ) CLASS Person
 
   ::Name := cName
 
 RETURN Self

Rujukan[sunting | sunting sumber]