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 :

Probleme de constructeur


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Probleme de constructeur
    Bien le bonjour à tous !
    Je suis étudiant en premiere année de dut info. Nous avons commencé a étudier le java. Pas de soucis mais je piétine sur un truc au niveau d'un constructeur...

    Voici le tp que j'ai fait, il est divisé en trois classes (UnPoint, UnRectangle et Test) que voici :

    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
    19
    20
    21
    class UnPoint{
    	int abscisse,ordonnee;
     
    	UnPoint(){
    		abscisse=0;
    		ordonnee=0;
    	}
    	UnPoint(int a, int o){
    		abscisse=a;
    		ordonnee=o;
    	}
    	UnPoint(UnPoint p){
    		if(p !=null){
    			abscisse=p.abscisse;
    			ordonnee=p.ordonnee;
    		}else{
    			abscisse=0;
    			ordonnee=0;
    		}
    	}
    }
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    class UnRectangle{
     
     
    	UnPoint coin;
    	int largeur, hauteur;
     
    	UnRectangle(){
    		coin=new UnPoint();
    		largeur=1;
    		hauteur=1;
    	}
    	UnRectangle(int l, int h){
    		coin=new UnPoint();
    		if(l<1){
    			largeur=1;
    		}else{
    			largeur=l;
    		}
    		if(h<1){
    			hauteur=1;
    		}else{
    			hauteur=h;
    		}	
    	}
    	UnRectangle(UnPoint p){
    		if(p==null){
    			coin=new UnPoint();
    		}else{
    			coin=p;
    		}	
    		largeur=1;
    		hauteur=1;
    	}
    	UnRectangle(UnPoint p,int a,int b){
    		if(p==null){
    			coin=new UnPoint();
    		}else{
    			coin=p;
    		}
    		largeur=a;
    		hauteur=b;
    	}
    	UnRectangle(int a,int o,int h,int l){
    		if(h<1){
    			hauteur=1;
    		}else{
    			hauteur=h;
    		}
    		if(l<1){
    			largeur=1;
    		}else{
    			largeur=l;
    		}
    		coin=new UnPoint(a,o);
    	}
    	UnRectangle(UnRectangle r){
    		if(r!=null){
    			largeur=r.largeur;
    			hauteur=r.hauteur;
    			coin=new UnPoint(r.coin);
    		}else{
    			largeur=1;
    			hauteur=1;
    			coin=new UnPoint();
    		}	
    	}
    }
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    import java.util.Scanner;
     
     
    class Test{
     
    	public static void main(String[] args){
    		Scanner sc=new Scanner(System.in);
     
    		UnRectangle premier_rectangle,deuxieme_rectangle,troisieme_rectangle,quatrieme_rectangle,cinquieme_rectangle,sixieme_rectangle,rectangle_r;
    		UnPoint premier_point,deuxieme_point;
     
    		System.out.println("Choisissez le type de rectangle a construire (entre 1 et 6) :");
    		int i=sc.nextInt();
    		System.out.println("Choix" +i);
     
    		switch(i){
     
    		case 1:
    			premier_rectangle=new UnRectangle();
    			System.out.println("Premier rectangle (abscisse) : " +premier_rectangle.coin.abscisse);
    			System.out.println("Premier rectangle (ordonnee) : " +premier_rectangle.coin.ordonnee);
    			System.out.println("Premier rectangle (largeur) : " +premier_rectangle.largeur);
    			System.out.println("Premier rectangle (hauteur) : " +premier_rectangle.hauteur);
    		break;
     
    		case 2:
    			deuxieme_rectangle=new UnRectangle(10,15);
    			System.out.println("Deuxieme rectangle (abscisse) : " +deuxieme_rectangle.coin.abscisse);
    			System.out.println("Deuxieme rectangle (ordonnee) : " +deuxieme_rectangle.coin.ordonnee);
    			System.out.println("Deuxieme rectangle (largeur) : " +deuxieme_rectangle.largeur);
    			System.out.println("Deuxieme rectangle (hauteur) : " +deuxieme_rectangle.hauteur);
    		break;
     
    		case 3:
    			premier_point=new UnPoint(22,35);
    			troisieme_rectangle=new UnRectangle(premier_point);
    			System.out.println("troisieme rectangle (abscisse) : " +troisieme_rectangle.coin.abscisse);
    			System.out.println("troisieme rectangle (ordonnee) : " +troisieme_rectangle.coin.ordonnee);
    			System.out.println("troisieme rectangle (largeur) : " +troisieme_rectangle.largeur);
    			System.out.println("troisieme rectangle (hauteur) : " +troisieme_rectangle.hauteur);
    		break;
     
    		case 4:
    			deuxieme_point=new UnPoint(99,12);
    			quatrieme_rectangle=new UnRectangle(deuxieme_point, 45, 88);
    			System.out.println("quatrieme rectangle (abscisse) : " +quatrieme_rectangle.coin.abscisse);
    			System.out.println("quatrieme rectangle (ordonnee) : " +quatrieme_rectangle.coin.ordonnee);
    			System.out.println("quatrieme rectangle (largeur) : " +quatrieme_rectangle.largeur);
    			System.out.println("quatrieme rectangle (hauteur) : " +quatrieme_rectangle.hauteur);
    		break;
     
    		case 5:
    			cinquieme_rectangle=new UnRectangle(45, 88, 48, 56);
    			System.out.println("cinquieme rectangle (abscisse) : " +cinquieme_rectangle.coin.abscisse);
    			System.out.println("cinquieme rectangle (ordonnee) : " +cinquieme_rectangle.coin.ordonnee);
    			System.out.println("cinquieme rectangle (largeur) : " +cinquieme_rectangle.largeur);
    			System.out.println("cinquieme rectangle (hauteur) : " +cinquieme_rectangle.hauteur);
    		break;
     
    		case 6:
    			sixieme_rectangle=new UnRectangle(rectangle_r=new UnRectangle r);
    			System.out.println("sixieme rectangle (abscisse) : " +sixieme_rectangle.coin.abscisse);
    			System.out.println("sixieme rectangle (ordonnee) : " +sixieme_rectangle.coin.ordonnee);
    			System.out.println("sixieme rectangle (largeur) : " +sixieme_rectangle.largeur);
    			System.out.println("sixieme rectangle (hauteur) : " +sixieme_rectangle.hauteur);
    		break;
     
    		default:
    			System.out.println("mauvais choix, veuillez relancer le programme");
    		}	
    	}
    }
    Voici l'énoncé correspondant au 6eme rectangle construit dans test :

    "Programmez les constructeurs suivants pour la classe UnRectangle :

    ...blablabla...

    Constructeur avec un paramètre UnRectangle: rectangle dont la position, la largeur, la hauteur sont celles du rectangle passé en paramètre (NB: le coin du rectangle construit n'est pas le même que celui du rectangle passé en paramètre seulement leur position est la même. Un troisieme constructeur pour la classe UnPoint peut être programmé)."

    Il reste plus que ce satané sixieme rectangle à construire, j'ai beau triturer le probleme dans tous les sens, je n'y arrive pas, avez vous une piste à me proposer ?

    Merci d'avance pour vos réponses, Dwuom

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Salut,
    Je ne comprends pas ou est ce que tu bloques, vu que tu as correctement codé ce constructeur ...

    Le piège c'était de ne pas faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UnRectangle(UnRectangle r){
    	largeur=r.largeur;
    	hauteur=r.hauteur;
    	coin=r.coin;// <-- Ce qu'il fallait éviter
    }
    P.S. : à ta place, je testerais pas si un paramètre est null, comme ça, ça lancera un NullPointerException (NPE) car s'est plus préviible que ton initalisation par défaut. Au pire, je ferais le test, et si c'est null, je lancerais une IllegalArgumentException

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Marchi pour la réponse

    En fait j'ai trouvé la solution entre temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		case 6:
    			cinquieme_rectangle=new UnRectangle(45, 88, 48, 56);
    			sixieme_rectangle=new UnRectangle(cinquieme_rectangle);
    			System.out.println("sixieme rectangle (abscisse) : " +sixieme_rectangle.coin.abscisse);
    			System.out.println("sixieme rectangle (ordonnee) : " +sixieme_rectangle.coin.ordonnee);
    			System.out.println("sixieme rectangle (largeur) : " +sixieme_rectangle.largeur);
    			System.out.println("sixieme rectangle (hauteur) : " +sixieme_rectangle.hauteur);
    		break;
    Voila le probleme, en fait il n'a pas trouvé l'objet UnRectangle demandé à l'appel du constructeur donc impossible de compiler

    En fait nous n'avons pas encore vu comment traiter les exeptions en cours, donc je préfère déja bien piger ce qu'on a déja fait

    Mais bon, j'ai quand même une autre question pour améliorer un poil le prog, y'a t'il un moyen de faire un menu avec une selection en surbrillance sans utiliser la fonction switch qui demande à l'utilisateur de taper un chiffre ?

    Merci d'avance pour les réponses

  4. #4
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Dans un programme en mode console la seule interaction possible avec l'utilisateur est ce qu'il tape dans la console donc tu n'a pas trop le choix. Après tu verra sans doute la gestion d'interface graphique (SWING par exemple) dans lequel il y a de nombreux composants pour interagir avec l'utilisateur.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Okay, en fait je vise pas si haut que swing

    Je pensais plutot à un truc du genre les installations de vieux jeux sous dos.

    ça par ex :


    Mais je suppose que pour avoir un rendu semblable il faut utiliser swing (me trompe-je ?) quitte à avoir un meilleur rendu car sous win

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de constructeur.
    Par Mickey.jet dans le forum Delphi
    Réponses: 4
    Dernier message: 31/05/2006, 19h42
  2. [JTable] probleme de constructeur et d'affichage
    Par hby dans le forum Composants
    Réponses: 3
    Dernier message: 01/05/2006, 16h43
  3. probleme de constructeur
    Par semaj_james dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2006, 15h48
  4. Probleme de constructeur
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/03/2005, 10h48
  5. Réponses: 13
    Dernier message: 02/02/2005, 00h21

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