Le fichier source est ${UPS_HOME}/upssdk/demo/${UPS_LANGUAGE}/cloner.upl.
upscmp Source=cloner.upl
cloner
upssng Source=cloner.upl
Source Composant "Exemple d'emploi du clonage" Version 4.0.0;
Enumere
/*****/
Couleur Dans (Bleu="bleu", Blanc="blanc", Rouge="rouge");
Type Personne1 Defaut
/*******************/
Nom : Caractere;
Prenom : Caractere;
Pointure : Entier;
Taille : Reel;
Yeux : Couleur;
Constructeur();
Fin Type
Type Personne2 Defaut
/*******************/
Nom : Caractere;
Prenom : Caractere;
Pointure : Entier;
Taille : Reel;
Yeux : Couleur;
Constructeur();
Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul,
Profondeur : ProfondeurClonage=ClonageObjetSeul) Retourner Nul Ou Objet;
Fin Type
Variable
A1 : Nul Ou Binaire;
A2 : Nul Ou Binaire;
B1 : Nul Ou Caractere;
B2 : Nul Ou Caractere;
C1 : Nul Ou Date;
C2 : Nul Ou Date;
D1 : Nul Ou Entier;
D2 : Nul Ou Entier;
E1 : Nul Ou Couleur;
E2 : Nul Ou Couleur;
F1 : Nul Ou Exception;
F2 : Nul Ou Exception;
G1 : Nul Ou Fichier;
G2 : Nul Ou Fichier;
H1 : Nul Ou Module;
H2 : Nul Ou Module;
J1 : Nul Ou Reel;
J2 : Nul Ou Reel;
K1 : Nul Ou ListeDe Nul Ou Personne1;
K2 : Nul Ou ListeDe Nul Ou Personne1;
L1 : Nul Ou ReferenceDe Nul Ou Personne1;
L2 : Nul Ou ReferenceDe Nul Ou Personne1;
M1 : Tableau[2] De Nul Ou Personne2;
M2 : Tableau[2] De Nul Ou Personne2;
N1 : Nul Ou Procedure();
N2 : Nul Ou Procedure();
O1 : Nul Ou Entrepot;
O2 : Nul Ou Entrepot;
P1 : Nul Ou ArbreBinaireDe Nul Ou Personne2;
P2 : Nul Ou ArbreBinaireDe Nul Ou Personne2;
X1 : Nul Ou Personne1;
X2 : Nul Ou Personne1;
X3 : Nul Ou Personne1;
Y1 : Nul Ou Personne2;
Y2 : Nul Ou Personne2;
Y3 : Nul Ou Personne2;
I : Entier;
Procedure Bonjour()
/*****************/
Debut
Ecran.Ecrire("bonjour");
Fin Procedure
Fonction Personne2.Cloner(EntrepotCible : Nul Ou Entrepot=Nul,
Profondeur : ProfondeurClonage=ClonageObjetSeul) Retourner Nul Ou Personne2
/************************************************************************/
Variable
/******/
R : Nul Ou Personne2;
Debut
R=Personne2();
Selon Profondeur Faire
Cas Pour ClonageObjetSeul Faire
R.Nom=Nom;
R.Prenom=Prenom;
R.Taille=Taille;
R.Pointure=Pointure;
R.Yeux=Yeux;
Fin Cas
Cas Pour ClonageObjetsDirects Faire
R.Nom=Nom.Cloner(EntrepotCible);
R.Prenom=Prenom.Cloner(EntrepotCible);
R.Taille=Taille;
R.Pointure=Pointure;
R.Yeux=Yeux;
Fin Cas
Cas Pour ClonageRecursif Faire
R.Nom=Nom.Cloner(EntrepotCible,ClonageRecursif);
R.Prenom=Prenom.Cloner(EntrepotCible,ClonageRecursif);
R.Taille=Taille;
R.Pointure=Pointure;
R.Yeux=Yeux;
Fin Cas
Fin Selon
Retourner R;
Fin Fonction
Fonction F(Per1 : Nul Ou Personne2, Per2 : Nul Ou Personne2)
Retourner ComparaisonObjet
/*************************************************************************************/
Debut
Si Per1==Nul Ou Per2==Nul Alors
Retourner ComparaisonNul;
Fin Si
Si Per1.Nom<Per2.Nom Alors
Retourner ComparaisonAvant;
Fin Si
Si Per1.Nom>Per2.Nom Alors
Retourner ComparaisonApres;
Fin Si
Retourner ComparaisonEgal;
Fin Fonction
Principal
/*******/
Debut
X1=Personne1();
X1.Nom="nom1";
X1.Prenom="prenom1";
X1.Pointure=1;
X1.Taille=10.1;
X1.Yeux=Rouge;
X2=Personne1();
X2.Nom="nom2";
X2.Prenom="prenom2";
X2.Pointure=2;
X2.Taille=20.2;
X2.Yeux=Rouge;
Y1=Personne2();
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y1.Pointure=1;
Y1.Taille=10.1;
Y1.Yeux=Rouge;
Y2=Personne2();
Y2.Nom="nom2";
Y2.Prenom="prenom2";
Y2.Pointure=2;
Y2.Taille=20.2;
Y2.Yeux=Rouge;
A1=Binaire("coucou");
A2=A1.Cloner();
A1=Nul;
Ecran.Ecrire(Caractere(A1));
Ecran.Ecrire(Caractere(A2));
B1="coucou";
B2=B1.Cloner();
B1=Nul;
Ecran.Ecrire(B1);
Ecran.Ecrire(B2);
C1=Date("16-5-1968 22:45:58");
C2=C1.Cloner();
C1=Nul;
Ecran.Ecrire(Caractere(C1, "%jj-%mm-%A %HH:%Mi:%S"));
Ecran.Ecrire(Caractere(C2, "%jj-%mm-%A %HH:%Mi:%S"));
D1=32;
D2=D1.Cloner();
D1=Nul;
Ecran.Ecrire(D1);
Ecran.Ecrire(D2);
E1=Bleu;
E2=E1.Cloner();
E1=Nul;
Ecran.Ecrire(Couleur(E1));
Ecran.Ecrire(Couleur(E2));
F1=DivisionParZero;
F2=F1.Cloner();
F1=Nul;
Ecran.Ecrire(F2.NomException);
G1=Fichier("coucou.txt", EcritureTexte);
G2=G1.Cloner();
G1=Nul;
Ecran.Ecrire(G2.NomFlux);
H1=Global;
H2=H1.Cloner();
H1=Nul;
Ecran.Ecrire(H2.NomModule);
J1=32.64;
J2=J1.Cloner();
J1=Nul;
Ecran.Ecrire(J1);
Ecran.Ecrire(J2);
N1=Bonjour;
N2=N1.Cloner();
N1=Nul;
N2();
O1=EntrepotSysteme;
O2=O1.Cloner();
O1=Nul;
Ecran.Ecrire(O2.NomEntrepot);
Ecran.Ecrire("\n");
Ecran.Ecrire("Clonage type");
X3=X1.Cloner();
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
Ecran.Ecrire(X3.Nom+" "+X3.Prenom);
X1.Nom="nom1";
X1.Prenom="prenom1";
X3=X1.Cloner(Nul, ClonageObjetsDirects);
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
Ecran.Ecrire(X3.Nom+" "+X3.Prenom);
X1.Nom="nom1";
X1.Prenom="prenom1";
X3=X1.Cloner(Nul, ClonageRecursif);
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
Ecran.Ecrire(X3.Nom+" "+X3.Prenom);
X1.Nom="nom1";
X1.Prenom=prenom1";
Y3=Y1.Cloner();
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Ecran.Ecrire(Y3.Nom+" "+Y3.Prenom);
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y3=Y1.Cloner(Nul, ClonageObjetsDirects);
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Ecran.Ecrire(Y3.Nom+" "+Y3.Prenom);
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y3=Y1.Cloner(Nul, ClonageRecursif);
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Ecran.Ecrire(Y3.Nom+" "+Y3.Prenom);
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Ecran.Ecrire("\n");
Ecran.Ecrire("Clonage liste");
K1=ListeDe(X1);
K1+=X2;
K2=K1.Cloner();
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
X2.Nom="NOM2";
X2.Prenom="PRENOM2";
Pour X3=K2.ParcoursAuDebut() JusquA K2.DernierElement() Faire
Ecran.Ecrire(X3.Nom+" "+X3.Prenom);
Fin Pour
X1.Nom="nom1";
X1.Prenom="prenom1";
X2.Nom="nom2";
X2.Prenom="prenom2";
K2=K1.Cloner(Nul, ClonageObjetsDirects);
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
X2.Nom="NOM2";
X2.Prenom="PRENOM2";
Pour X3=K2.ParcoursAuDebut() JusquA K2.DernierElement() Faire
Ecran.Ecrire(X3.Nom+" "+X3.Prenom);
Fin Pour
X1.Nom="nom1";
X1.Prenom="prenom1";
X2.Nom="nom2";
X2.Prenom="prenom2";
K2=K1.Cloner(Nul, ClonageRecursif);
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
X2.Nom="NOM2";
X2.Prenom="PRENOM2";
Pour X3=K2.ParcoursAuDebut() JusquA K2.DernierElement() Faire
Ecran.Ecrire(X3.Nom+" "+X3.Prenom);
Fin Pour
X1.Nom="nom1";
X1.Prenom="prenom1";
X2.Nom="nom2";
X2.Prenom="prenom2";
Ecran.Ecrire("\n");
Ecran.Ecrire("Clonage reference");
L1=ReferenceDe(X1);
L2=L1.Cloner();
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
X2.Nom="NOM2";
X2.Prenom="PRENOM2";
Ecran.Ecrire(L2.Valeur.Nom+" "+L2.Valeur.Prenom);
X1.Nom="nom1";
X1.Prenom="prenom1";
X2.Nom="nom2";
X2.Prenom="prenom2";
L2=L1.Cloner(Nul, ClonageObjetsDirects);
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
X2.Nom="NOM2";
X2.Prenom="PRENOM2";
Ecran.Ecrire(L2.Valeur.Nom+" "+L2.Valeur.Prenom);
X1.Nom="nom1";
X1.Prenom="prenom1";
X2.Nom="nom2";
X2.Prenom="prenom2";
L2=L1.Cloner(Nul, ClonageRecursif);
X1.Nom="NOM1";
X1.Prenom="PRENOM1";
X2.Nom="NOM2";
X2.Prenom="PRENOM2";
Ecran.Ecrire(L2.Valeur.Nom+" "+L2.Valeur.Prenom);
X1.Nom="nom1";
X1.Prenom="prenom1";
X2.Nom="nom2";
X2.Prenom="prenom2";
Ecran.Ecrire("\n");
Ecran.Ecrire("Clonage tableau");
M1[0]=Y1;
M1[1]=Y2;
M2=M1.Cloner();
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Y2.Nom="NOM2";
Y2.Prenom="PRENOM2";
Pour I=0 JusquA 1 Faire
Ecran.Ecrire(M2[I].Nom+" "+M2[I].Prenom);
Fin Pour
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y2.Nom="nom2";
Y2.Prenom="prenom2";
M2=M1.Cloner(Nul, ClonageObjetsDirects);
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Y2.Nom="NOM2";
Y2.Prenom="PRENOM2";
Pour I=0 JusquA 1 Faire
Ecran.Ecrire(M2[I].Nom+" "+M2[I].Prenom);
Fin Pour
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y2.Nom="nom2";
Y2.Prenom="prenom2";
M2=M1.Cloner(Nul, ClonageRecursif);
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Y2.Nom="NOM2";
Y2.Prenom="PRENOM2";
Pour I=0 JusquA 1 Faire
Ecran.Ecrire(M2[I].Nom+" "+M2[I].Prenom);
Fin Pour
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y2.Nom="nom2";
Y2.Prenom="prenom2";
Ecran.Ecrire("\n");
Ecran.Ecrire("Clonage arbre");
P1=ArbreBinaireDe(F, Faux);
P1+=Y1;
P1+=Y2;
P2=P1.Cloner();
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Y2.Nom="NOM2";
Y2.Prenom="PRENOM2";
Pour Y3=P2.ParcoursAuDebut() JusquA P2.DernierElement() Faire
Ecran.Ecrire(Y3.Nom+" "+Y3.Prenom);
Fin Pour
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y2.Nom="nom2";
Y2.Prenom="prenom2";
P2=P1.Cloner(Nul, ClonageObjetsDirects);
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Y2.Nom="NOM2";
Y2.Prenom="PRENOM2";
Pour Y3=P2.ParcoursAuDebut() JusquA P2.DernierElement() Faire
Ecran.Ecrire(Y3.Nom+" "+Y3.Prenom);
Fin Pour
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y2.Nom="nom2";
Y2.Prenom="prenom2";
P2=P1.Cloner(Nul, ClonageRecursif);
Y1.Nom="NOM1";
Y1.Prenom="PRENOM1";
Y2.Nom="NOM2";
Y2.Prenom="PRENOM2";
Pour Y3=P2.ParcoursAuDebut() JusquA P2.DernierElement() Faire
Ecran.Ecrire(Y3.Nom+" "+Y3.Prenom);
Fin Pour
Y1.Nom="nom1";
Y1.Prenom="prenom1";
Y2.Nom="nom2";
Y2.Prenom="prenom2";
Ecran.Ecrire("\n");
Fin Principal