Oracle: OO.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
(Classes prédéfinies – API Java)
C.
Les bases de données et l’objet
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Sous-programmes Concepts généraux Passage de paramètres Fonctions
L’utilisation des bases de données
Principes de la technologie orientée objets
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Algorithmique et Programmation
Chap 4 Les bases de données et le modèle relationnel
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Gestion des erreurs Packages ©Alain Villeneuve, 1999
Langage Oriente Objet Cours 2.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Les transactions.
Procédures Stockées Schedule: Timing Topic 60 minutes Lecture
Bases de données orientées objets SGBD relationnels-objets
Bases de données orientées objets Illustration sur ORACLE
Travaux Pratiques Représentation des connaissances
8 Copyright © Oracle Corporation, Tous droits réservés. Manipuler des objets de grande taille.
Packages et Types De la Spécification Formelle A l'implémentation Ada.
La notion de type revisitée en POO
Le Langage de BLOC PL/SQL
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
JavaScript.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Créer des packages.
Surveiller et résoudre le conflit de verrouillage
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Réaliser par: Sadok Amel Cheboui hassiba
(Procedural Language / Structured Query Language)
Ait Ahmed Madjid Cohen Lior Jaballah Seddik Leborgne Fabien
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Plan du cours - Bases de données objet : objectifs, principe, mise en oeuvre sous Oracle - Aspect système des bases de données : fichiers, index et hachage.
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
6 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux packages.
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Sélection de colonnes (la projection)
1 Copyright © Oracle Corporation, Tous droits réservés. Présentation des sous-programmes PL/SQL.
Cours LCS N°4 Présenté par Mr: LALLALI
 Formulaires HTML : traiter les entrées utilisateur
SQL : Langage de Manipulation des données
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Introduction  Langage propre à Oracle basé sur ADA  Offre une extension procédurale à SQL  PL/SQL permet d’utiliser un sous-ensemble du langage SQL.
Révision du langage PL/SQL
Héritage Conception par Objet et programmation Java
Création et Gestion de Tables
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Bases de Données Avancées - TP2: SQL
Procédures Stockées Fonctions Paquetages
Les bases de données Séance 8 Jointures.
Le langage SQL.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Cours n°2 Implémentation et exploitation
Introduction au langage PL/SQL
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

Oracle: OO

La programmation OO avec Oracle Dans PL/SQL la programmation orientée-objet est basée sur des types objets (object types). Ces types objets fournissent 1) des modèles abstraits pour des objets du monde réel 2) l'encapsulation ("boîte noire"). Pour utiliser un type objet dans un programme, il suffit de connaître ce qu'il fait et non comment il le fait.

Le Type Objet Un type objet est un type de données composé défini par l'utilisateur, qui encapsule une structure de données ainsi que les fonctions et procédures nécessaires à la manipulation des données. Les variables qui forment la structure de données sont appelées des attributs et les fonctions/procédures qui caractérisent le comportement du type objet sont les méthodes. Un objet a donc des attributs et un comportement.

L'encapsulation des données Les attributs et les méthodes sont encapsulées dans un type objet. La structure de données formée par les attributs est publique. Toutefois, une programmation "stricte" ne devrait pas directement manipuler les attributs mais appeler les méthodes proposées. Oracle prévoit la possibilité de définir une structure de données dite privée, dont les attributs sont accessibles uniquement via les méthodes.

L'instance Lorsque qu'une structure de données est remplie avec des valeurs, une instance est crée. Autant d'instances désirées peuvent être crées, souvent appelées objets.

