Rechercher : dans
Par :

Classe, surchage, héritage et polymorphise

Dernière réponse le 29 avr 2009 à 15:31:03 tachag, le 3 aoû 2005 à 22:33:37 
 Signaler ce message aux modérateurs

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!

Meilleures réponses pour « Classe, surchage, héritage et polymorphise » dans :
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Télécharger Media Player Classic HomeCinema VoirMedia Player Classic - Home Cinema est une version modifiée de Media Player Classic. Elle reprend ce qui a fait le succès de l’original et y ajoute quelques nouveautés. Cette version inclut des décodeurs supplémentaires HD pour les codecs H.264 et VC...
POO - Le polymorphisme VoirDéfinition du polymorphisme Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique est un des concepts essentiels de la programmation orientée objet. Alors que l'héritage concerne les classes (et...
POO - Héritage VoirLa notion d'héritage L'héritage (en anglais inheritance) est un principe propre à la programmation orientée objet, permettant de créer une nouvelle classe à partir d'une classe existante. Le nom d'"héritage" (pouvant parfois être appelé dérivation...
Les classes de style (CSS) VoirLes classes et les ID Les classes Il peut s'avérer intéressant d'affecter des styles différents à des mêmes balises. Pour cela les spécifications CSS ont introduit le concept de classe. La définition des classes est aussi simple que celles des...

1

tachag, le 4 aoû 2005 à 00:57:03

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.

Répondre à tachag

2

mamiemando, le 4 aoû 2005 à 01:54:05
Répondre à mamiemando

3

tachag, le 6 aoû 2005 à 22:53:12

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]

Répondre à tachag

4

mamiemando, le 8 aoû 2005 à 01:46:10

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.

Répondre à mamiemando

5

tachag, le 8 aoû 2005 à 02:23: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();



}


}



Répondre à tachag

6

Winou, le 10 mar 2008 à 14:33:41

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.
++

Répondre à Winou

7

 fredhoo, le 29 avr 2009 à 15:31:03

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

Répondre à fredhoo
Collection CommentÇaMarche.net