J
Javastudent
Gast
Hallo zusammen
Ich habe eine kurze Frage:
Eine Aufgabe einer alten Prüfung:
Ich habe kurz im Forum gesucht, aber nichts gefunden
Es gibt eine class Ausweis mit diversen Subclasses, so wie unten dargestellt... Viel Code :S
Dazu muss man eine Verwaltung schreiben, die Aufgabe ist eigentlich ganz einfach
1) Alle gültigen Ausweise zählen und den Wert zurückgeben
2) Alle Ausweise nach verschiedenen Arten auszählen und als Array zurückgeben
3) Alle Werte, welche dem Konstruktor übergeben werden in eine Zeile schreiben
Ich habe es hier mal programmiert.
Die Abfrage, welcher class der jeweilige Ausweis angehört habe ich über den Befehl instanceof gemacht. Nur bei der dritten Aufgabe funktionert das nicht. Der Compiler meldet, dass er die Variabeln, welche nur in einer Subclass vorkommen nicht finden kann. Wie muss ich die Abfrage ändern, dass es funktioniert???
Vielen Dank für eure Hilfe
Gruss
Ich habe eine kurze Frage:
Eine Aufgabe einer alten Prüfung:
Ich habe kurz im Forum gesucht, aber nichts gefunden
Es gibt eine class Ausweis mit diversen Subclasses, so wie unten dargestellt... Viel Code :S
Java:
class Ausweis {
protected int nummer; // Nummer des Ausweises
protected String inhaber; // Inhaber des Ausweises
protected String ablaufdatum; // Ablaufdatum des Ausweises
public Ausweis(int nummer, String inhaber, String ablaufdatum) {
this.nummer = nummer;
this.inhaber = inhaber;
this.ablaufdatum = ablaufdatum;
}
public int getNummer() {return nummer;}
public String getInhaber() {return inhaber;}
public String getAblaufdatum() {return ablaufdatum;}
}
class Identitaetskarte extends Ausweis {
public int groesse; // Groesse des Inhabers
public String buergerort; // Buergerort des Inhabers
public Identitaetskarte(int nummer, String inhaber, String ablaufdatum, int groesse, String buergerort) {
super(nummer, inhaber, ablaufdatum);
this.groesse = groesse;
this.buergerort = buergerort;
}
public int getGroesse() {return groesse;}
public String getBuergerort() {return buergerort;}
}
class Pass extends Identitaetskarte {
public String fingerabdruck; // Digitaler Fingerabdruck des Inhabers
public Pass(int nummer, String inhaber, String ablaufdatum, int groesse, String buergerort, String fingerabdruck) {
super(nummer, inhaber, ablaufdatum, groesse, buergerort);
this.fingerabdruck = fingerabdruck;
}
public String getFingerabdruck() {return fingerabdruck;}
}
class Fahrausweis extends Ausweis {
public String kategorien; // Fahrzeugkatogerien, die der Inhaber lenken darf
public Fahrausweis(int nummer, String inhaber, String ablaufdatum, String kategorien) {
super(nummer, inhaber, ablaufdatum);
this.kategorien = kategorien;
}
public String getKategorien() {return kategorien;}
}
Dazu muss man eine Verwaltung schreiben, die Aufgabe ist eigentlich ganz einfach
1) Alle gültigen Ausweise zählen und den Wert zurückgeben
2) Alle Ausweise nach verschiedenen Arten auszählen und als Array zurückgeben
3) Alle Werte, welche dem Konstruktor übergeben werden in eine Zeile schreiben
Ich habe es hier mal programmiert.
Java:
public class AusweisVerwaltung {
private Ausweis[] ausweise;
public AusweisVerwaltung() {
ausweise = new Ausweis[100];
// Erzeugen diverser Ausweise (es ist nur eine Auswahl angegeben)
ausweise[0] = new Identitaetskarte(1234567, "Max Meier", "10.05.2010", 178, "Chur");
ausweise[7] = new Pass(76596678, "Eva Mueller", "31.12.2008", 169, "Zuerich", "10010110");
ausweise[16] = new Fahrausweis(5126578, "Ida Fuchs", "20.03.2015", "A B D1");
// Verwendung der von Ihnen zu implementierenden Methoden
System.out.println("Total Ausweise: " + countAusweise(ausweise));
int[] countResult = countAusweisTyp(ausweise);
System.out.println("Identitaetskarten: "+countResult[0]+", Paesse: "+countResult[1]+", Fahrausweise: "+countResult[2]);
printPaesse(ausweise);
}
public static void main(String args[]) {
AusweisVerwaltung av = new AusweisVerwaltung();
}
/* Zählt die Anzahl Ausweise im Array ausweise */
public int countAusweise(Ausweis[] ausweise) {
int anzahl = 0;
for (int i=0; i<ausweise.length; i++){
if (ausweise[i] != null) {
anzahl++;
}
}
return anzahl;
}
/* Zählt die Anzahl Ausweise im Array ausweise nach Ausweis-Typ */
public int[] countAusweisTyp(Ausweis[] ausweise) {
int[] anzahl = new int[3];
for (int i=0; i<ausweise.length; i++){
if (ausweise[i] != null && ausweise[i] instanceof Identitaetskarte) {
if (ausweise[i] instanceof Pass){
anzahl[1]++;
} else {
anzahl[0]++;
}
}
else if(ausweise[i] != null && ausweise[i] instanceof Fahrausweis){
anzahl[2]++;
}
}
return anzahl;
}
/* Gibt die Paesse im Array ausweise auf der Konsole aus */
public void printPaesse(Ausweis[] ausweise) {
for (int i=0; i<ausweise.length; i++){
if (ausweise[i] != null && ausweise[i] instanceof Identitaetskarte) {
if (ausweise[i] instanceof Pass){
System.out.println(nummer+", "+inhaber+", "+ablaufdatum+", "+groesse+", "+buergerort+", "+fingerabdruck);
} else {
System.out.println(nummer+", "+inhaber+", "+ablaufdatum+", "+groesse+", "+buergerort);
}
}
else if(ausweise[i] != null && ausweise[i] instanceof Fahrausweis){
System.out.println(nummer+", "+inhaber+", "+ablaufdatum+", "+kategorien);
}
}
}
}
Die Abfrage, welcher class der jeweilige Ausweis angehört habe ich über den Befehl instanceof gemacht. Nur bei der dritten Aufgabe funktionert das nicht. Der Compiler meldet, dass er die Variabeln, welche nur in einer Subclass vorkommen nicht finden kann. Wie muss ich die Abfrage ändern, dass es funktioniert???
Vielen Dank für eure Hilfe
Gruss