2. RAPPEL SUR POO
Objet?
Un objet est une entité cohérente rassemblant des
données et du code travaillant sur ses données
Classe?
Une classe peut être considérée comme un moule à
partir duquel on peut créer des objets
on dit que les classes sont la méta donnée des objets
22
3. RAPPEL SUR POORAPPEL SUR POO
L’encapsulation?
la séparation nette entre la partie publique d'un objet (ou
i f ) l d l' ili d l i i éinterface) seule connue de l'utilisateur de la partie privée ou
implémentation qui doit rester masquée.
Tous les langages orientés objet n'imposent pas de
respecter le principe d'encapsulation C'est donc aurespecter le principe d encapsulation. C est donc au
programmeur de veiller personnellement au grain.
33
4. RAPPEL POO
L’héritage?
L'héritage est le second des trois principes fondamentaux
d di i é bj Il h é d d i ldu paradigme orienté objet. Il est chargé de traduire le
principe naturel de Généralisation / Spécialisation
« La classe dérivée est une version spécialisée de sa classe« La classe dérivée est une version spécialisée de sa classe
de base »
L'héritage multiple est une extension au modèle d'héritageL héritage multiple est une extension au modèle d héritage
simple où l'on autorise une classe à posséder plusieurs
classes mères afin de modéliser une généralisation multiple.g p
44
5. RAPPEL POO
Classe abstraite?
Elle ne fournit pas d'implémentation pour certaines de ces
méthodes qui sont dites méthodes abstraites.
Une classe abstraite ne peut avoir d'instance.
But des classes abstraites:
définir un cadre de travail pour les classes dérivées en proposant
un ensemble de méthodes que l'on retrouvera tout au long de
l'arborescence Ce mécanisme est fondamental po r la mise enl'arborescence. Ce mécanisme est fondamental pour la mise en
place du polymorphisme.
55
6. RAPPEL POORAPPEL POO
Interface?
Une interface est semblable à une classe sans attribut (mais
pouvant contenir des constantes) dont toutes les méthodes sont
abstraites.
une classe implémente une interface si elle propose une
i lé i h d é h d dé i i fimplémentation pour chacune des méthodes décrites en interface
les méthodes décrites dans les interfaces sont, par définition,
polymorphes puisqu'elles sont implémentées de façonpolymorphes puisqu elles sont implémentées de façon
indépendante dans chaque classe implémentant une même
interface
66
7. RAPPEL POORAPPEL POO
Agrégation?
Un type de relation entre deux classes qui traduit cette fois
l l i E é d P èdles relations « Est composé de ... » ou « Possède … » ou encore « a
… ».
L'une des caractéristiques principale de l'agrégation est saL une des caractéristiques principale de l agrégation est sa
cardinalité
77
8. RAPPEL POO
Polymorphisme?
Il permet à une méthode d'adopter plusieurs formes sur
d l diffédes classes différentes.
L h ?La surcharge?
La surcharge est un mécanisme fréquemment proposé par
l l d t i t d’ i êles langages de poo et qui permet d’associer au même nom
de méthode / fonction / procédure différentes signatures.
88
9. RAPPEL POORAPPEL POO
Constructeur?
Méthode spéciale, à mi chemin entre la méthode de classe
l é h d d'i h é d é l bjet la méthode d'instance chargée de créer un nouvel objet
en mémoire et d'initialiser son état.
99
10. RAPPEL POORAPPEL POO
Message?
Unique moyen de communication fourni par les objets.
U i i d d i h bi llUne invocation de message se traduit habituellement par
l'activation d'une méthode.
D'ailleurs dans la plupart des langages orientés objetD ailleurs, dans la plupart des langages orientés objet
modernes, il n'y a pas de distinction entre les notions de
message et de méthodeg
1010
12. ARCHITECTURE 2-TIERS
Une architecture 2-tiers est composée de deux éléments, un
client et un serveur et où le tiers (Les parties) fait référence
non pas à une entité physique mais logiquenon pas à une entité physique mais logique.
Représentation :
1212
15. ARCHITECTURE 2 -TIERS
En définitive et dans la perspective d'une architecture 2-tiers avec
n ser e r de base de données (SGBD) le schéma précédent seraun serveur de base de données (SGBD) le schéma précédent sera
plus exactement le suivant :
1515
16. AVANTAGES D'UNE ARCHITECTURE 2-TIERS
le développement d'une architecture 2-tiers peut être réalisé
rapidement toute chose étant égale par ailleurs à la
complexité du projetcomplexité du projet
La plupart des outils de développement dans l'architectureLa plupart des outils de développement dans l architecture
2-tiers sont robustes et mènent d'eux mêmes à des
techniques RAD (Rapid Application Development) quiq ( p pp p ) q
peuvent être utilisées pour s'assurer que les spécifications
des utilisateurs sont précisément et totalement prises en
compte.
1616
17. LES INCONVÉNIENTS D’UNE ARCHITECTURE 2-TIERSLES INCONVÉNIENTS D UNE ARCHITECTURE 2-TIERS
problèmes de contrôle des évolutions de versions et de redistributionproblèmes de contrôle des évolutions de versions et de redistribution
des applications
En termes de sécurité l'architecture 2-tiers peut être complexe dans laEn termes de sécurité l architecture 2-tiers peut être complexe dans la
mesure où il sera nécessaire à l'utilisateur d'avoir autant d'accès
protégé par mot de passe que d'accès serveursp g p p q
l'aspect propriétaire de l'application client. Le marché de
l'informatique se caractérise par volatilité de certaines de ses
entreprises qui n'ont pas de fait une très longue pérennité. Dans ce
contexte et ces contraintes, la question de la viabilité à long terme,
d' ppli ti li t pr priét ir t élém t i ifi tif àd'une application client propriétaire, est un élément significatif à
prendre en compte dans le choix d'une architecture 2-tiers.
1717
19. TECHNOLOGIE ADO.NET
ADO .NET est un regroupement de types (classes,
interfaces, …) dans l'espace de nom System.Data
construits par Microsoft afin de manipuler des donnéesconstruits par Microsoft afin de manipuler des données
structurées dans le .NET Framework.
ADO NET échange toutes ses informations au formatADO .NET échange toutes ses informations au format
XML
1919
20. ADO.NETADO.NET
L'entité la plus importante d’ADO .NET permettant de
gérer les données en local dans une mémoire cache
complètement déconnectée de la source de données (donccomplètement déconnectée de la source de données (donc
indépendante de cette source) est le DataSet et la
collection de classes qui lui sont liées.q
2020
22. ADO.NET: DESCRIPTION DES OBJETS
Objet Description
Connection
Ouvre une connexion vers une source de
d é é ifidonnées spécifique
Command
Exécute une commande sur une source de
donnéesdonnées
Lit un flux de données à partir d'une source de
données en mode connecté Le mode d'accès
DataReader
données en mode connecté. Le mode d accès
est en lecture seule avec un curseur en avant
seulement.
DataSet
Représente un ensemble de données en mode
déconnecté. Il peut être constitué de
DataSet
plusieurs tables ainsi que des relations et
contraintes existant entre elles.
R lit D t S t t é t l i à22
DataAdapter
Remplit un DataSet et répercute les mises à
jour dans la source de données.
22
23. RÉSUMÉRÉSUMÉ
Pour le mode connecté:
1- Connection
2-Commanded
3-Reader
Pour le mode déconnecté:
1- Connection1 Connection
2-Commande
3 Dataset3-Dataset
4-Dataadapter
2323
25. RÔLE
Un fournisseur de données .NET Framework (FDNF) est
utilisé pour la connexion à une base de données,
l'exécution de commandes et l'extraction de résultatsl exécution de commandes et l extraction de résultats
Ces résultats sont soit traités directement, soit accédés à
distance entre couchesdistance entre couches.
Les FDNF créent une couche minimale entre la source de
données et votre code afin d'augmenter les performancesg p
sans sacrifier la fonctionnalité
2525
26. LES FDNF INCLUS DANS LE .NET FRAMEWORK.
Fournisseur de données .NET
Framework
Description
Fournisseur de données .NET
Framework pour SQL Server
Fournit un accès aux données pour Microsoft
SQL Server version 7.0 ou ultérieure. Utilise
l'espace de noms System Data SqlClientl espace de noms System.Data.SqlClient.
Fournisseur de données .NET
Framework pour OLE DB
Pour les sources de données exposées à l'aide de
OLE DB Utilise l'espace de nomsFramework pour OLE DB OLE DB. Utilise l espace de noms
System.Data.OleDb.
Fournisseur de données .NET Pour les sources de données exposées à l'aide de
Framework pour ODBC
p
ODBC. Utilise l'espace de noms
System.Data.Odbc.
F i d d é NET P l d d é O l LFournisseur de données .NET
Framework pour Oracle
Pour les sources de données Oracle. Le
fournisseur de données .NET Framework pour
Oracle prend en charge le logiciel client Oracle à
26
partir de la version 8.1.7 et utilise l'espace de
noms System.Data.OracleClient.
26
27. FDFNFDFN
Pour pouvoir faire appel aux classes proposées par ADO
.Net il est nécessaire d'inclure une référence à l'espace de
noms correspondant Vous pouvez soit inclure l'espacenoms correspondant. Vous pouvez soit inclure l espace
System.Data soit inclure des classes de cet espace comme
System.Data.OleDb ou System.Data.SqlClient ; touty y q ;
dépend de la source de données utilisée.
Imports System.Data
Imports System.Data.SqlClientp y q
2727
29. LE MODE CONNECTÉLE MODE CONNECTÉ
Mode connecté :
Ce mode permet à un client de se connecter à un serveur de base de
d é l li f l i ldonnées et tant que le client ne fermera pas la connexion, le serveur
se souviendra de lui. Lorsque l'on désirera récupérer des informations
(SELECT) on les recevra au compte-gouttes c'est-à-dire une par(SELECT), on les recevra au compte gouttes, c est à dire une par
une.
2929
30. LE MODE DÉCONNECTÉLE MODE DÉCONNECTÉ
Mode déconnecté :
Le but de ce mode est de récupérer en un bloc une portion de
l b d d é fi d' ff d i l lla base de données afin d'effectuer des traitements en local
sur la machine du client. On aura donc une ouverture de
connexion à la base de données la récupération en un seulconnexion à la base de données, la récupération en un seul
bloc du résultat puis la fermeture de la connexion.
3030
32. EXERCICES
1. Ecrire une requête qui permet de sélectionner tous les
produits que la société commercialise.
Aj d d i à l B D2. Ajouter des nouveaux produits à la B.D. ;
3. Supprimer le produit n° 1
M difi l d d i ° 24. Modifier le nom du produit n° 2
3232
33. Partie II :
Intégrer les accès aux données dans
le client en mode connectéle client en mode connecté
3333
34. L’OBJET CONNECTIONL OBJET CONNECTION
La connectivité à SQLServer est assurée par l'objet
SqlConnection de l'espace de noms
System Data SqlClientSystem.Data.SqlClient.
vous devrez utiliser l'objet OleDbConnection si votrevous devrez utiliser l objet OleDbConnection si votre
fournisseur est un fournisseur OleDb
L'ouverture d'une connexion est réalisée par la méthode
Open et la fermeture par la méthode Close.Open et la fermeture par la méthode Close.
3434
35. EXEMPLE DE GESTION D'UNE CONNEXION
Imports System.data
Imp rt S t m D t SqlCli ntImports System.Data.SqlClient
Public Sub MaConnection()
Dim strCon As String = "Data Source=localhost; IntegratedDim strCon As String = Data Source=localhost; Integrated
Security=SSPI;" & "Initial Catalog=Nom_BD“
trytry
Dim oConnection As SqlConnection = New SqlConnection(strCon)
oConnection.Open()
Console.WriteLine("Etat de la connexion : " & oConnection.State)
oConnection.Close()
catch e as Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try 35End Try
End Sub
35
36. L’OBJET COMMAND
Une fois la connexion vers une base de données effectuée, vous
pouvez exécuter une requête et récupérer son résultat en utilisant
l'objet Command.
La création d'un objet Command nécessite l'instanciation d'un objet
SqlCommand. Cet objet expose différentes méthodes Execute à
ili l l é l dutiliser selon le résultat attendu :
L méth d E ec teReader p t êtr tili é p r ré pér r n jLa méthode ExecuteReader peut être utilisée pour récupérer un jeu
d'enregistrements et retourne un objet DataReader.
La méthode ExecuteScalar récupère une valeur unitaireLa méthode ExecuteScalar récupère une valeur unitaire.
La méthode ExecuteNonQuery exécute une commande ne
retournant pas de lignes. 36retournant pas de lignes. 36
37. EXEMPLE D'UTILISATION D'UN OBJET COMMAND
Public Shared Sub Main()
Di C A S i "D S l lh d S i SSP " " i i lDim strCon As String = "Data Source=localhost; Integrated Security=SSPI;" + "Initial
Catalog=Northwind"
Dim strRequete As String = "INSERT INTO Region VALUES (5,'Sud')"
Try
Dim oConnection As New SqlConnection(strCon)
Dim oCommand As New SqlCommand(strRequete, oConnection)q ( q , )
oConnection.Open()
oCommand.ExecuteNonQuery()
oConnection Close()oConnection.Close()
Catch e As Exception
Console.WriteLine(("L'erreur suivante a été rencontrée :" + e.Message))
End TryEnd Try
End Sub 'Main
End Class 'CommandeSQL
3737
38. L'OBJET DATAREADERL OBJET DATAREADER
L'objet DataReader permet de récupérer d'une source de
données un flux en lecture seule en avant seulement (read
only forward only) Il résulte de l'exécution de la méthodeonly, forward only). Il résulte de l exécution de la méthode
ExecuteReader sur un objet Command.
L'objet DataReader ne stocke en mémoire qu'une seuleL objet DataReader ne stocke en mémoire qu une seule
ligne à la fois, permettant ainsi d'augmenter les
performances d'une application et d'en réduire la charge.
3838
39. L’OBJET DATAREADER
Il dé d' ili bj iIl est recommandé d'utiliser cet objet si :
V ' p b i d é li h d d éVous n'avez pas besoin de réaliser un cache des données
Vous traitez un jeu d'enregistrements trop important pour
être stocké en mémoireêtre stocké en mémoire
Vous souhaitez accéder à des données rapidement en
lecture seule en avant seulement
Comme l'objet DataReader a été conçu pour accéder aux
d é l d é il ê idonnées selon un mode connecté, il ne peut être transmis
entre différents tiers applicatifs ce que réalisait un
Recordset déconnecté. 3939
40. L’OBJET DATAREADERL OBJET DATAREADER
Par défaut, un DataReader charge une ligne entière en mémoire à
h q e ppel de l méthode Readchaque appel de la méthode Read.
Il est possible d'accéder aux valeurs de colonnes soit par leurs nomsIl est possible d accéder aux valeurs de colonnes soit par leurs noms
soit par leurs références ordinales.
Une solution plus performante est proposée permettant d'accéder
aux valeurs dans leurs types de données natifs (GetInt32, GetDouble,
G S i )GetString .)
Par exemple si la première colonne de la ligne indicée par 0 est dePar exemple si la première colonne de la ligne indicée par 0 est de
type int, alors il est possible de la récupérer à l'aide de la méthode
GetInt32 de l'objet DataReader. 4040
41. L’OBJET DATAREADER
Exemple:
Dim iColonne As IntegerDim iColonne As Integer
iColonne = oDataReader.GetInt32(0)
La méthode Close ferme un objet DataReader.
si l'objet Command utilisé contient des paramètres en sortie ou desj p
valeurs de retours, ils ne pourront être récupérés qu'a l'issue de la
fermeture du DataReader.
Pour augmenter les performances, il est parfois nécessaire de
soumettre plusieurs requêtes à la fois L'objet DataReader répond à cesoumettre plusieurs requêtes à la fois. L objet DataReader répond à ce
besoin avec la méthode NextResult permettant de passer d'un jeu
d'enregistrement à un autre.
4141
42. EXEMPLE D'EXTRACTION DE DONNÉES AVEC L'OBJET
D RDATAREADER
Dim strCon As String = "Data Source=localhost; Integrated Security=SSPI;" + "Initial
Catalog=North"
Dim strRequete As String = "SELECT CategoryID, CategoryName FROM Categories;« "
Try
Dim oConnection As New SqlConnection(strCon)Dim oConnection As New SqlConnection(strCon)
Dim oCommand As New SqlCommand(strRequete, oConnection)
oConnection.Open()
Dim oReader As SqlDataReader = oCommand.ExecuteReader()
Do
Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}", oReader.GetName(0),
oReader.GetName(1))
While oReader Read()While oReader.Read()
Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}",
oReader.GetInt32(0), oReader.GetString(1))
End While
Loop While oReader.NextResult()
oReader.Close()
oConnection.Close()
Catch e As Exception 42Catch e As Exception
Console.WriteLine(("L'erreur suivante a été rencontrée :" + e.Message))
End Try
42