Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[DEBUTANT] créer un tableau d'objet

5 réponses
Avatar
Joe le Bonka
Bonsoir à tous.
J'essaie de m'initier aux joies de la notion d'objet en java.
Je croyais avoir + ou - compris, mais ....

Voilà mon problème :
je veux créer un tableau d'objet "Voitures".

J'ai créé une classe Voiture où je déclare avec un static les variables
propres à mon objet. Ici, l'immatriculation qui est par défaut "ABCDEFG".

public class Voiture
{ Static String immatriculation="ABCDEFG"}


Dans mon programme principal, je crée le tableau tab d'objets Voiture :

Voiture[] tab=new Voiture[8];

tab[0].immatriculation="HIJKLMNO"
System.out.println(tab[0].immatriculation);
System.out.println(tab[5].immatriculation);


Pas de soucis, tab[0].immatriculation="HIJKLMNO".
Mais par contre, pourquoi diable tab[5].immatriculation="HIJKLMNO" aussi,
alors qu'il devrait être égal à "ABCDEFG" ??

J'ai l'impression que mon tableau n'est que la copie de n éléments du même
objet Voiture.
Hmm... Me suis planté dans ma création de tableaux d'objets ?

Merci de vos éclaircissements.

5 réponses

Avatar
Franck
Joe le Bonka vient de nous annoncer :
Bonsoir à tous.
J'essaie de m'initier aux joies de la notion d'objet en java.
Je croyais avoir + ou - compris, mais ....

l'immatriculation d'une voiture est distincte pour chaque voiture,

donc cet attribut ne doit pas etre déclaré "static"


class Vehicule {
String immatriculation;
String couleur;
static int nombreDeRoues;
}

class Voiture extends Vehicule {
static int nomberDeRoues = 4;
}

@+

--
mailto:
En Gwada y'a du vent !

Avatar
Joe le Bonka
Franck wrote:
Joe le Bonka vient de nous annoncer :
Bonsoir à tous.
J'essaie de m'initier aux joies de la notion d'objet en java.
Je croyais avoir + ou - compris, mais ....

l'immatriculation d'une voiture est distincte pour chaque voiture,

donc cet attribut ne doit pas etre déclaré "static"


Mais bon sang, mais c'est bien sûr !
Merci bcp Franck !


Avatar
Joe le Bonka
Franck wrote:
Joe le Bonka vient de nous annoncer :
Bonsoir à tous.
J'essaie de m'initier aux joies de la notion d'objet en java.
Je croyais avoir + ou - compris, mais ....

l'immatriculation d'une voiture est distincte pour chaque voiture,

donc cet attribut ne doit pas etre déclaré "static"



J'ai donc remplacé Static par un 'Public' dans ma classe de description
d'objet Voiture.
Mais maintenant, j'ai une erreur java.lang.NullPointerException dés que
j'essaie d'afficher l'élément immatriculation d'un des éléments du tableau
d'objets :

public class Voiture
{ Public String immatriculation="ABCDEFG"}

Mon main :

Voiture[] tab=new Voiture[8];

tab[0].immatriculation="HIJKLMNO"
System.out.println(tab[0].immatriculation);
System.out.println(tab[5].immatriculation);

Dur, dur le tableau d'objet. Evidemment, je n'ai aucune erreur si je passe
par une instance de classe 'classique' :
renault=new Voiture();

System.out.println(renault.immatriculation);
Cette ligne me renvoie bien sans erreur l'immatriculation de l'objet
renault.


Avatar
Franck
Joe le Bonka avait prétendu :

Franck wrote:
Joe le Bonka vient de nous annoncer :
Bonsoir à tous.
J'essaie de m'initier aux joies de la notion d'objet en java.
Je croyais avoir + ou - compris, mais ....

l'immatriculation d'une voiture est distincte pour chaque voiture,

donc cet attribut ne doit pas etre déclaré "static"


J'ai donc remplacé Static par un 'Public' dans ma classe de description
d'objet Voiture.


Rien a voir, il faut remplacer "static" par ... rien, il suffit de
l'enlever
Le "public" s'oppose lui aux notions "private" ou "protected"

Mais maintenant, j'ai une erreur java.lang.NullPointerException dés que
j'essaie d'afficher l'élément immatriculation d'un des éléments du tableau
d'objets :

Bah oui, il faut que tu initialises chaque objet de ton tableau

sinon il sont "null"

Voiture[] tab=new Voiture[8];
tab[0] = new Voiture();
tab[0].immatriculation = "AZERTY";
tab[1] = new Voiture();
tab[1].immatriculation = "QWERTY";

etc ...

Bonne chance ;-)
@+

--
mailto:
E2 ici : http://www.cnbt-cdpn.org



Avatar
Joe le Bonka
Franck wrote:
Joe le Bonka avait prétendu :

J'ai donc remplacé Static par un 'Public' dans ma classe de
description d'objet Voiture.


Rien a voir, il faut remplacer "static" par ... rien, il suffit de
l'enlever
Le "public" s'oppose lui aux notions "private" ou "protected"

Mais maintenant, j'ai une erreur java.lang.NullPointerException dés
que j'essaie d'afficher l'élément immatriculation d'un des éléments
du tableau d'objets :

Bah oui, il faut que tu initialises chaque objet de ton tableau

sinon il sont "null"

Voiture[] tab=new Voiture[8];
tab[0] = new Voiture();
tab[0].immatriculation = "AZERTY";
tab[1] = new Voiture();
tab[1].immatriculation = "QWERTY";


Merci encore. Cette fois-ci, c'est clair.
Je croyais que la déclaration et le dimensionnenement du tableau suffisaient
pour instancier les objets du tableau.

Bonne chance ;-)
Va en falloir ! 8-|