Question Java[ouverte]

Hello. Demain exa sur java et un peu du mal à faire le transfert depuis smalltalk…

Alors si qqn pouvait m’aider dans ce qui suit: (problème de syntaxe)

On a une méthode d’instance:

void setSize(int size)
{
this.Size = size;
}

size variable d’instance

à quoi sert le void ? C’est quand on modifie une variable de classe ? Ou tout simplement lorsque l’on utilise une variable dans la méthode ? Et est-ce que
voilà :slight_smile:
Merci d’avance.

[Edité le 6/2/2003 par Maverick]

[Edité le 6/2/2003 par Maverick]

[Edité le 6/2/2003 par Maverick]

[Edité le 6/2/2003 par Maverick]

Je suis entièrement d’accord avec toi, je voulais aussi parler des interfaces mais mes potes ont lancé une partie de Quake 3 la tantation était trop grande, j’ai eu la flemme de détailler les classes abstraites et les interfaces. :wink: Puis je vois que vous avez bien détailler le sujet. :stuck_out_tongue:

Et je rajouterai une chose pour être complet à 100%. Si tu crées une interface et ensuite une classe qui l’implémente, alors cette classe devra surcharger TOUTES les méthodes de ladite interface. Si tu ne le fais pas, le compilateur va te sortir un gentil " mothod truc() from interface Machin is not overrdiden".

Par contre, si tu crées une classe abstraite, tu peux surcharger ce que tu veux.

Oui et non en fait pour ZGoblin. Ton explication est bonne mais si on veut etre chiant incorrecte. Dans le cas du vehicule et tel que tu l’as decrit il vaut mieux utiliser une interface.

La classe abstraite sert si tu as des proprietes commune aux deux objets (pas des methodes) mais que tu veux empecher l’instanciation de la classe qui regroupe ces proprietes communes. Dans ce cas la tu utilise une classe abstraite. Si c’est uniquement des methodes communes aux deux objets tu met ca dans une interface. C’est ca la diff entre une classe abstraite et une interface puisque c’est surement la prochaine question que vas poser l’auteur du thread :wink:

Donc en resume voila un exemple concret de classe abstraite:

classe abstraite vehicule {
attribut public poid qui est un entier
methode abstraite rouler();
}

classe voiture herite de vehicule {
methode rouler qui implementer le rouler abstrait de la classe mere() {…}
}
classe velo herite de vehicule {
methode rouler qui implementer le rouler abstrait de la classe mere() {…}
}

Si tu enleve l’attribut poid parceque tu n’en as pas besoin fait une interface au lieu d’un classe abstraite. Il n’y a rien a changer dans les classes filles.

[Edité le 7/2/2003 par GloP]

Je suis tout a fait d’accord avec ZGoblin on ne peut pas mieux expliquer les classes abstraites.

Sinon il y a un ouvrage disponible sur le net qui s’intitule “think in Java”
Il doit normalement etre traduit en francais et il est tres complet.

[Edité le 7/2/2003 par CoXwEn]

Tu devrais faire une recherche sur Google, y’a plein de tutoriaux en java pour des problèmes de syntaxes et sur la théorie objet.

<a href=’ http://www.java-france.com/’ target=’_blank’> http://www.java-france.com/

Pour tes questions

[quote]void setSize(int size)
{
this.Size = size;
}[/quote]
Dans java, il y a plusieurs types d’éléments : les classes qui représentent des objets, et dans ces objets, il y a les attributs (des variables) et les méthodes (des fonctions qui modifient ces variables, qui saisissent des données ou en affichent.)

La méthode que tu as données est appelée “accesseur” car ces une méthode qui modifie (accède en écriture) à l’attribue size. Les méthodes peuvent retourner des variables, par exemple Maths.random() retourne une valeur aléatoire de type double, ou bien faire une action sans retourner aucune variables : System.out.println(“Bak”); affiche à l’écran Bak mais ne renvoie rien.

Peut etre que tous ce que je dis tu le sais déjà mais comme je ne connais pas ton niveau je préfère détailler.

Pour les classe abstaites, je vais te donner une exemple, si tu veux sauvegarder des objets “véhicules” : un vélo et une voiture, ces deux véhicules ont une méthode rouler.

Le plus simple est de faire trois classes :

Une classe véhicules abstraites car contenant la méthode rouler puis les deux classes Voiture et Velo qui héritent de la méthode rouler.
Le abstract n’est pas obligatoire et généralement ca marche pareille si tu ne le met pas, mais ca permet d’interdire au programmeur d’instancier cette classe et ca l’oblige à utiliser les classes filles Voiture et Velo.

Voila, j’espère que je t’ai aidé un peu, j’ai essayer d’etre le plus précis (peut etre un peu trop).

[Rien à voir]
Remouk is back !
[/Rien à voir]

Si je me souviens bien…

La classe abstraite permet de déclarer un objet de type shape, puis, plus tard de l’instancier avec une de ses classe fille…
Les méthodes abstraites permettent de s’assurer que les classes filles vont implémenter cette méthode et aussi d’appeller la méthode sur l’objet abstrait (dans le code) qui aura été instancié auparavant…

[Edité le 6/2/2003 par kaneloon]

Encore une petite question :

à quoi sert les classes et les méthodes abstraites ?
exemple :

abstract class Shape
{
double sumArea (Shape other)
{ return this.area() + other.area();}
abstract double area();
}

Merci d’avance

[Edité le 6/2/2003 par Maverick]

void c’est parce que tu retournes rien.
Si tu retournes un int alors tu mets int, etc.

:remouk