HOWTO Les aides de vue personnalisée
Une aide de vue, c'est un moyen de rajouter un plugin dans vos vues (soit partout, soit dans une vue particulière) : un encart, un sous-menu, une liste des derniers commentaires etc...
Une aide de vue, c'est un moyen de rajouter un plugin dans vos vues (soit partout, soit dans une vue particulière) : un encart, un sous-menu, une liste des derniers commentaires etc...
En architecture trois tiers, le troisième tiers est la couche d'accès aux données. Afin d'accéder à votre couche d'accès aux données, Zend Framework a créé la classe TableGateway (et consoeurs).
Notre solveur peut maintenant résoudre des grilles de niveau facile et des grilles de niveau moyen. Notre algorithme écarte des chiffres possibles et déduit des chiffres dans deux cas : soit tous les numéros possibles ont été éliminés et le dernier numéro possible est alors validé dans la case, soit un numéro n'est possible que dans une seule case d'un groupe de cases (ligne, colonne ou région). Toutefois, ces deux méthodes ne suffisent pas toujours pour résoudre une grille de sudoku. Nous allons mettre en place un mécanisme pour émettre des hypothèses dans notre solveur.
Notre solveur de sudoku sait maintenant résoudre des grilles de sudoku très simples. Il sait placer des chiffres dans les cases en éliminant les chiffres possibles dans chacune des cases jusqu'au dernier chiffre possible. C'est le résultat du premier niveau de déduction. Voyons maintenant le second niveau.
J'ai songé un moment mettre les méthodes du solveur dans mon objet grille (après tout, la résolution se fait à partir des éléments de la grille), mais finalement, je vais distinguer un objet Grille et un objet Solveur. L'objet Grille aurait pour responsabilité d'afficher et de manipuler la grille, et l'objet Solveur aurait pour responsabilité de gérer la résolution de la grille. Voyons donc cet objet Solveur.
Notre solveur avance petit à petit. Nous avons déjà mis en place nos objets principaux : les chiffres, la grille et la case. Chacun sait - jusqu'à nouvel ordre - ce qu'il a à faire. Avant de nous attaquer véritablement au moteur de résolution, occupons nous de la paire contrôleur / vue pour nous amuser un peu avec le "rendu".
Terminons le développement de l'objet Grille. Rappelons que nous savons accéder à toutes les cases de la grille, ou bien à une seule de ses cases. Nous connaissons la taille de la grille et nous pouvons mettre un chiffre dans une case ou bien écarter un chiffre possible d'une case.
Dans le développement d'un modèle en programmation orientée objet, vous serez nécessairement amené à créer plusieurs objets mais la plupart du temps, vous allez construire un principe de poupées russes avec des objets appelés par d'autres objets appelés par d'autres objets... Jusqu'à ce qu'on parvienne à l'objet qui sera au dessus de tout, l'objet "de niveau supérieur". L'objet de niveau supérieur est l'objet qui sera véritablement "utilisé". Dans le cas d'une application MVC, l'objet de niveau supérieur sera utilisé par le contrôleur. Ou, dans le cas d'une application Zend Framework 2, l'objet qui sera chargé dans le Service Manager.
L'objet CaseSudoku a pour propriétés les coordonnées de la case : colonne, ligne et région et toutes les valeurs possibles et/ou définitive de la case avec un objet Chiffre.
Notre grille de sudoku est donc prête. Mais, reconnaissons le, ce n'est pas vraiment cette partie là qui nous intéresse, n'est ce pas ? Explorons donc notre modèle... Explorons, inventons, découvrons, concevons...
Le projet est créé dans Netbeans. L'environnement de tests unitaires est installé également. Prenons le temps de réfléchir sur ce que va faire notre application - Travaillons sur la conception de nos objets.
Aborder la programmation orientée objet par l'exemple : concevoir un solveur de sudoku. Avant de se lancer dans un développement, fixons les objectifs et préparons le projet dans Netbeans