Programation objet?

Répondre
agilis
le 27/02/2005 à 12:13
agilis
Bonjour à tous!

J'aimerais savoir à quoi sert la programmation objet (acvec des classes? c'est bien ca?). C'est plus facile d'utiliser simplement des fonctions non? Je ne comprend pas bien l'utilité des classes par rapport à une liste de fonctions. Si quelqu'un pourrait m'expliquer ou me donner un article qui explique, ca m'intéresserait!

Merci d'avance smiley

a+
Merci à tous!! agilis...
agilis
le 27/02/2005 à 14:29
agilis
Merci beaucoup!
J'avais déjà lu l'autre sur la programmation objet mais je n'avais pas vu celui-là smiley . J'ai déjà mieux compris mais c pas encore ca... smiley
Merci à tous!! agilis...
keitarosan
le 27/02/2005 à 18:27
keitarosan
la programmation objet est pour le confort et la maintenance ^^

il faut juste apprendre a penser objet, et ca c'est un peu plus difficile a s'y mettre.
Mais une fois que c'est fait, quel bonheur...
on se retrouve avec des pages qui contienne que peut de php, le tout etant traiter par les classes et donc les objets...

pour faire un exemple simple:

<?php

$calcul = new Calcul();

$calcul->Initiliser(20); //20
$calcul->Ajouter(20); //40
$calcul->Diviser(8); //5
$calcul->Multiplier(20); //100
$calcul->Resultat(); //affiche le résulat.

?>


//affichage
Le résultat des caculs est de 100.


Tu vois que l'utilisation est relativement simple, claire, propre.
tu n'a pas besoin de recuperer les valeur entre deux pour les remetre en parametre, comme tu devrait le faire avec des fonctions.

Et si demain tu veux rajouter une methode de calcul, c'est super simple. :)

Et le mieux pour s'y retrouver, c'est de faire un fichier par classe.
comme ca, tu es sur de t'y retrouver. En general, un nom comme class_calcul.php, calcul.class.php, etc... est compréhensible, car il porte le meme nom de que ton objet.

Tu peux aussi faire des couches d'abstration, c'est a dire obliger tes fichiers a passer par une classe pour faire certaine chose. Un exemple flagrant se situe sur les classes d'abstraction sql.

tu obliger tous tes fichiers a passer par une telle classe pour effectuer tes requetes.
Quel interet ?

Toutes tes requetes fonctionneront pareillent, seront simplifier, et tu peux y integrer des choses comme la protection, la gestions des erreurs sql, etc...

-------------------------------
couche 1: tes fichiers
(traitement des données...)
-------------------------------
| ^
| |
V |
-------------------------------
couche 2: ta class sql
(protection,gestion erreur,
mise en forme des résultat...)
-------------------------------
| ^
| |
V |
----------------------------
couche 3: la base de donnée
(renvois les données vers
php...)
----------------------------


si tu connais un peu mysql:

<?php
//declaration de l'objet
//la classe gere la connexion, le choix de la base, via un fichier de configuration, ou directement en interne
$mysql = new Mysql();

//la requete:
$query = "SELECT nom FROM pays WHERE continent = 'europe'";

//execution de la requete et recupération des resultat:
$result = $mysql->ExecuteQuery($query);

//on test si la requete est bien passée...
if ($result == FALSE)
{
//traitement de l'erreur...
echo ("une erreur est survenue:");
echo ("Code erreur: ".$mysql->GetErrorMsg()."");
echo ("Message:".$mysql->GetErrorMsg()."");
}
else
{
//affichage des résultat...
foreach($result as $line)
{
echo ("Pays :".$line["nom"]."");
}
}
?>

Pays: France
Pays: Allemagne
Pays: Espagne
...


Voila, c'est un cas super simple.
C'est une classe que j'utilise tout le temps maintenant. Elle s'occupe de la connection a la base de données, et tout ca.

Maintenant, tu veux rajouter une methode.
C'est tout simple, ca se fait tout seul, et tu peux réutiliser les variables internes.
Ainsi, tu ne passe plus beaucoup de parametres, ton code devient clair, et n'importe qui peut utiliser tes classes, en commencant par toi meme, sans savoir comment ca marche :)

Si c'est dans ta classe, tu peut réutiliser les variables interne qui sont encore en memoire.

Bon, c'etait peut etre un peu compliqué cet exemple, mais c'est pour te montrer que ca peut etre assez puissant ^^

Et pour finir, un petit avantage:
Toutes les methodes d'une classes sont plus ou moins lié. C'est comme si tu regroupaient des moutons avec des moutons, et de vaches avec des vaches...
tu les mets dans un fichier, et hop, tu sais que cette classe s'occupe de telle chose.
Les classes sont spécialisées pour faire un ou plusieurs boulot précis, sur un objet précis.

vala, j'espere pas avoir été trop confu.

En tout cas, ca fait quelques mois déja que je ne code plus qu'en classes, en ne fesant plus aucune fonctions, et je m'en sort bien, et c'est super réutilisable pour certaines choses :).

Pour le reste, ca implique parfois quelques petites modif, mais bon, moindres qu'avec des fonctions, crois moi ;)

KeitaroSan
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
agilis
le 27/02/2005 à 19:20
agilis
Merci beaucoup, je m'y retrouve déjà mieux... smiley Effectivement ca à l'air d'être bien. je vais commencer! Mais qu'entend tu par "penser objet" parce que là je vois pas trop??

a+

PS : Je connais effectivement un peu MySQL (les commandes de base...).
Merci à tous!! agilis...
keitarosan
le 27/02/2005 à 19:53
keitarosan
le tout n'est pas de faire une classe et d'y mettre ses fonctions...
sinon, ca ne sert pas a grand chose.

Quand je parle penser objet, c'est que les classes que tu codes doivent reprensenter un objet (virtuel).
en gros, si je dis une classe formulaire, je pense objet formulaire:
et dans ce cas, tu dois de poser les questions suivantes :

- Comment je l'appelle (Formulaire)
- Il est caractérisé par quoi ? (Variable interne, appelée membres).
- Qu'est ce qu'il doit faire. (les methodes de ta classes).

une fois que t'as répondu a ca, je pense que t'as fait une bonne moitié de ta classe ;)

Après, il ne reste plus que le codage, lol.

Je te rassure, ce n'est pas forcement toujours evident au début, mais sache que c'est en forgeant que l'on devient forgeron. Alors si tu prends l'habitude assez vite, le reste viendras tout seul avec la patience et la perseverence...

Vala vala
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
agilis
le 27/02/2005 à 21:02
agilis
Encore merci! Je vais m'y mettre alors ca à l'air vachement intéressants! Avant je comprenais pas trop l'avantage des classes mais maintenant bien!

a+
smiley
Merci à tous!! agilis...
keitarosan
le 27/02/2005 à 21:13
keitarosan
de rien

je pense que l'on peu faire plus clair que ce que j'ai dis, m'enfin si t'as compris, c'est deja une bonne chose ^^

et puis hésite pas en cas de soucis a poser tes questions ici :)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
agilis
le 27/02/2005 à 21:18
agilis
Ok, je n'hésiterai pas...
En passant, bravo pour le site, je suis tomber dessus par hasard et je le trouve vraiment très bien!!! ;) Continuez comme ca!
Merci à tous!! agilis...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours