Un petit tutorial sur l'utilisation des classes ASP. Il s'addresse au developpeur ayant quelques connaissances en ASP
Source / Exemple :
Création de classe ASP
La création de classe ASP permet de donner une orientation objet aux projets ASP. En effet, les classes ASP ressemblent beaucoup aux classes que l'on pourrait créer avec d'autre langages tels que C, Java, etc.
Une classe se décompose en Propriété, Méthodes et Evénements.
Les propriétés :
On pourrait facilement comparer les Propriétés à des variables; mais tout l'intérêt d'une classe, est de pouvoir associer un code à l'ajout d'une valeur à un Propriétés. Si cela semble un peu obscure vous comprendrez tout dans l'exemple qui suivra...
Les méthodes :
Elles sont comparables à des fonctions ou des Sub.
Les événements :
Un événements permet d'éxécuter un morceau de code à un moment donné. Hélas, dans une classe ASP, nous ne pouvons créer d'événements personnalisés, mais seulement utiliser les deux événements de base de la classe : Class_Initialize et Class_Terminate.
Ces deux événements se produisent à un moment bien déterminé :
- Class_Initialize est appelé automatiquement lorsque que vous instancié un classe ( set MonObjet = new MaClasse), cela vous permet par exemple d'initialiser des variables dans votre classe, etc.
- Class_Terminate est appelé automatiquement lorsque que vous supprimer un object ( set MonObjet = nothing), cela est très utils lorsque vous créer une connexion vers une DB avec le Class_Initialize et que vous la refermé avec Class_Terminate. Je donnerai de plus amples informations là dessus dans mon exemple.
Les avantages d'une clase :
Nous pourrions très simplement effectuer le même travail qu'une classe en utilisant simplement des fonctions ou des Subs, alors pourquoi utiliser des classes. Dans un souci de clarté, pour partager le code, pour réutiliser plusieurs fois les même fonctionnalité; je m'explique : le but est de créer un objet que le dévellopeur pourra utiliser, sans se soucier du fonctionnement de l'objet.
Public ou Private ?
Lorsque vous déclaré une variable, une fonction ou une Sub, vous pourvez les déclarer de type Private ou Public. Pour une classe, le type Private signifie que la déclaration ne sera visible qu'à l'intérieur de la classe et publique qu'elle sera visible à l'extérieur et à l'intérieur. Lorsque vous créer des fonctions ou des Sub de type Public, vous créer en fait une méthode; par contre si vous les déclarer en tant que private cela restera des fonctions ou des Subs.
Variables ou Propriétés ?
Dans une classe ASP, vous pouvez créer des variables Public ou Private, les première seront visible à l'extérieur de la classe et pourront être utilisé pour stocker une valeur mais en aucun cas ne pourrai executer un code. Vous pouvez créer trois type de Propriétés :
Property Get MaPropriete()
Lorsque l'utilisateur va demander une propriété à la classe (MaVariable = MaClasse.MaPropriete), la classe va executer une code lié à cette propriété en vu de retourner une valeur
Property Let MaPropriete()
Lorsque l'utilisateur va assigner une valeur à une propriété de la classe (MaClasse.MaPropriete = MaVariable), la classe va executer une code lié à cette propriété en vu de stocker une valeur. Par exemple : Vérifier si la chaîne est bien formée, etc.
Property Set MaPropriete()
Lorsque l'utilisateur va assigner une référence à un objet (MaClasse.MaPropriete = MaVariable), la classe va executer une code lié à cette propriété en vu de stocker cette référence.
Passons à l'exemple :
J'ai préparé une classe pour créer un <select></select> en html... Celle que j'utilise sur mon site se connecte à une base de donnée et stocke les type de langue dans un tableau. Comme j'ai une page où l'utilisateur doit entrer trois adresses différente et qu'il doit indiquer trois fois la langue utiliser pour la correspondance, la première fois que je charge la classe je stocke les valeur depuis la DB mais la fois suivante que j'utilise la classe, les valeurs sont encore stockées dans la classe d'où un gain de temps non négligeable avec beaucoup de valeurs.
<%
Class SelectLang
private iCodeLang
private sName
private sObjSelect
private sLangTab(3,2)
Public property let Name(sArgs) 'Propriété qui définit le nom du select
sName = sArgs
end property
Public property Get Name() ' Propriété pour récupérer le nom du select
name = sName
end property
Public property let CodeLang(iArgs) 'Je stocke la valeur du code de langue qui devra être sélectionné
if iCodeLang <> iArgs then
call Reset()
iCodeLang = iArgs
end if
end property
Public property get CodeLang() 'Récupère le code de langue qui sera sélectionné
CodeLang = iCodeLang
end property
Private Sub Class_Initialize
call InitVar()
call InitLangTab()
End Sub
Private Sub Class_Terminate
End Sub
private Sub GenerateSelect() 'Sub de type Private pour utilisation en interne
dim i
For i = 0 to ubound(sLangTab) -1
if sLangTab(i,0) = iCodeLang then
call AddWithVbcrlf("<OPTION SELECTED VALUE='" & sLangTab(i,0) & "'>" & sLangTab(i,1) & "</OPTION>")
else
call AddWithVbcrlf("<OPTION VALUE='" & sLangTab(i,0) & "'>" & sLangTab(i,1) & "</OPTION>")
end if
next
end Sub
private Sub AddWithVbcrlf(sArgs) ' Sub qui ajoute une option au select
sObjSelect = sObjSelect & sArgs & vbcrlf
end Sub
Public Sub WriteSelect() 'Sub pour
sHeader = "<select name='" & sName & "'>" & vbcrlf 'On créer le header du select
sFooter = "</select>" & vbcrlf 'On créer le footer du select
if trim(sObjSelect) = "" then ' Si la variable est vide c'est que soit c'est la première fois qu'on
'utilise la classe ou que l'on a changé le CodeLang
GenerateSelect
response.write sHeader & sObjSelect & sFooter
else
response.write sHeader & sObjSelect & sFooter
end if
end Sub
Public Sub Reset()
sObjSelect = ""
end Sub
Private Sub InitVar()
sObjSelect = ""
end Sub
Private Sub InitLangTab() 'Initialisation du tableau avec les valeur des langues
sLangTab(0,0) = 0
sLangTab(0,1) = "Français"
sLangTab(1,0) = 1
sLangTab(1,1) = "Allemand"
sLangTab(2,0) = 2
sLangTab(2,1) = "Anglais"
end Sub
End Class
%>
Le code qui utilise cette classe :
<%
set oSelectLang = new SelectLang 'Instantiation de l'objet
oSelectLang.name = "LangSelect" '
oSelectLang.CodeLang = 1 'On change le code langue => la classe génére le select
oSelectLang.WriteSelect
oSelectLang.CodeLang = 0 'On change le code langue => la classe génére le select
oSelectLang.WriteSelect
oSelectLang.CodeLang = 0 'Le CodeLang est le même donc la classe ne regénère pas le select
oSelectLang.WriteSelect
oSelectLang.CodeLang = 0 'Le CodeLang est le même donc la classe ne regénère pas le select
oSelectLang.WriteSelect
oSelectLang.CodeLang = 2 'On change le code langue => la classe génére le select
oSelectLang.WriteSelect
oSelectLang.CodeLang = 1 'On change le code langue => la classe génére le select
oSelectLang.WriteSelect
set oSelectLang = nothing
%>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.