La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Bonnes pratiques Orienté Objet et Java

Présentations similaires


Présentation au sujet: "Bonnes pratiques Orienté Objet et Java"— Transcription de la présentation:

1 Bonnes pratiques Orienté Objet et Java
J.M. Vanel Conseil informatique, architecture

2 Plan Exemple avec interface et classe métier Exemple de test JUnit
Notion d'objet Nommage des classes et des méthodes Utilisation des interfaces Utilisation des fabriques Architecture applicative en couches Traçabilité des fonctionalités et de leurs implémentations

3 Exemple d'interface métier
/** Compte en banque */ public interface Compte { /** solde en centimes */ public long solde(); public void deposer(long somme); public void retirer(long somme) throws NonAuthorise; } Interface = Comportement pur (aucune implémentation) Contrat entre l'appelant et l'appelé solde() est un accesseur : il ne modifie pas l'état de l'objet; on utilise souvent la convention de nommage «JavaBeans» getSolde() deposer() et retirer() sont des modifieurs : ils modifient l'état de l'objet

4 Exemple d'objet métier /** Compte en banque : compte courant, sans intérêt, sans découvert autorisé. */ public CompteCourant implements Compte { /** solde en centimes */ private long solde; public long solde(){return solde;} public void deposer( long somme) { solde += somme; } // ... Commentaire Javadoc qui précise la sémantique de la classe. Les champs doivent toujours être privés. Le nommage de l'argument somme reflète sa signification.

5 Exemple d'objet métier - 2
nouveau_solde permet de factoriser une expression qui apparaît 2 fois. NonAuthorise est une exception métier; on y ajoute toutes les informations nécessaires pour traiter l'exception public void retirer(long somme) throws NonAuthorise { long nouveau_solde = solde-somme; if( nouveau_solde < 0 ) { throw new NonAuthorise( NonAuthorise.DECOUVERT_NON_AUTHORISE , this ); } solde = nouveau_solde;

6 Exemple de test JUnit setUp() est appelée avant chaque test, et sert à initialiser les données de test. Chaque méthode de test a un nom qui commence par test; elles sont appelées par Junit par introspection. Les assertions servent à affirmer ce que l'on sait être vrai. import junit.framework.TestCase; public class TestCompteCourant extends TestCase { private CompteCourant compte; protected void setUp() throws Exception { compte = new CompteCourant(); } public void testDeposer() { compte.deposer(111); assertEquals( "test dépot simple", 111, compte.getSolde() );

7 Exemple de test Junit - 2 Suite de la classe TestCompteCourant.
Les exceptions font partie du comportement de la classe et doivent être testées . public void testRetirer() throws NonAuthorise { compte.deposer(111); compte.retirer(111); assertEquals("on vide complètement le compte", 0, compte.getSolde() ); try { compte.retirer(1); fail( "Une exception doit être lancée si on veut faire un découvert" ); } catch (NonAuthorise e) { }

8 Notion d'objet Entité correspondant à un objet du monde réel, ou à un concept, et encapsulant des données, un état et un comportement. Généralise les notions : Ligne d'une base de données relationnelle Struct du langage C

9 Notion de classe ensemble des objets qui ont même types de données et comportement Une classe a des compétences claires et délimitées pour lesquelles il rend un service complet et fiable; elle est donc réutilisable dans différents contextes

10 Exemples de classes Banque Compte +solde(): Devise
Mutuelle Banque Compte +solde(): Devise Assure' +taux(): double +crediter(int montant) +deposer(montant:Devise) +retirer(montant:Devise) Prestation +montant(Assure'): int Math Simulation On retient de l’objet ce qui s’applique au domaine d’activité, à ce qu’on veut faire avec le logiciel: c’est une modélisation. Pour une classe «  Assuré », le point de vue du logiciel d’une mutuelle sera différent de celui d’une clinique. Matrice Animal +avancer(Direction) +multiplierPar(Matrice): Matrice +crier() +inverser(): Matrice +manger(Animal) +procreer(avec:Animal): Animal

11 Bonnes pratiques - classes
Dissimulation des informations Utiliser les conventions de nommage JavaBeans Limiter au maximum les méthodes et champs statiques

12 Traçabilité des fonctionalités et de leurs implémentations


Télécharger ppt "Bonnes pratiques Orienté Objet et Java"

Présentations similaires


Annonces Google