POO - problème avec un constructeur et un void
Bonjour tout le monde
Alors pour commencer j'ai deux classes
classe FamilleAnimaux
Code:
1 2 3 4 5 6 7 8 9 10 11
| class FamilleAnimaux {
private NF : string = "";
public set NomFamille(NomFamille : string) {
this.NF = NomFamille;
}
public get NomFamille(): string {
return this.NF;
}
} |
et classe Animal
Code:
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
| export class Animal extends FamilleAnimaux {
private Deplacement: string = "";
private voix: boolean = true;
private Couverture: string = "";
constructor (){
super();
this.voix = true;
if (this.NomFamille = "") {
throw new Error("Vous devez renseigner cet attribut.")
}
}
public set SeDeplace(sd : string) {
this.Deplacement = sd;
}
public set EmetUneVoix(v : boolean) {
this.voix = v;
}
public set Couvert(c : string) {
this.Couverture = c;
}
public get Couvert() {
return this.Couverture;
}
public son(nbr: any): void {
for (let i = 0; i <= nbr; i++) {
console.log("aucun!");
}
}
} |
à l'exécution du code qui suit
Code:
1 2 3 4 5 6 7 8 9 10
| A = new Animal();
// nom de famille
public nf: string = this.A.NomFamille="";
// comment se déplace-t-il ?
public sd : string = this.A.SeDeplace="Marchant";
// a-t-il une voix ou pas ?
v : boolean = this.A.EmetUneVoix;
public vx = this.v ? "Cet animal a une voix" : "cet animal n'a pas de voix.";
// emet des sons
this.A.son(3); |
j'ai quelques problèmes :
Premier problème
même si
Code:
private voix: boolean = true;
à l'exécution de
Code:
v : boolean = this.A.EmetUneVoix;
j'ai le message
Citation:
"cet animal n'a pas de voix."
alors qu'à mon sens et puisque voix est par défaut true je dois avoir le message
Citation:
Cet animal a une voix
Deuxième problème
l'autre problème est que que mon constructeur n'exécute jamais la partie throw même si NomFamille !
Troisimè problème
le dernier problème est que son provoque une erreur de compilation pourtant il me parait que la fonction est typiquement correct
J'attire votre attention que c'est mon premier essai donc possible que j'ai dis un tas de bétises.
merci par avance.