La structure d'un type-objet Un type-objet est formé de 2 parties: 1) une spécification L'interface déclarant la structure de données (l'ensemble des attributs) ainsi que les opérations (méthodes) associées à la manipulation de ces données. 2) un corps (body) Il définit complètement les méthodes, et ainsi implémente la spécification. Spécification Déclaration des attributs Spécification des méthodes Corps Corps des méthodes Interface publique Implémentation privée

Remarques La notion d'encapsulation est déjà très forte dans PL/SQL grâce au paradigme du package. Le paradigme du package permet de protéger les spécifications des procédures. En effet, le corps d’une procédure peut être modifié tout en conservant son en-tête, ainsi le programmeur n’a nul besoin de se préoccuper de mettre à jour ses anciens programmes. On perçoit une analogie très forte entre le type objet et le package, non seulement au niveau conceptuel mais également au niveau de la structure.

La spécification d'un type objet Dans la spécification d'un type objet, tous les attributs doivent être déclarés AVANT les méthodes Si la spécification d'un type objet déclare uniquement des attributs, le corps du type objet est inutile. Il n'est pas possible de déclarer des attributs dans le corps d'un type objet. Dans la spécification d'un type objet, il est possible de déclarer des attributs et des méthodes, mais impossible de déclarer des constantes, exceptions, curseurs ou types. Il est nécessaire de déclarer au moins un attribut (max 1'000) dans un type objet; les méthodes sont optionnelles.

Les attributs Un attribut est déclaré avec un nom (unique dans le type objet) et un type de données. Tous les types de données Oracle sont possibles à l'exception de: LONG, LONG RAW, NCHAR, NCLOB, NVARCHAR2, MLSLABEL, ROWID, BINARY_INTEGER, BOOLEAN, PLS_INTEGER, RECORD, REF CURSOR, %TYPE, %ROWTYPE, et les types définis à l'intérieur d'un package PL/SQL. Un attribut ne peut pas être initialisé (pas de clause DEFAULT). La contrainte NOT NULL ne peut pas être imposée. La structure de données peut devenir très complexe. Par exemple, le type de données d'un attribut peut être un autre type objet (appelé "nested object type").

Les méthodes Une méthodes est un sous-programme déclaré dans la spécification d'un type objet par le mot-clé MEMBER. La méthode ne peut pas avoir le même nom que le type objet ni qu'aucun des attributs. Une méthode se réfère aux attributs ou à d'autres méthodes du type objet sans préfixe.

Le paramètre SELF Toute méthode d'un type objet accepte une instance de ce type comme premier paramètre (SELF). Ce paramètre peut être implicitement ou explicitement déclaré. Lorsque SELF n'est pas explicitement déclaré, son mode par défaut est IN pour une fonction IN OUT pour une procédure. Dans le corps d'une méthode, SELF se réfère à l'objet appelant la méthode. Le préfixe SELF n'est pas obligatoire lors de l'utilisation d'un attribut par une méthode.

La méthode CONSTRUCTOR Chaque objet est pourvu d'une méthode de construction appelée CONSTRUCTOR, définie par le système avec le même nom que le type objet. Une méthode de construction est une fonction utilisée pour initialiser et retourner une instance de ce type objet. Le type des paramètres ainsi que leur ordre sont identiques à ceux des attributs du type objet.

La définition d'un type objet CREATE [OR REPLACE] TYPE type_name AS OBJECT ( att_name datatype [, att_name datatype] … [ MEMBER {procedure_spec | function_spec} [, MEMBER {procedure_spec | function_spec}] ] … ); [CREATE [OR REPLACE] TYPE BODY type_name AS MEMBER {procedure_spec | function_spec}; [, MEMBER {procedure_spec | function_spec}; ] … END ; ]

Exemple CREATE TYPE Nbre_rationnel AS OBJECT ( Numerateur INTEGER, Denominateur INTEGER, MEMBER FUNCTION plus (x Nbre_rationnel) RETURN Nbre_rationnel, MEMBER FUNCTION moins (x Nbre_rationnel) RETURN Nbre_rationnel, MEMBER FUNCTION fois (x Nbre_rationnel) RETURN Nbre_rationnel ); CREATE TYPE BODY Nbre_rationnel AS MEMBER FUNCTION plus (x Nbre_rationnel) RETURN Nbre_rationnel IS r Nbre_rationnel; BEGIN -- retourne la somme de SELF et x -- appel du CONSTRUCTOR r:= Nbre_rationnel (numerateur * x.denominateur + x.numerateur * denominateur, denominateur * x. denominateur ); RETURN r; END plus; … END; Dans le cas où une colonne est omise, la valeur NULL est automatiquement insérée sauf si une valeur par défaut est spécifiée. La clause

Les objets Une fois un type objet défini et inséré au schéma, il peut être utilisé pour déclarer des objets dans n'importe quel bloc PL/SQL, sous-programme, ou package.

La déclaration d'un objet Les types objets peuvent être utilisés partout où un type prédéclaré tel que CHAR ou NUMBER le serait. Exemple: DECLARE r Nbre_rationnel; BEGIN -- appel de la méthode CONSTRUCTOR r:= Nbre_rationnel (6,7); DBMS_OUTPUT.PUT_LINE (r.numerateur); …

Initialisation d'un objet Tant qu'un objet n'a pas encore été initialisé par l'appel du CONSTRUCTOR de son type objet, l'objet est atomiquement nul. Un objet nul n'est jamais égal à un autre objet. Le fait de comparer un objet NULL avec n'importe quel autre objet donne toujours la valeur NULL.

L'accès aux attributs L'accès à un attribut peut se faire simplement par référence à son nom. Pour accéder ou modifier la valeur d'un attribut, la notion pointée est utilisée. Exemple: r.denominateur r.numerateur Les noms des attributs peuvent être enchaînés, ce qui permet d'accéder aux attributs d'un "nested object type".

Le partage d'objets Le partage d'objets a deux avantages: 1) les données ne sont pas répliquées inutilement 2) lorsqu'un objet partagé est modifié, ce changement est effectué une seule fois et n'importe quel référant a accès aux nouvelles valeurs. Le mot-clé REF sert à déclarer les références. Il contient un pointeur sur un objet. Exemple: CREATE TYPE T_Ligne AS OBJECT ( Quantite NUMBER, Montant NUMBER(10,2), ProduitCommande REF T_Produit, MEMBER PROCEDURE CalculMontant );

