IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

[java] Exercice d'examen


Sujet :

avec Java

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Par défaut
    ok merci pour votre aide, j'ai tous comprit sauf un point il faudrait une methode qui prend en parametre un Canvas et qui fait appel a la methode paint()
    je ne vois pas comment pas comment modéliser sa

  2. #22
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 91
    Par défaut
    C'est pour faire quoi ?
    A une question comme ça je répondrais bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void nomMethode(Canvas _canvas) {
    _canvas.paint() ;
    }

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Par défaut
    un petit truc que je ne comprend pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class A{
       private static int nb;
    	protected int numero=10;
    	    public A(int n){
    		this();
    		numero+=n;
    	    }
    	    public A() { nb++;}
    	    public int getNumero(){return numero;}
    	    public void f(){System.out.println(numero+"("+nb+")");}
    	    public void g(int n){System.out.println("A"+n);}
    	}
    [code]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public class B extends A{
    	public void f(int n){
    	    numero+=n;
    	    super.f();
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class testA{
        public static void main(String[] args){
    	A a=new A(1);
    	a.f();
    	a.g(12);
    	A b=new B();
    	//b.f(5);
    	b.f();
        }
    }
    pourquoi b.f() donne 10(2) et non 10(1) en gros sa veux dire que quand je fait A b=new B(); il fait automatiquement un super() dans le constructeur de B ?

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Par défaut
    c'est pour l'exercice 2 mit en première page jonkille

    un constructeur d'une classe avec un extends d'une autre classe, si on écrit pas de constructeur il fait automatiquement un super() dedans je me trompe je viens de remarqué ça ?

    voilà la suite de ce que j'ai écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class D extends B implements I{
        private int num;
        D(int n){num=n;}
        public void h(String s){System.out.println(s+" : "+num+" "+getNumero());}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    abstract class C extends A{
        C(int n){super(n);}
        public abstract void g(int n);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class F extends C{
        F(int n){super(n);}
        public void g(int n){System.out.println("F"+n);}
    }
    le main en entier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class testA{
        public static void main(String[] args){
    	A a=new A(1);
    	a.f();
    	a.g(12);
    	B b=new B();
    	//b.f(5);
    	b.f();
    	//C c=new C(3);
    	C f=new F(3);
    	f.g(2);
    	f.f();
    	D dl=new D(4);
    	dl.f(16);
    	dl.h("hiiii!");
        }
    }
    tous sa donne:
    11(1)
    A12
    10(2)
    F2
    13(3)
    26(4)
    hiiii! : 4 26


    je comprend pas le 10(2) pourquoi 2 et pas 1?
    ensuite pourquoi 13(3) le 3 pourquoi ?

    26(4) pourquoi 4 ?

    hiii!:4 26 pourquoi 26 et pas 10?

    je comprend strictement rien au mode de fonctionnement des classe la, je vois qu'une chose quand ont fait X x=new X(valeur) et X est extends de W donc automatiquement sa active le constructeur de W et si W extends U sa active également le constructeur de U c'est ça?

  5. #25
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Citation Envoyé par Delnir Voir le message
    je comprend pas le 10(2) pourquoi 2 et pas 1?
    Je te montre sur un exemple, à toi de faire pour les autres :
    10(2), c'est ce qui est affiché pour la ligne b.f();

    Se demander quel est le type concret de b ? C'est B puis tu as fait un new B.
    Dans B, y a t'il une méthode f ? Non, c'est donc dans un parent.
    Quel est le premier parent de B, c'est A.
    Dans A, y a t'il une méthode f ? Oui, c'est donc elle qui est appelée...
    Que fait elle ? Elle fait System.out.println(numero+"("+nb+")");
    Elle prend donc une variable "numero" dans A qui est une variable d'instance (propre à l'instance b qui est de type B et donc de type A) Cette variable vaut 10. OK
    Ensuite, elle affiche le contenu de la variable nb qui est quand à elle une variable de classe (partagée entre toute les instances) donc impacté par d'autres construction d'objet de type A (ou dérivé). Il faut donc regarder les lignes précédentes à b = new B();
    Juste avant, tu as crée un A (comme c'est la méthode main, il y en a pas d'autres ... si cela avait été dans une méthode, il aurait fallu regarder tout l'historique du programme depuis le point d'entrée et c'est pour cela qu'il faut garder les variables statiques (de classe) pour certains usages bien particulier sinon c'est le syndrôme de la variable globale !)
    En créant ton A, dans ton constructeur de A, tu post-incrémentes nb (qui par défaut est initialisé à 0), nb vaut donc 1.
    En créant ton B ultérieurement, tu repasses dans le constructeur sans argument de A et tu post-incrémentes à nouveau nb qui était à 1 et qui passe donc à 2.
    Voila pourquoi tu as 10(2)

    Si je te montre pas pour les autres, c'est que je n'ai pas que ça à faire.
    tu peux utiliser le debugger d'eclipse et avancer en pas à pas pour voir ...
    ou attendre qu'une autre ame charitable te l'explique

Discussions similaires

  1. problème java exercice et complexité
    Par baobab95 dans le forum Débuter avec Java
    Réponses: 20
    Dernier message: 14/06/2009, 14h40
  2. [SimpleXML] Résolution d'un exercice d'examen de XML
    Par setsuko974 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/07/2007, 22h27
  3. débutant en java(exercice)
    Par hammouch dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2007, 10h35
  4. [Java] Examen de la certification Sun
    Par chady dans le forum Certifications
    Réponses: 8
    Dernier message: 23/12/2004, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo