Téléchargement
illégal
Posez votre question Signaler

Classe, surchage, héritage et polymorphise

tachag 11Messages postés 2 août 2005Date d'inscription - Dernière réponse le 29 avril 2009 à 15:31
Bonjour!

Bon alors je continue d'étudier mon beau petit livre de Java. J'ai un petit exercice et il mentionne de faire un fichier contenant les notions de classe et surcharge et un fichier contenant la notion de l'héritage et finalement un fichier contenant 'main' et exploiter les deux classes de façon à introduire le polymorphisme???

Compliqué? Avez-vous une idée avec quel exemple je pourrais ESSAYER de faire ca! Avec des voitures? Livres?

Je dois relire quelques pages hahaha!!!


Merci de votre aide!
Lire la suite 

Classe, surchage, héritage et polymorphise »

7 réponses
Réponse
+0
moins plus
Toutes les réponses sont là :
http://www.commentcamarche.net/java/javafonc.php3
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Alors voici ce que j'ai fait. J'ai défini une classe, fait l'héritage et le polymorphisme. Par contre, que dois-je ajouter pour ajouter une surchage??

J'ai aussi un message qui dit que j'ai deux erreurs??

Quelqun peut m'aider s.v.p.

Mon code :


[b]class Vehicule
{
// définition des attributs
String marque;
fonctionnement;
caracteristique;

// Constructeur
Vehicule(String saMarque,String sonFonctionnement,String saCaracteristique)
{
marque=saMarque;
fonctionnement=sonFonctionnement;
caracteristique=SaCaracteristique;
}

// définition des méthodes
void getInformation()
{

System.out.println("");
System.out.println("Information sur les véhicules:");
System.out.println("Marque:" + marque);
System.out.println("Fonctionnement:" + fonctionnement);
System.out.println("Caracteristique:" + caracteristique);
}


} // fin de la classe Vehicule



class Camion extends Vehicule
{
// définition des attributs
String vitesse;

// Constructeur
Camion(String saMarque,String sonFonctionnement,String saCaracteristique,String saVitesse)
{
// Appel du constructeur de la classe de base: Vehicule
super(saMarque,sonFonctionnement,saCarateristique);


vitesse=saVitesse;

}

// définition des méthodes
void getInformation()
{
System.out.println("");
System.out.println("Information sur le camion:");
System.out.println("Marque:" + marque);
System.out.println("Fonctionnement:" + fonctionnement);
System.out.println("Caracteristique:" + caracteristique);
System.out.println("Vitesse:" + vitesse);
System.out.println("");
}

} // fin de la classe Camion



class Avion extends Vehicule
{
// définition des attributs
String hauteur;

// Constructeur
Avion(String saMarque,String sonFonctionnement,String saCaracteristique,String saHauteur)
{
// Appel du constructeur de la classe de base: Vehicule
super(saMarque,sonFonctionnement,saCarateristique);


hauteur=saHauteur;

}

// définition des méthodes
void getInformation()
{
System.out.println("");
System.out.println("Information sur l'avion:");
System.out.println("Marque:" + marque);
System.out.println("Fonctionnement:" + fonctionnement);
System.out.println("Caracteristique:" + caracteristique);
System.out.println("Hauteur:" + hauteur);
System.out.println("");
}

} // fin de la classe Avion




public class Information
{
public static void main(String[] args)
{
// tonVehicule va faire référence à un objet de type Camion
// monVehicule va faire référence à un objet de type Avion

Vehicule monVehicule;
Vehicule tonVehicule=new Vehicule ("Ford","Roule","Transporteur", 200);

tonVehicule.getInformation();

monVehicule = new Camion ("Airbus","Vole","Transporteur", 40000);
monVehicule.getInformation();



}


}[/b]
Ajouter un commentaire
Réponse
+0
moins plus
Pour la surcherge crée une méthode portant le même nom mais avec un nombre de paramètres différents. Pour les erreurs donne nous les lignes et le message.
tachag- 8 août 2005 à 02:23
Ok tout fonctionne maintenant.