La manipulation des objets Les types objets peuvent être utilisés dans les instructions SQL CREATE TABLE pour spécifier le type de données d'une colonne. Dès qu'une table est crée, les instructions SQL sont utilisées pour insérer un objet, sélectionner des attributs ou des méthodes et mettre à jour son état. Exemple: CREATE TABLE Nombre (nr Nbre_rationnel,…) -- insère 3/7 INSERT INTO Nombre (nr) VALUES (Nbre_rationnel (3,7)) -- retourne 3 SELECT n.nr.numerateur INTO Mon_nombre FROM Nombre n WHERE … -- modifie le numérateur à 10 et le dénominateur à 7 (3/7 +1= 10/7) UPDATE Nombre n SET n.rn=n.rn.plus(Nbre_rationnel(1,1)) WHERE ... Remarque: Un alias est nécessaire lorsqu'un attribut ou une méthode est référencé.

La table objet Une table stockant des objets de type objet sont appelées des tables objets. Chaque colonne dans un enregistrement correspont à un attribut du type objet. Exemple: CREATE TABLE Nombre OF Nbre_rationnel; Remarque: Chaque enregistrement dans une table objet a un OID (object identifier), qui identifie uniquement l'objet stocké dans une enregistrement et sert comme référence à l'objet.

L'accès aux objets référencés La navigation à travers à un objet référencé dans une instruction procédurale PL/SQL n'est pas possible. Il est impératif de passer par l'opérateur DEREF dans une instruction SQL. (DEREF-"déréférence": lorsqu'un pointeur est "déréférencé", la valeur de l'objet pointé est retourné) L'opérateur DEREF prend comme paramètre une référence à un objet, puis retourne la valeur de l'objet.

Exemple Considérons le type objet suivant: CREATE TYPE T_Commande AS OBJECT ( DateCommande DATE, Rabais NUMBER, MontantTotal NUMBER(10,2), Emetteur REF T_Client, Lignes T_lignes, MEMBER FUNCTION Destinataire (SELF IN T_Commande) RETURN T_Client, MEMBER FUNCTION Destination (SELF IN T_Commande) RETURN T_Adresse ); La requête suivante "déréférence" la référence à un objet de type T_Client UnClient T_CLient; BEGIN SELECT DEREF(Emetteur) INTO UnClient FROM Dual; Remarque: La référence est sélectionnée depuis une table "bidon" dual. Il n'est pas nécessaire de spécifier la table objet ni le critère de recherche étant donné que chaque objet stocké dans une table objet a un identifiant unique et immuable.