Bonnes pratiques Orienté Objet et Java

Slides:



Advertisements
Présentations similaires
UML : méthode Processus. Introduction(1) ● Cycles ● Spécification par cas d'utilisation ● Identifier les besoins ● Analyse par cas d'utilisation ● Affiner.
Advertisements

UML Jean-Marc Vanel Septembre UML en Plan ● Introduction: historique, diagrammes, modèles, notions Orientées Objet, processus de développement.
J.M. Vanel Modèles de conception (design patterns)
Règles de nommages Eric Bleuzet Philippe Terme.
Les ORMs ● Faire coexister le monde relationnel et objet.
1 Programmation Orientée Objet ● Qu'est-ce qu'un objet ● Collaboration des objets ● Les classes ● Relations entre les classes – “Utilise”, “Contient”,
Inter académiques Orléans 2007 Analyse d'activités pouvant donner lieu à développement dans et hors la classe. Durée : 1h30 ● Problématique ● Présentation.
1 Modèles de conception métier J.M. Vanel Architecture en couches – Présentation – Logique applicative – Modèle Métier – Accès aux données – Stockage.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Test logiciel J.M. Vanel Sommaire Pourquoi tester? Catégories de tests Stratégies de test Pratique des test Caractéristiques des bons tests Gestions.
Les Méthodes De Conception Dans les Systèmes D’information Réaliser par : Bouriche Imane Gramez Nadjet 2014/2015 Université Ferhat Abbas – Sétif Faculté.
Windows NT/2000/XP Enjeux et contraintes techniques
Algorithmique & Langage C IUT GEII S1
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
JAVA.
Micro Informatique au Cellier
Modèle objet : les classes
java : l'héritage (rappel)
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Pas de variable globale
Les notions de classe et d'objet
Détection des erreurs.
ASSURER LE SUIVI DES MESSAGES TELEPHONIQUES
PROJET JAVA Automatisation d’une rame de métro
Concurrence Opérations atomiques Rémi Forax
Principes de programmation (suite)
Initiation aux bases de données et à la programmation événementielle
11ième Classe (Mardi, 18 novembre) CSI2572
Présentation python : Épisode 3
JAVA et POO : Notion d'héritage
Javadoc et débogueur Semaine 03 Version A16.
Refactoring (Restructuration de code )
Principes de programmation (suite)
Plans d’expériences: Plans factoriels
Langages de programmation TP10
Présentation Structure données abstraite (TDA) Rappel : File
Les interfaces en PHP.
Evénements.
Anne Burban – Anne Szymczak
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Présentation des EJB Enterprise Java Beans.
Création Et Modification De La Structure De La Base De Données
Programmation en C++ C++ de base
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Présentation python : Épisode 3
Programmation Orientée Objet
Formation sur les bases de données relationnelles.
Développement d’applications interactives
Orthographe à retenir :
Diagrammes UML 420-KE2-LG.
Les Pronoms Secondaire 3, Enrichi.
L1 Technique informatique
Une nécessaire coordination entre la technologie et les mathématiques
Modélisation objet avec UML
Les classes et les objets
Base de donnée de support
Langages de programmation TP11
20 Données semi-structurées et XML
EPITECH 2009 UML EPITECH 2009
JDepend - Analyse de la qualité du code Java -
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Active Directory Services
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Le langage C# : Partie 1.
INTERFACE ET POLYMORPHISME
STREAMS (et fichiers).
Retour sur les interfaces
Jérôme CUTRONA PHP objet Jérôme CUTRONA 08:30:34 Programmation Web
Se repérer dans le temps et l’espace
TP RC.
Transcription de la présentation:

Bonnes pratiques Orienté Objet et Java J.M. Vanel Conseil informatique, architecture http://jmvanel.free.fr/ 2005-12

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

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

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.

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;

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() );

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) { }

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

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

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

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

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