Voici le code final, je ne sais pas si c'est bien.

Il ne reste plus que la surcharge. Est-ce que tu as un exemple de surcharge? Quel code devrais je ajouter ?? J'ai de la difficulté...!

Merci de ton aide!!





// Le nom des classes débutent toujours par une majuscule.
// Le nom des variables débutent toujours par une minuscule.
// Si nom composé de plusieurs mots, chaque mot débute par une majuscule.

class Vehicule
{
// définition des attributs
// String : manipulation des chaînes de caractères.
protected String marque;
protected String fonctionnement;


// Constructeur
Vehicule(String saMarque,String sonFonctionnement)
{
marque=saMarque;
fonctionnement=sonFonctionnement;

}

// définition des méthodes
void getInformation()
{

System.out.println("");
System.out.println("Information sur les véhicules:");
System.out.println("Marque:" + marque);
System.out.println("Fonctionnement:" + fonctionnement);
}
}

// fin de la classe Vehicule
// Classe Vehicule = super classe

// Héritage : Lorsque nous créons une nouvelle classe (classe dérivée) en se basant sur la classe originale (super classe)
// Héritage : permet la réutilisation de classes déjà prédéfinies.
// Donc, les classes Camion et Avion héritent de la classe Vehicule.


class Camion extends Vehicule
{
// définition des attributs
String vitesse;

// Constructeur
Camion(String saMarque,String sonFonctionnement,String saVitesse)
{
// Appel du constructeur de la classe de base: Vehicule
super(saMarque,sonFonctionnement);


vitesse=saVitesse;

}

// définition des méthodes
void getInformation()
{
System.out.println("");
System.out.println("Information sur le camion:");
System.out.println("Marque:" + marque);
System.out.println("Fonctionnement:" + fonctionnement);
System.out.println("Vitesse:" + vitesse);
System.out.println("");
}

}

// fin de la classe Camion
// Classe Camion : classe dérivée


class Avion extends Vehicule
{
// définition des attributs
String hauteur;

// Constructeur
Avion(String saMarque,String sonFonctionnement,String saHauteur)
{
// Appel du constructeur de la classe de base: Vehicule
super(saMarque,sonFonctionnement);


hauteur=saHauteur;

}

// définition des méthodes
void getInformation()
{
System.out.println("");
System.out.println("Information sur l'avion:");
System.out.println("Marque:" + marque);
System.out.println("Fonctionnement:" + fonctionnement);
System.out.println("Hauteur:" + hauteur);
System.out.println("");
}

}

// fin de la classe Avion
// Classe Avion : classe dérivée



// Polymorphisme : Complète l'héritage et fait appel à une méthode unique qui peut se comporter différemment selon le type d'objet auqel elle s'applique.
// Polymorphisme : Exemple : Camion roule et l'Avion vole.
public class Information
{
public static void main(String[] args)
{
// tonVehicule va faire référence à un objet de type Camion
// monVehicule va faire référence à un objet de type Avion

Vehicule monVehicule;
Vehicule tonVehicule=new Camion ("Ford","Roule","200 km/h");

tonVehicule.getInformation();

monVehicule=new Avion ("Airbus","Vole","40000 pieds");
monVehicule.getInformation();



}


}



Winou - 10 mars 2008 à 14:33
Salut à tous.

En Java, une surcharge toute simple à faire est celle de la fonction toString().
De base, cette fonction renvoit une chaîne de caractères correspondant au type de l'objet (inutile en général), mais il est facilement possible de la surcharger pour lui faire afficher, par l'exemple, l'ensemble des attributs de la classe, séparés par un espace ou un retour à la ligne.

public String toString()
{
     return this.attribut1 + " " + this.attribut2 + " " + ... ;
}

ou encore

public String toString()
{
     String contenu;
     contenu = this.attribut1 + " " + this.attribut2 + ... ;
     contenu += (char)13; //retour à la ligne 
     return contenu;
}


En espérant avoir été utile.
++
Ajouter un commentaire
Réponse
+0
moins plus
Attention : il en faut pas confondre la surcharge et la redéfinition.

