Un Esempio

Riporto qui di seguito il testo di un esempio da me creato per illustrare una semplice classe.

Per i pił esperti: si consiglia l'esame anche dei file .ppo!

 

Calcolo del rendimento di un BOT

Modulo Classi.prg

*+********************************************************************
*+
*+ Source Module => C:\PRG\CLASSI.PRG
*+
*+ Functions: Class BOT
*+
*+ Reformatted by Click! 2.03 on Jan-13-2000 at 6:00 pm
*+
*+********************************************************************

Textblock C:\PRG\CLASSI.PRG
// 12/01/2000 15:24

//(c) Scire' Salvatore

#include "oobject.ch"

*+********************************************************************
*+
*+ Class BOT
*+
*+********************************************************************
*+
CLASS BOT

EXPORT:
VAR nCapitale AS 0
VAR nGiorni AS 0
VAR nTasso AS 0
VAR dDataI AS DATE
VAR dDataF AS DATE
LOCAL:
METHOD New( nCapitale, dDataI, dDataF )
METHOD Tasso_C() INLINE( ( ( 100 / ::nCapitale ) ^ ( 365 / ::nGiorni ) - 1 ) * 100 ) ;
NOSELF
METHOD Tasso_S() INLINE( ( ( ( 100 / ::nCapitale ) - 1 ) * ( 365 / ::nGiorni ) ) * 100 ) ;
NOSELF
ENDCLASS

METHOD New( nCapitale, dDataI, dDataF )

::nCapitale := nCapitale
::nGiorni := ( CTOD( dDataF ) - CTOD( dDataI ) )

IF ::nGiorni = 0 .OR. ::nCapitale = 0
FT_DISPMSG( { { "Il Prezzo o i giorni non possono essere nulli" }, { "W/B", "W/B" } }, "*", 19,, 1 )

FMenuTest()
ENDIF

RETURN Self

*+ EOF: CLASSI.PRG

 

Segue un modulo di menu che utilizza funzioni tratte dalla libreria freeware NANFOR.LIB

Modulo FMENU.PRG

*+********************************************************************
*+
*+ Source Module => C:\PRG\FMENU.PRG
*+
*+ Functions: Function FMENUTest()
*+ Function FMENUOOPCreate()
*+
*+ Reformatted by Click! 2.03 on Jan-13-2000 at 6:00 pm
*+
*+********************************************************************

Textblock C:\PRG\FMENU.PRG
// 12/01/2000 15:24

//(c) Scire' Salvatore

#include "button.ch"
#include "inkey.ch"

ANNOUNCE CLIPPER520

*+********************************************************************
*+
*+ Function FMENUTest()
*+
*+ Called from ( appl.prg ) 1 - function autore()
*+ 1 - function oop()
*+ 2 - function bot_a()
*+ ( classi.prg ) 1 - class bot
*+
*+********************************************************************
*+
FUNCTION FMENUTest()

LOCAL oInfo

SETCANCEL( .F. )

SET( _SET_EVENTMASK, INKEY_ALL )

MSETCURSOR( .T. )

SETCOLOR( "N/BG,N/W,N,N,N/W" )
CLS
oInfo := FMENUOOPCreate()

DO WHILE MENUMODAL( oInfo, 1, 24, 0, 79, "r/w" ) <> 999
ENDDO

RETURN ( NIL )

*+********************************************************************
*+
*+ Function FMENUOOPCreate()
*+
*+ Called from ( fmenu.prg ) 1 - function fmenutest()
*+
*+********************************************************************
*+
FUNCTION FMENUOOPCreate()

LOCAL oTopBar
LOCAL oPopUp

oTopBar := TOPBAR( 0, 0, 79 )
oTopBar:ColorSpec := "GR+/B,GR+/N,BG+/B,GR+/N,N+/B,N+/B"

oPopUp := POPUP()
oPopUp:ColorSpec := "GR+/B,GR+/N,BG+/B,GR+/N,N+/B,N+/B"
oPopUp:AddItem( MENUITEM( "&Tasso", { || BOT_A() },, "Calcolo del Tasso ad Interesse Semplice/Composto" ) )

oTopBar:AddItem( MENUITEM( "Bot", oPopUp,, "MENU DI FINANZA OOP" ) )

oPopUp := POPUP()
oPopUp:ColorSpec := "GR+/B,GR+/N,BG+/B,GR+/N,N+/B,N+/B"
oPopUp:AddItem( MENUITEM( "&Esci", { || Esci() }, K_ALT_E, "Fine dell'applicazione", 999 ) )
oPopUp:AddItem( MENUITEM( "&Autore", { || Autore() },, "Autore e Versione" ) )
oPopUp:AddItem( MENUITEM( "&Dati OOP", { || Oop() },, "Dati sulla classe OOP" ) )

oTopBar:AddItem( MENUITEM( "&Fine", oPopUp,, "CALCOLI " ) )

