03.08.2013 Views

Rapport de fin de phase I - Haute école du paysage, d'ingénierie et ...

Rapport de fin de phase I - Haute école du paysage, d'ingénierie et ...

Rapport de fin de phase I - Haute école du paysage, d'ingénierie et ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Un type dé<strong>fin</strong>i comme « FINAL » (valeur par défaut) ne pourra pas être hérité par un<br />

sous-type. Un type « NOT FINAL » peut être transformé en « FINAL » uniquement s’il n’a<br />

pas <strong>de</strong> sous-type.<br />

La notion d’abstraction ou non, sous Oracle est dé<strong>fin</strong>ie par les clauses « NOT<br />

INSTANTIABLE » ou « INSTANTIABLE » ce qui va perm<strong>et</strong>tre aux développeurs <strong>de</strong> créer<br />

<strong>de</strong>s types abstraits. Un type « NOT INSTANTIABLE » est donc une classe abstraite, son<br />

instantiation est impossible.<br />

Par défaut un type est « INSTANTIABLE ».Un type « INSTANTIABLE » peut <strong>de</strong>venir<br />

«NOT INSTANTIABLE » <strong>et</strong> vice-versa.<br />

1.19.2.7. Principe <strong>de</strong> substitution <strong>et</strong> polymorphisme<br />

Le principe <strong>de</strong> substitution affirme qu’il doit être possible <strong>de</strong> substituer n’importe quel<br />

obj<strong>et</strong> instance d’un sous-type à n’importe quel obj<strong>et</strong> instance d’un super-type sans que la<br />

sémantique <strong>du</strong> programme écrit dans les termes <strong>du</strong> super-type ne soit affectée.<br />

Ceci est applicable pour tous les containers <strong>de</strong> type Oracle obj<strong>et</strong>s (ex : une variable, un<br />

attribut table ou vue). Sans le respect <strong>de</strong> ce principe, le polymorphisme ne peut être mis<br />

en œuvre.<br />

Le polymorphisme désigne un concept <strong>de</strong> la théorie <strong>de</strong>s types (types obj<strong>et</strong>s, REF ou<br />

collection d’obj<strong>et</strong>s), selon lequel un nom d’obj<strong>et</strong> peut désigner <strong>de</strong>s instances <strong>de</strong> types<br />

différents, issues d’une même arborescence. La clause «NOT SUBSTITUTABLE AT ALL<br />

LEVELS » désactive le principe <strong>de</strong> substitution <strong>et</strong> par analogie le polymorphisme. La<br />

clause « IS OF » perm<strong>et</strong> <strong>de</strong> limiter le principe <strong>de</strong> substitution à certains types.<br />

Les obj<strong>et</strong>s qui sont abrités dans un container super-type peuvent être accédés à l’ai<strong>de</strong> <strong>de</strong><br />

la fonction « TREAT ». C<strong>et</strong>te fonction cherche à modifier le type d’une expression par un<br />

autre type, généralement par un sous-type.<br />

1.19.2.8. Héritage <strong>et</strong> métho<strong>de</strong>s<br />

Les métho<strong>de</strong>s <strong>du</strong> super-type sont héritées dans tous les sous-types, la spécialisation <strong>de</strong>s<br />

sous-types s’effectue selon les règles <strong>de</strong> la programmation obj<strong>et</strong> :<br />

Surcharge <strong>de</strong>s métho<strong>de</strong>s <strong>et</strong> ré-implémentation.<br />

Métho<strong>de</strong> à signature variable.<br />

• Métho<strong>de</strong>s abstraites<br />

La clause « NOT INSTANTIABLE » dé<strong>fin</strong>it une métho<strong>de</strong> abstraite, par défaut celle ci est<br />

« INSTANTIABLE ». L’implémentation d’une métho<strong>de</strong> « NOT INSTANTIABLE » doit<br />

s’effectuer dans un sous-type <strong>de</strong> son arborescence. Si le sous-type <strong>de</strong> 1 er niveau<br />

n’implémente pas une métho<strong>de</strong> abstraite, elle doit tout <strong>de</strong> même être déclarée comme<br />

étant « NOT INSTANTIABLE ».<br />

• Surcharge, signatures variables <strong>et</strong> comportement <strong>de</strong>s métho<strong>de</strong>s héritées<br />

Les métho<strong>de</strong>s peuvent être surchargées à l’ai<strong>de</strong> <strong>de</strong> la clause « OVERRIDING ». Le soustype<br />

hérite alors <strong>de</strong> toutes les métho<strong>de</strong>s <strong>du</strong> super-type qu’elles soient « STATIC » ou<br />

« MEMBER ». Plusieurs métho<strong>de</strong>s <strong>de</strong> même nom mais avec une signature différente<br />

peuvent être dé<strong>fin</strong>ies.<br />

Une hiérarchie <strong>de</strong> type peut surcharger plusieurs fois la même métho<strong>de</strong>. Les<br />

conséquences lors <strong>de</strong> l’exécution seront les suivantes :<br />

Le type <strong>de</strong> l’instance <strong>de</strong> l’obj<strong>et</strong> désignera la métho<strong>de</strong> à utiliser.<br />

22.06.2005 49/78

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!