Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#151 Le 16/11/2007, à 11:59

carella

Re : Questions sur la P.O.O. (C++ et JAVA)

Personne ne s'énerve, enfin pas moi en tout cas, on échange des points de vue sur l'objet en vantant les mérites de telle ou telle approche (enfin il me semble !)

Comme l'a très bien dit Martopioche le fait de programmer avec des classes n'est qu'une étape, importante certes mais qui peut se faire sans utiliser le concept d'héritage et toute la suite héritage multiple, polymorphisme, liaison dynamique, ......

On peut très bien faire de la programmation avec des classes dans un langage comme VBA par exemple qui permet de créer des classes mais qui ne permet pas l'héritage.

Pour la programmation objet le principe de base (les classes) est également assez simple mais d'autant plus déroutant que l'on a pratiqué un (ou des)langage(s) procéduraux.
Pour la conception objet, en particulier de logiciels de taille respectable, les deux seuls concepts fondamentaux que sont les relations d'héritage et de client-fournisseur et tous leurs dérivés sont également simples à  comprendre ...... mais les appliquer correctement (je devrais dire élégamment) est une activité qui prend "toute une vie"

Dernière modification par carella (Le 16/11/2007, à 16:45)

Hors ligne

#152 Le 16/11/2007, à 15:08

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

Oh là y a un truc qui m'échappe tjrs alors que c'est essentiel en JAVA.

Quand je tape ceci :

ubuntu moi;
moi = new ubuntu();
moi.bizou();

La première ligne fait ceci : Bon je crée une référence moi sur un objet de la classe ubuntu.
La seconde ligne fait cela : Appel du constructeur sans argument ou à défaut du pseudo-constructeur de la classe Ubuntu.

Si je n'écris pas la seconde ligne (on en a le droit ?) est-ce que ça m'empeche d'appliquer la méthode bizou() sur l'instance moi ?

D'autre part, si je n'écris pas la seconde ligne, l'instance moi aura été générée sans aucun appel à un constructeur même pseudo-constructeur ?

Comprenez-vous ma question ? J'ai peine à l'expliquer. Merci smile

Hors ligne

#153 Le 16/11/2007, à 15:15

Gojita

Re : Questions sur la P.O.O. (C++ et JAVA)

La première ligne fait ceci : Bon je crée une référence moi sur un objet de la classe ubuntu.

Non !!! Tu crée simplement un pointer ... c'est à  dire une variable qui plus tard pointera sur objet de la classe ubuntu. Pour l'instant l'objet ubuntu n'existe pas !! et qui plus est indéfini

ubunto moi = nil;
moi = new ubuntu();

C'est là  ou tu crée ton objet ... et seulement a partir de cette ligne tu as un objet ubuntu valide pour appeler des méthod.

D'autre part, si je n'écris pas la seconde ligne, l'instance moi aura été générée sans aucun appel à  un constructeur même pseudo-constructeur ?

non! La premiere ligne ne génère en aucun cas une instance de classe.

JAVA cache le fait qu'on travail avec des pointers ... mais ta variable 'moi' en est un ! Il te faut absulument l'initialiser (comme ta ligne 2) avant que tu puisses l'utiliser.


Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.

Hors ligne

#154 Le 16/11/2007, à 15:22

carella

Re : Questions sur la P.O.O. (C++ et JAVA)

Bon je suis loin d'être un spécialiste Java mais comme personne n'a l'air "en ligne" je tente une réponse :

La première ligne : tu déclares une reference moi qui à  un moment de l'exécution de ton programme pointera sur un objet de type ubuntu

La seconde ligne : tu crées une instance de la classe ubuntu et tu attaches la reference moi à  cet objet

Si tu n'écris pas la seconde ligne (bien sur tu as le droit mais tu disposeras de la reference moi et tu ne pourras rien en faire) la reference moi n'est attachée à  rien (elle vaut void) donc tu ne peux appeler aucune méthode.

Non non la première ligne ne crée pas d'objet elle crée une référence à  un futur objet de la classe ubuntu

Sous réserve que les spécialistes java indiquent un autre fonctionnement (ce qui me surprendrait mais sait on jamais)

Dernière modification par carella (Le 16/11/2007, à 15:26)

Hors ligne

#155 Le 16/11/2007, à 15:23

carella

Re : Questions sur la P.O.O. (C++ et JAVA)

Oops désolé ! ma réponse s'est croisée avec celle de Gojita

Mais c'est cohérent wink

Dernière modification par carella (Le 16/11/2007, à 15:25)

Hors ligne

#156 Le 16/11/2007, à 15:26

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

carella a écrit :

Oops désolé ! ma réponse s'est croisée avec celle de Gojita

Ok ! Je suis complètement d'accord avec ton explication. Mais là  j'ai le bouquin de Delannoy sur les genoux et j'ai justement ceci d'écrit :

ubuntu moi;
moi.affiche();

Donc j'ai pensé : Tiens bizarre pas de moi = new ubuntu();
Alors je me suis remis en question.
A mon avis c une coquille du livre ou alors ils ont omis de l'écrire (c pas impossible vu que le code est entrecoupé de phrases, l'auteur a pe supposé que la ligne avec new était sous-entendue).

Mais j'avais compris donc ! C'est comme en C++. Seule la seconde ligne instancie la classe ubuntu.
Cool on est d'accord wink

En gros, la première ligne crée un pointeur.
La seconde dit sur quoi doit pointer le pointeur !

Dernière modification par aganim07 (Le 16/11/2007, à 15:31)

Hors ligne

#157 Le 16/11/2007, à 15:37

Gojita

Re : Questions sur la P.O.O. (C++ et JAVA)

ubuntu moi;
moi.affiche();

Si c'est du JAVA c'est foireux. Par contre, si c'est du C++ c'est bon. Car

ubuntu moi;

Crée effectivement un object.
Par contre, pas en JAVA ou il crée un pointer (indéfini, il ne vaut pas void).
et donc, la deuxième ligne va surement faire crasher ton programme.


Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.

Hors ligne

#158 Le 16/11/2007, à 15:40

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

Gojita a écrit :

ubuntu moi;
moi.affiche();

Si c'est du JAVA c'est foireux. Par contre, si c'est du C++ c'est bon. Car

ubuntu moi;

Crée effectivement un object.
Par contre, pas en JAVA ou il crée un pointer (indéfini, il ne vaut pas void).
et donc, la deuxième ligne va surement faire crasher ton programme.

Oui en C++ ça passerait mais ça ne serait pas la méthode dynamique d'instanciation.
Là  je supposais qu'on parlait bien de la méthode dynamique et pas statique.

Hors ligne

#159 Le 16/11/2007, à 15:41

carella

Re : Questions sur la P.O.O. (C++ et JAVA)

indéfini ?! autant pour moi ! ils auraient pu faire un effort !
Enfin je le saurai si un jour je suis condamné à  faire du Java !

Hors ligne

#160 Le 16/11/2007, à 16:04

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

Je viens de lire le chapitresur l'héritage, la redéfinition et la surdéfinition !
C'est supra simple !! Good news ! Le chap. suivant c'est le polymorphisme.

Hors ligne