RETURN ( oTopBar )

*+ EOF: FMENU.PRG

Modulo Appl.prg

*+********************************************************************
*+
*+ Source Module => C:\PRG\APPL.PRG
*+
*+ Functions: Function Esci()
*+ Function Autore()
*+ Function OOP()
*+ Function BOT_A()
*+
*+ Reformatted by Click! 2.03 on Jan-13-2000 at 6:00 pm
*+
*+********************************************************************

textblock C:\PRG\APPL.PRG
// 12/01/2000 15:24

//(c) Scire' Salvatore

#include "inkey.ch"

*+********************************************************************
*+
*+ Function Esci()
*+
*+ Called from ( fmenu.prg ) 1 - function fmenuoopcreate()
*+
*+********************************************************************
*+
FUNCTION Esci

SETCOLOR( "W/N,N/W,N,N,N/W" )
CLS
QUIT
RETURN NIL

*+********************************************************************
*+
*+ Function Autore()
*+
*+ Called from ( fmenu.prg ) 1 - function fmenuoopcreate()
*+
*+********************************************************************
*+
FUNCTION Autore

STATIC oFin
STATIC nCapitale := 0
STATIC nGiorni := 0
STATIC dDataI := ( " / / " )
STATIC dDataF := ( " / / " )
STATIC nTasso := 0
STATIC GetList := {}

CLS

FT_DISPMSG( { { "(c) SCS Soft 10/1999 - Rel. 1.00" }, { "W/B", "W/B" } }, "*" )

SETCOLOR( "W/N,N/W,N,N,N/W" )

FMENUTest()
RETURN NIL

*+********************************************************************
*+
*+ Function OOP()
*+
*+ Called from ( fmenu.prg ) 1 - function fmenuoopcreate()
*+
*+********************************************************************
*+
FUNCTION OOP

STATIC oFin
STATIC nCapitale := 0
STATIC nGiorni := 0
STATIC dDataI := ( " / / " )
STATIC dDataF := ( " / / " )
STATIC nTasso := 0
STATIC GetList := {}

SETCOLOR( "W/N,N/W,N,N,N/W" )

CLS
oFin := Bot():New( nCapitale, dDataI, dDataF )
oFin: ClassInfo()

FMENUTest()

RETURN NIL

*+********************************************************************
*+
*+ Function BOT_A()
*+
*+ Called from ( fmenu.prg ) 1 - function fmenuoopcreate()
*+
*+********************************************************************
*+
FUNCTION BOT_A

STATIC oFin
STATIC nCapitale := 0
STATIC nGiorni := 0
STATIC nTasso := 0
STATIC dDataI := ( " / / " )
STATIC dDataF := ( " / / " )
STATIC GetList := {}

SET CENTURY ON
SET EPOCH TO 2000
SET DATE BRITISH

CLS
@ 03, 10 SAY "Calcolo del Rendimento dei BOT" 
@ 04, 10 SAY "==============================" 
@ 06, 10 SAY "Prezzo " GET nCapitale PICTURE "@E 999.999999" 
@ 07, 10 SAY "Data acquisto " GET dDataI PICTURE "@D 99/99/9999" 
@ 08, 10 SAY "Data Scadenza " GET dDataF PICTURE "@D 99/99/9999" 

READ

IF LASTKEY() = K_ESC
FMENUTest()
RETURN NIL
ENDIF

oFin := Bot():New( nCapitale, dDataI, dDataF )

@ 12, 10 SAY "Giorni : " + TRANSFORM( oFin:nGiorni, "@E 999" ) 

@ 14, 10 SAY "Tasso Interesse Semplice : " + TRANSFORM( ROUND( oFin:Tasso_S, 4 ), "@E 999.9999" ) + " %" 

@ 16, 10 SAY "Tasso Interesse Composto : " + TRANSFORM( ROUND( oFin:Tasso_C, 4 ), "@E 999.9999" ) + " %" 

FT_DISPMSG( { { "Premi <c> per continuare" }, { "W+/B*", "W/B", "GR+/B" } }, "cC", 19,, 1 )

FMENUTest()

RETURN NIL

*+ EOF: APPL.PRG

Per la compilazione ho utilizzato il seguente file Bot.rmk

// File make per Bot
// 12/01/2000 15:24

//(c) Scire' Salvatore

modules = fmenu, classi, appl
compare = fmenu.obj classi.obj appl.obj

.prg.obj:
Clipper $* /n /w /a /l /p

appl.obj : appl.prg
fmenu.obj : fmenu.prg
classi.obj : classi.prg

bot.exe: $(compare)
blinker fi $(modules) out $@ @linkp

QUI       puoi scaricare tutti i file compressi in un archivio in formato ZIP

 

Torna all'inizio

Ritorna alla  

 

Hosted by www.Geocities.ws

1