Il y a redéfinition quand une sous-classe définit une méthode qui a exactement la même signature (même nom, même liste ordonnée de types d'attributs) qu'une méthode d'une surclasse. La méthode redéfinie cahce la méthode de la surclasse.
Par exemple, public String toString() qui est définie dans Object est souvent redéfinie dans toutes les classes (toutes les classes sont sous-classes de Object).

Il y a surcharge quand une sous-classe définit une méthode qui a le même nom mais un ensemble de types d'arguments différents d'une méthode d'une surclasse.
Par exemple, soit une classe Parc générique qui définit une méthode public void ajouter(Object o) throws ObjetIncompatibleException.
Admettons qu'une sous-classe ParcDeVehicules définisse une méthode spécialisée dont la signature est "public void ajouter(Vehicule v)". Il s'agit d'une surcharge. En effet, le nom de la méthode est identique (ajouter), mais le type du premier (et seul) paramètre est différent : Vehicule au lieu de Object. Du coup, il est toujours possible que la méthode ajouter(Object o) définie dans Parc soit appelée sur un ParcDeVehicules.

Exemple :
ParcDeVehicules pv= new ParcDeVehicules() ;
Fruit f = new Citron() ;
pv.ajouter(f) ; // la méthode ajouter(Object o) définie dans Parc est appelée sur pv
Vehicule v = new Voiture() ;
pv.ajouter(v) ; // la méthode ajouter(Vehicule v) définie dans ParcDeVehicules est appelée sur pv
Object o = new Voiture() ;
pv.ajouter(o) ; // la méthode ajouter(Object o) définie dans Parc est appelée sur pv
pv.ajouter((Vehicule)o) // la méthode ajouter(Vehicule v) définie dans ParcDeVehicules est appelée sur pv

Pour s'assurer que l'on ne peut ajouter que des instances de Vehicule dans un ParcDeVehicule, il faudra cacher dans ParcDeVehicules la méthode ajouter(Object o) définie dans Parc en redéfinissant cette méthode de la sorte dans ParcDeVehicules :

public void ajouter(Object o) throws ObjectIncompatibleException {
try {
this.ajouter((Vehicule)o);
}
catch ClassCastException {
throw new ObjectIncompatibleException()
}
}

La redéfinition remplace la méthode de la surclasse.
Conséquences sur l'exemple :
ParcDeVehicules pv= new ParcDeVehicules() ;

Fruit f = new Citron() ;
pv.ajouter(f) ; // la méthode ajouter(Object o) définie dans ParcDeVehicules est appelée sur pv et le downcast impropre provoque une exception, qui est capturée pour générer l'exception ObjetIncompatibleException

Vehicule v = new Voiture() ;
pv.ajouter(v) ; // la méthode ajouter(Vehicule v) définie dans ParcDeVehicules est appelée sur pv

Object o = new Voiture() ;
pv.ajouter(o) ; // la méthode ajouter(Object o) définie dans ParcDeVehicules est appelée sur pv, Voiture étant sous-classe de Vehicule, le cast fonctionne et la méthode ajouter(Vehicule v) définie dans ParcDeVehicule est appelée
pv.ajouter((Vehicule)o) // la méthode ajouter(Vehicule v) définie dans ParcDeVehicules est appelée directement sur pv
Ajouter un commentaire
Réponse
-1
moins plus
Encore moi,

Je travaille sur cet exercice, est-ce que je suis sur la bonne voie?

Je vais enregistré cet exercice sous le nom : Véhicules

Classe : véhicule
Sous-classes : camion, auto

Je dois enregistré véhicule, camion et auto avec leur caractéristiques (couleur, année, usagée, neuve) dans des fichiers différents et joindre le tout dans un même fichier en effectuant la surchage, l'héritage et le polymorphisme??

Est-ce que quelqun peut m'aider s.v.p.

Merci.
Ajouter un commentaire
Ce document intitulé « Classe, surchage, héritage et polymorphise » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?