* fichier : objet.dgibi
*
* creation of object of class "complex number".
*
* define first the constructor
DEBMETH COMPLEX;
%REA=FAUX;
%IMA=FAUX;
%METHODE SET_IMA IMAG;
%METHODE SET_REA REAL;
%METHODE GET_IMA GIMAG;
%METHODE GET_REA GREAL;
FINMETH;
* define standard methods of the class
DEBMETH IMAG I*'FLOTTANT';
%IMA = I;
'SI' ('EGA' ('TYPE' %REA ) 'FLOTTANT');
%METHODE MODULE MODUL;
'FINSI';
FINMETH;
DEBMETH REAL RR*'FLOTTANT';
%REA = RR;
'SI' ('EGA' ('TYPE' %IMA ) 'FLOTTANT');
%METHODE MODULE MODUL;
'FINSI';
FINMETH;
DEBMETH GIMAG ;
II = %IMA;
'SI' ( 'NEG' ( 'TYPE' II) 'FLOTTANT');
'MESSAGE' 'The imaginary value is not yet defined';
'ERREUR' 19;
'FINSI';
FINMETH II;
DEBMETH GREAL;
RR = %REA;
'SI' ( 'NEG' ( 'TYPE' RR) 'FLOTTANT');
'MESSAGE' 'The real value is not yet defined';
'ERREUR' 19;
'FINSI';
FINMETH RR;
DEBMETH MODUL;
* It is not neccessary to check that real and imaginary exist
AA= %REA* %REA + ( %IMA*%IMA) ** 0.5;
FINMETH AA;
*
* creation of a COMPLEX OBJET and use
*
COM = OBJET COMPLEX;
list com;
COM%SET_REA 2.5;
UU=COM%GET_REA; MESS ' real value ' uu;
COM%SET_IMA 3.5;
list com;
ZZ = COM%MODULE ; list ZZ;
*
* set a new method MULTIplication
*
DEBMETH MULT RR;
'SI' (( 'EGA' ('TYPE' RR ) 'ENTIER ') 'OU'
( 'EGA' ('TYPE' RR ) 'FLOTTANT'));
%REA=%REA*RR; %IMA=%IMA*RR;
'SINON';
'SI' ( 'EGA' ('TYPE' RR ) 'OBJET ') ;
RE = %REA*(RR%GET_REA) -( %IMA * (RR%GET_IMA));
IM = %REA*(RR%GET_IMA) +(%IMA *(RR%GET_REA));
%REA=RE; %IMA=IM;
'SINON';
MESS ' Multiplication impossible';
ERREUR 19;
'FINSI';
'FINSI';
FINMETH;
*
* add the new method to the object COM
*
COM%METHODE MULTI MULT;
list com;
COM%MULTI 3.5;
list com;
aa = OBJET complex;
aa%set_ima 2;
aa%set_rea 2;
com%multi aa;
list com;
yy = com%GET_REA; xx = COM%GET_IMA;
* aa va heriter de la methode MULTI via
* l'heritage entre objet
aa%HERITE COM;
list aa;
'SI' (( ABS( YY + 7.00)) > 1.e-5); ERREUR 5;FINSI;
'SI' (( ABS( XX - 42.0)) > 1.e-5) ; erreur 5; finsi;
FIN;
© Cast3M 2003 - All rights reserved.
Disclaimer