[POO] Question de conception
Salut à tous,
J'essaie d'améliorer mes classes et je me pose une question sur ce que j'ai fait.
J'avais à la base une classe Image_Image me permettant de créer une image (quelle surprise :p ). Dans cette classe se trouvais également des fonctions de traitement d'image.
J'ai donc décider de sortir ces méthode de traitement de la classe de création.
Je me retrouve donc maintenant avec :
Code:
1 2 3 4 5 6 7 8
|
class Image_Image
{
protected $source //Ressource d'image
public function __construct(){
//...
}
} |
et
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class Image_Traitement
{
private $objet;
public function __construct(img){
if(!is_object($img)){
throw new Util_ExceptionHandler('Objet attendu');
}
$this->objet = $img;
}
public function niveauDeGris(){
imagefilter($this->objet->source,IMG_FILTER_GRAYSCALE);
}
} |
J'utilise donc désormais mes classes de la manière suivante
Code:
1 2 3 4 5 6 7 8 9
|
$image = new Image_Image(320,240)
// Diverse opération de création d'image
//...
$traitement = new Image_Traitement($image)
$traitement->niveauDeGris();
$image->display() |
Le problème étant que je suis obliger de passer $source de protected à public ce qui ne me convient que moyennement.
Hériter "Traitement" de "Image" peut il être la solution sachant que "Traitement" peut recevoir également des objet des classes fille de "Image" (Reflexion,Degrader...) ?
Peut être y'à il une manière plus propre de procéder ?
Est il possible de savoir à quelle classe appartient un objet ? J'aimerais filtrer les objet accepté par Traitement, histoire qu'il n'accepte pas un objet voiture par exemple.