IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Tutoriel pour apprendre à développer des objets Java et pas simplement des classes de données


Sujet :

Langage Java

  1. #1
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Points : 73 024
    Points
    73 024
    Par défaut Tutoriel pour apprendre à développer des objets Java et pas simplement des classes de données
    Colin Damon, d'Ippon Technologies, vous propose un tutoriel Java qui présente les bonnes pratiques pour développer des Objets Java et pas seulement des classes de données

    Le lien de l'article : https://ippon.developpez.com/tutorie...lassesdonnees/

    Profitez de cette discussion pour faire part de vos remarques, commentaires ou d'éventuelles informations ou techniques complémentaires.

    L'équipe Java

    Retrouvez les meilleurs cours et tutoriels pour apprendre Java
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Dommage que le lien avec le Domain Driven ne soit pas fait. Sans entrer dans les détails, l'auteur aurait pu faire le rapprochement et même emprunter des termes.

  3. #3
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Bonjour,

    La plus grande partie de l'article discute de la cohérence des objets. La première section me fait penser aux types de données qu'il est possible de créer en Ada (exemple : numérique entier de 1 à 100, pas un entier qu'il faudra ensuite contrôler). Ensuite, vérifier les données en entrée évoque pour moi le langage Eiffel et la conception par contrat (notamment les préconditions). Enfin les types immuables sont de plus en plus utilisés dans d'autres langages comme Scala ou Kotlin.

    Le reste de l'article est plus orienté API (rest en particulier).

    Le sujet de l'article est plus "types de données" que conception d'objets métier, ce qui serait plus utile à beaucoup. Comme dit par @gervais.b, le DDD serait une très bonne approche dans ce cas. Je trouve néanmoins l'article intéressant pour ce rappel du besoin de contrôles des données au niveau des objets eux-mêmes pour garantir leur cohérence avec leurs valeurs métier.

    https://www.eiffel.org/doc/solutions...and_Assertions

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 460
    Points : 893
    Points
    893
    Billets dans le blog
    5
    Par défaut
    Juste pour rappeler que pour vérifier la cohérence d'un objet/classe représentant un concept, il existe un excellent framework, très simple, qui s'appelle Hibernate validator.
    C'est même devenu une norme (JSR 303).

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur en génie logiciel
    Inscrit en
    Juin 2012
    Messages
    856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur en génie logiciel
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 856
    Points : 2 443
    Points
    2 443
    Par défaut
    Citation Envoyé par PhilippeGibault Voir le message
    Juste pour rappeler que pour vérifier la cohérence d'un objet/classe représentant un concept, il existe un excellent framework, très simple, qui s'appelle Hibernate validator.
    C'est même devenu une norme (JSR 303).
    en cherchant un peu sur la toile, tu pourras remarquer que certain conteste cette approche.

    En fait, au niveau du ddd je n'ai jamais vu autant de contestation et d'incertitude et de l'avis même d'Evans l'approche s'applique à peu de projet, même si elle est très intéressante.

  6. #6
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    bien mais avec un petit bémol toutefois.
    Il faut une grande éducation des programmeurs pour leur faire toucher du doigt la pertinence des contrôles de validité.
    A l'époque du COBOL on enseignait aux programmeurs de tout vérifier ... avec parfois des excès surprenants
    (cas extrème : au Pays_bas un gars vérifiait que les noms de famille respectaient bien les règles de l'alphabet néerlandais... sauf que beaucoup de noms là bas sont soit d'origine française ou allemande! Bonjour les dégats). J'avais aussi un copain malgache dont le nom comportait plus d'une trentaine de lettres et ne rentrait pas dans les formulaires!

    On trouve encore ce genre d'excès actuellement: les sites américains qui vous demandent un état à l'intérieur de votre pays, les listes de nationalités (ben oui: quid si tu es "apatride né dans la bande de Gaza sous administration égyptienne"?) mais le plus drôle m'est arrivé personnellement: un programmeur vérifiait les dates de naissance et ne pouvait admettre que j'étais né avant 1950! j'ai eu récemment un autre exemple saignant avec l'application TousAntiCovid qui m'a empêché de me déclarer comme positif!.
    Donc oui aux vérifications systématiques ... mais le mieux est l'ennemi du bien! penser à des procédures de secours si ça vous semble hors limite.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2020
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,

    merci pour les retours (que j'ai encore oublié de surveiller ).

    Pour le lien non fait avec DDD c'est volontaire (et j'ai même du me retenir à de nombreuses reprises). Je pense qu'ajouter du vocabulaire parfois complexe du DDD peut faire peur et n'aurais pas forcement apporté au propos ici.
    Pour l'utilisation de BeanValidation (JSR 303 et 380 je crois) je ne suis absolument pas pour dans le domain (code du métier, celui qui est vraiment important) ou je préfère largement faire des contrôles proche du métier qui me "forceront" aussi l'utilisation de patterns de construction adaptés (je verrais donc émerger des designs plus élégants). J'utilise habituellement des architectures hexagonales et je vais plutôt utiliser ce type de validation dans les primary adapters.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 123
    Points : 84
    Points
    84
    Par défaut
    Bonjour,
    Il y a quelque chose que je ne comprends sincèrement pas. Quelqu'un pourrait-il me donner un exemple d'objet "métier"?
    Things working well, no problems. Time to upgrade.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2020
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    @ben53 quand on fais une application on doit rendre un service donné, on doit donc faire du code pour faire différentes opérations. Il existe plusieurs manière de le faire : on peux choisir de ne représenter que les données (on parle alors de data classes) et faire les traitements dans des services stateless ou, on peux faire des objets représentant le métier qui seront chargés de faire les opérations.

    Par exemple, si on doit manipuler un numéro de téléphone on peux choisir de transporter uniquement une chaîne de caractères, nos services doivent donc pouvoir traiter un numéro de téléphone ou un dictionnaire Klingon. Ou alors on peux avoir un objet représentant ce numéro de téléphone qui fera le contrôle et le formatage de la donnée. En plus de nous donner une indication fiable et importante sur le type de donnée (c'est un numéro de téléphone, pas un prénom) on est aussi certains de manipuler des données saines. Maintenant, sur ce numéro de téléphone on peux avoir besoin d'ajouter l'indicateur du pays (une opération métier nécessaire dans l'application) et bien la logique pour faire cette opération peut être codée directement dans notre objet téléphone.

    Dans le cas du numéro de téléphone, dans cet exemple, seules les valeurs portées sont importantes, si on change ces données on manipule alors un autre numéro de téléphone : en DDD on appel ce type d'objets des value objects. Dans la boite à outils du DDD on va trouver d'autres manières de modéliser le métier (Aggregates, Entities, Domain Events, ...) mais ça, c'est une autre (très longue) histoire . Si ces sujets t'intérésent je te conseil de te renseigner un peu (par exemple en lisant Domain Driven Design Distilled de Vaughn Vernon) puis d'aller participer à des groupes de discussion sur le sujet pour en apprendre un peu plus.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/11/2020, 14h14
  2. Réponses: 0
    Dernier message: 02/05/2019, 23h47
  3. Réponses: 0
    Dernier message: 15/01/2019, 19h08
  4. Tutoriel Swift - Apprendre à développer des applications iOS 8 : Partie 1
    Par Community Management dans le forum Développement iOS
    Réponses: 13
    Dernier message: 27/11/2018, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo