Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Heritage ! #5

Open
methusalah opened this issue Mar 24, 2015 · 5 comments
Open

Heritage ! #5

methusalah opened this issue Mar 24, 2015 · 5 comments
Assignees
Labels

Comments

@methusalah
Copy link
Owner

J'ai parcourut internet et j'ai vu qu'il y avait plusieur methode pour l'heritage.

Il m'a semblait que la plus courante/recente était en utilisant Object.create(monObj), mais du coup je n'ai pas trop compris comment ça manipule l'attribut prototype.

Tu peux me faire un topo rapide de comment tu fais toi?

@solendil
Copy link
Collaborator

Je ne fais pas d'héritage en Javascript.
Je pense pouvoir dire que personne ou presque ne fait d'héritage en Javascript.
Cf. mes précédents commentaires sur le fait de ne pas reproduire le Java :-)
Quel est ton cas d'usage concret ?

@methusalah
Copy link
Owner Author

En l’occurrence, il s'agit de différencier les Line2D, Ray2D et Segment2D. Ils sont globalement identique mais doivent être traités différemment par mon intersector.

Concrètement, je veux avoir un seul algorithme à qui on envoi deux objets ligne et compagnie, et en fonction de leur type, réalise l'intersection. Le résultat peut être différent entre ligne/ligne, ligne/segment, ray/ligne...

@methusalah
Copy link
Owner Author

De la même manière, lorsque je trimbale une library de projet en projet, je passe d'un genre d'objet générique, à des objets plus spécialisé. Par exemple j'utilise souvent un ensemble TileMap/Tile, et j’hérite mon Tile pour y ajouter ce dont j'ai besoin.

@methusalah
Copy link
Owner Author

Enfin, l'exemple de notre soft Beam, ou nous avons un item avec un comportement générique, et des chaînes d’héritages vers des objets de plus en plus specialisés

@solendil
Copy link
Collaborator

J'ajoute la souplesse dans les données plutôt que dans le code.
Par exemple:

line = {ptA:{x:0,y:0},ptB:{x:1,y:1}}
ray = {ptA:{x:0,y:0},ptB:{x:1,y:1},bound:"A"}
segment = {ptA:{x:0,y:0},ptB:{x:1,y:1},bound:"AB"}

Avec un code qui détecte en entrée le type d'objet passé et adapte son comportement.
Tu peux aussi ajouter des attributs à posteriori à tes objets. Par exemple segment.lg = 4, ce qui te permet de les enrichir.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants