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

ALM Discussion :

LSP - Hériter Rectangle d'un Square


Sujet :

ALM

  1. #21
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Citation Envoyé par CinePhil
    Idem : Comment dessines-tu un rectangle avec un carré de 15 x 15 et un carré de 20 x 20 ?
    ==> il ne s'agit pas de dessiner un rectangle à partir d'un carré .
    • le "type" carré de 15 x 15 est unique et s'identifie de manière unique par un segment de 15 (il existe, bien entendu, beaucoup "d'objets" carrés de 15 x 15) ;
    • le "type" carré de 20 x 20 est unique et s'identifie de manière unique par un segment de 20 (il existe, bien entendu, beaucoup "d'objets" carrés de 20 x 20) ;
    • le "type" rectangle de 15 x 20 est unique et s'identifie de manière unique par un segment de 15 et un segment de 20 (il existe, bien entendu, beaucoup "d'objets" rectangles de 15 x 20).
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  2. #22
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Bon...

    La seule manière (simple) d'obtenir un rectangle 15*20 par héritage d'un carré 15*15 est d'y ajouter (au carré) une propriété définissant sa posiiton (x ou y)

    un rectangle de 15*20 est constitué de 2 carrés de 15*15, le second décalé de 5 en y.

    C'est "jouable" conceptuellement, mais cela a-t-il un intérêt, y compris d'un point de vue de modélisation ?

    Pouquoi se compliquer la vie ?

    C'est tellement plus aisé et modélisable (et géométriquement juste) de dire qu'un carré est un cas particulier d'un rectangle...

    Et on n'aura qu'une seule classe réelle... Et un seul objet à chaque fois, qu'on soit carré ou rectangle... Alors que dans l'autre sens, il en faut 2..


    Je pense qu'effectivement c'est là où la "modélisation objet" achoppe... A trop vouloir "modéliser" en abstrait, on oublie le bon sens et la simplicité... Ce qui devrait être la règle de base de tout logiciel, et modélisation servant à construire un logiciel...

    Un prof de maths sup il y a bien lontemps (sniff) nous avait asséné : "plus c'est simple, plus c'est beau, plus ça a des chances d'être vrai", et j'ajouterais en tant que physicien et programmeur "plus ça a de chances de reproduire la réalité et plus c'est facile à comprendre et à prorammer".

    "Ce qui se conçoit bien s'énonce clairement et les mots pour le dire viennent aisément"

    Le simple fait de ces pages et de ces articles démontre que c'est une absurdité conceptuelle...



    Note :

    dire qu'un rectangle dérive d'un carré revient à dire : "un carré est un parallélpiède rectangle dont les 4 côtés sont égaux". Théoriquement, du point de vue des propriétés, il n'a donc qu'un seul attribut, 1 côté (plus un centre).

    Ce qui signifie que pour décrire un rectangle, il faut soit ajouter un attribut, l'autre côté, soit créer 2 carrés.

    Les 2 solutions sont plus complexes.. CQFD.
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #23
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Si on passe un carré à cette fonction, l'assertion final va échouer car en appelant setLargeur sur un carré, les deux cotés vont être impactés et l'aire multipliée par 4.
    ..
    Un héritage inversé (rectangle qui hérite de carré) marcherait mais serait maladroit. Bref, pour moi le mieux ce de ne pas les faire hériter l'un de l'autre.

    Edit: j'avais pas vu que je reprenais le même exemple que celui de l'article.
    Ceci est un sophisme, pour la bonne et simple raison que "setlargeur" ne modifie qu'un seul côté, contrairement à ce que tu écris (et l'auteur de l'article).

    Si on a défini un rectangle, on a un setlargeur et un sethauteur..

    Donc, multiplier par 2 la largeur multipliera par 2 la surface...

    Si carré hérite de rectangle, la multiplication par 2 devra être faite sur les 2 côtés, ce qui donnera bien surface = 4 surface.


    Si rectangle hérite de carré, il n'y a qu'une seule méthode setlargeur... Et alors ?? Comment défini-t-on l'autre ???

    Donc carré hérite de rectangle mais rectangle ne peut pas hériter de carré..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  4. #24
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Je me demande si la discussion tourne pas trop sur la modélisation, alors que l'idée serait plutôt du côté de la substitutionnalité d'une classe par une autre dans un programme.

    L'article donne ainsi une raison pour laquelle l'un des sens ne fonctionne pas.
    L'autre étant laissé un "exercice", la plupart du temps, les personnes parlant du sujet évoque "d'autres problèmes" (mais sans exemple).

  5. #25
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    L'article explique que le carré ne peut pas dériver du rectangle selon les paramètres de conception qui lui sont donnés dans l'article.
    D'autres avis dans la discussion expliquent que l'inverse n'est pas possible non plus pour le même genre de problème.
    La bonne solution est donnée semble t-il entre la page 2 et la page 4 de la discussion (je ne suis pas allé plus loin dans la lecture) en considérant qu'un objet carré est une instance particulière de la classe rectangle mais qu'on ne peut pas créer une classe carré qui hérite de rectangle, sauf peut-être en changeant les paramètres du rectangle, en utilisant la surcharge... au final probablement en violant les principes de la programmation par contrat.

    Ce que j'ai donné plus haut est effectivement une tentative de modélisation d'un héritage de données, sujet que je maîtrise assez bien, pas d'un héritage de classes d'un logiciel, ce que je maîtrise beaucoup moins bien car n'ayant que très peu fait de POO.

    En tout cas j'aurais appris des trucs avec ce débat !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #26
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Hylvenir Voir le message
    Je me demande si la discussion tourne pas trop sur la modélisation, alors que l'idée serait plutôt du côté de la substitutionnalité d'une classe par une autre dans un programme.
    .
    C'est pas de la modélisation, ça ??

    Pour substituer une classe à une autre, suffit d'utiliser void*
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #27
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    C'est pas de la modélisation, ça ??
    Bah, au vu du débat, j'ai pas l'impression de la substitutionnalité ne soit pas un critère lors de la modélisation...
    J'y lis plus du "est composé de", "fait partie de", "ressemble à", que du "se comporte comme"

    Citation Envoyé par souviron34 Voir le message
    Pour substituer une classe à une autre, suffit d'utiliser void*
    On se poserait moins de question c'est sûr

  8. #28
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Hylvenir Voir le message
    J'y lis plus du ... que du "se comporte comme"
    Parce que justement ce que cela démontre c'est que ça ne peut pas se comporter comme...

    Parce que il y a une contrainte...

    Dans les 2 sens il y a un problème à cause de la contrainte..

    Il est simplement cependant plus aisé à implanter / à faire "se comporte comme" dans le sens carré dérive de rectangle, car toutes les propriétés sont communes.. Il n'y a qu'un test supplémentaire à ajouter "si on modifie largeur, on modifie hauteur" (ou inversement).

    Bien que la mécanique relatiiviste soit une généralisation de la mécanique classique, exprimer la mécanique classique en fonction de la mécanique relativiste est une complication d'expressions, et vouloir exprimer la mécanique relativiste par la mécanique claissique est forcément voué à l'échec..

    C'est ce qu'on essaye de dire : on peut faire dériver le carré du rectangle, mais il y aura de toutes façons une complication à cause de la contrainte. Quant à vouloir dériver un rectangle d'un carré, on ne peut pas (à moins, comme j'ai mentionné, soit de rajouter une propriété soit d'utiliser 2 carrés).

    C'est le fond d'un cas particulier : il est particulier... Il a donc des contraintes et/ou des spécifictés qui ne peuvent être comprises du global..

    Un foetus est standard de fabrication / de concept, et pourtant chaque cas est un cas particulier. Du schéma de médecine à la réalisation, il y a un saut quantique : l'un ne donne pas l'autre, et l'autre n'est pas totalement décrit par l'un..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #29
    Membre habitué
    Homme Profil pro
    Retraité MO
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité MO
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Points : 136
    Points
    136
    Par défaut
    Juste une petite remarque :

    En page 1, le code (rectangle) prévoit bien "longueur" et "largeur", soit deux valeurs.
    Or, un carré ne prend qu'une valeur, le "côté".

    Donc, si on prend un rectangle de longueur= largeur on obtient un rectangle de format carré, mais on n'obtient pas un carré qui, lui, n'a pas de longueur ni de largeur.
    Et puis, comment définissez-vous la "longueur" d'un carré ? C'est de haut en bas ou de gauche à droite ?
    R.BASILE, 1971 : "Il y a mille et un procédés pour accélérer des particules. Le seul véritablement fondamental restant...le carnet de chèques."

  10. #30
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Il est simplement cependant plus aisé à implanter / à faire "se comporte comme" dans le sens carré dérive de rectangle, car toutes les propriétés sont communes.. Il n'y a qu'un test supplémentaire à ajouter "si on modifie largeur, on modifie hauteur" (ou inversement).
    Je pense que ma question a été oubliée entre temps.
    Pour rappel, je sais déjà que ce n'est pas valide, et ce, dans les 2 sens.
    L'article ne donnait un exemple que pour le premier sens,
    j'essayais d'en proposer un pour le 2ième, et je le soumettais à validation ici.

    Il se trouve que pour certains même le premier sens n'était pas clairement invalide (au vu des pré/post conditions non fournies, donc on peut imaginer ce qu'on veut pour la mal fonctionner).

    Qu'importe, l'essentiel de la discussion est un doublon de ce qui est déjà discuter dans le fil cité avant, qui permet de voir différent aspect de ce problème.

    Merci pour vos éclaircissements respectifs.

  11. #31
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je pense donc que tu peux cliquer sur
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2011, 19h37
  2. [MFC]Ecrire du texte dans un rectangle
    Par zaz16 dans le forum MFC
    Réponses: 8
    Dernier message: 29/07/2003, 10h31
  3. Comment centrer un Texte dans un rectangle ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 21h56
  4. Dessiner un rectangle avec bords et texte ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 17h17
  5. Réponses: 9
    Dernier message: 11/03/2003, 12h22

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