Überschreiben von Elternklasse

Status
Nicht offen für weitere Antworten.

Wusaa

Aktives Mitglied
Hallo,

ich muss als Hausarbeit mal wieder ne Aufgabe bearbeiten, komme aber absolut nich vorwärts weil ich nicht weiß wie in da rangehen soll.

Die Aufgabe lautet:

1.Bitte implementieren Sie die Klasse „MemberOfUniversity“, entsprechend den Vorgaben aus der Vorlesung.
Diese Klasse überschreibt die Methode „void print(String)“ der Elternklasse. Benutzen Sie hierbei „super“.
Die Klasse „Person“ aus der Vorlesung können Sie hierbei benutzen.

2.Implementieren Sie für die Klasse einen Konstruktor, der alle Attribute, auch die ererbten, belegt (Reihenfolge: Name, Geburtsjahr, Module). Benutzen Sie hierbei „super“.



Das hier is die vorgegebene Klasse "Member Of University":

package uniAdministration;
public class MemberOfUniversity extends Person implements MemberOfUniversityIF {

private ModuleIF[] modules = null;

public MemberOfUniversity(String name, int birth, ModuleIF[] modules) {

}
public ModuleIF[] getModules() {

}


}



Und das ist die Klasse "Person":

package uniAdministration;
import java.util.*; // for calendar

public class Person implements PersonIF{

// attributes
private int yearOfBirth = 0;
private String name="ABC";

// Konstruktor
public Person (int year,String name ){
this.name = name;
yearOfBirth = year;

}

public String getName() {
return this.name;
}


public void setName(String name) {
this.name = name;
}


public int getYearOfBirth() {
return this.yearOfBirth;
}


public void setYearOfBirth(int yearOfBirth) {
this.yearOfBirth = yearOfBirth;
}

public int getCurrentYear() {
GregorianCalendar calender = new GregorianCalendar();
return calender.get(Calendar.YEAR);
}

public int getAge() {
int currentY = getCurrentYear();
return (currentY - yearOfBirth) ;
}

public void printName(String text) {
System.out.println(text + " name is: " + this.getName() );
System.out.println(); // new Line
}

public void print(String text) {
System.out.println("Person Object: " + text);
System.out.println("this.getName() is: " +this.getName() );
System.out.println("this.getYearOfBirth() is:" +this.getYearOfBirth() );
System.out.println("this.getCurrentYear() is:" +this.getCurrentYear() );
System.out.println("this.getAge() is: " +this.getAge() );
System.out.println();
}
}




Wäre echt dankbar wenn mir jemand weiterhelfen kann weil ich das am donnerstag abgeben muss und wie schon erwähnt nicht weiterkomme.

MfG
 
S

SlaterB

Gast
'nicht weiterkommen' ist keine korrekte Problembeschreibung,

das ist nun mal eine Grundlagenaufgabe, leichter kann man sie gar nicht formulieren,

fange einfach mit
> Diese Klasse überschreibt die Methode „void print(String)“ der Elternklasse.
an

wenn du nicht weißt, was dieser Satz heißt/ dir sagt,
dann hast du Java noch nicht verstanden,
dann ist es für dich sinnlos irgendwie weiterzumachen,

und noch sinnloser ist es, wenn jemand anders dafür noch Zeit ohne Erfolgsziel aufwendet ;)
 

miss noname

Mitglied
Da dir anscheinend hier niemand helfen will, was ich durchaus verstehen kann.
Möchte ich dir zumindest eine sehr, sehr kleine Hilfe geben.


package uniAdministration;

public class MemberOfUniversity extends Person implements MemberOfUniversityIF {

private ModuleIF[] modules = null;

public MemberOfUniversity(String name, int birth, ModuleIF[] modules) {
super(birth, name);

}

public ModuleIF[] getModules() {
return null;

}

public void print(String s) {

}

}
 

Wusaa

Aktives Mitglied
Ist eigentlich das was unter "public class MemberOfUniversity extends Person implements MemberOfUniversityIF { " kommt der Konstruktor?

Ich habe die Aufgabe jetzt so vervollständigt, is das soweit korrekt, und beantwortet es alle Fragen?



package uniAdministration;

public class MemberOfUniversity extends Person implements MemberOfUniversityIF {

private ModuleIF[] modules = null;

// Konstruktor
public MemberOfUniversity (String name,int birth, ModuleIF[]modules) {
super(birth, name);


}

public ModuleIF[] getModules() {
return null;
}

public void setModules(ModuleIF[] modules) {

}

public void print(String text) {
super.print(text); //use print() of Person
System.out.println(" this.modules are: ");
for (int i=0; i<this.modules.length;i++) {
(this.getModules() ).print

("modules["+i+"]of this member is: "); // use print of Module

}


}


}
 
S

SlaterB

Gast
den Konstruktor hast du richtig erkannt, ja

> Implementieren Sie für die Klasse einen Konstruktor, der alle Attribute, auch die ererbten, belegt (Reihenfolge: Name, Geburtsjahr, Module).

die Module ignorierst du in deinem Konstruktor,
speichere den Parameter in der Exemplarvariable!

genauso sind setModule und getModule bisher Operationen ohne sinnvolle Funktion,
was meinst du warum die da sind?, doch wohl damit da was passiert ;)

--------

solange die Exemplarvariable modules null ist,
dürfe es in der print-Operation immer zu einer NullpointerException kommen,
hast du die nie einmal ausgeführt?

wenn modules im Konstruktor ordentlich gespeichert ist,
dann gibts da aber keinen weiteren Handlungsbedarf,
dann sollte das gehen
(falls nicht jemand 'null' als Parameter modules im Konstruktor übergibt)
 

Wusaa

Aktives Mitglied
Ich weiß eben nicht was ich unter in den Rumpf der Setter und Getter Methoden schreiben soll und was in den Konstruktor alles rein muss.
Sorry dass ich den "Sinn" der sprache noch net ganz kapieren und die verschiedenen sachen noch nicht gleich auf anhieb schnalle aber ich lern die sprache erst seit ein paar wochen und komm net so gut klar. Drum fänd ichs halt nett wenn mir jemand mal die Aufgabe lösen würde, was jetzt nicht heißen soll dass ich zufaul wäre die selber zu machen, denn ich hab mich sehr wohl einige zeit damit beschäftigt bin aber nicht weitergekommen bzw wusste nicht wie ich da ran soll.
 
S

SlaterB

Gast
tja, da muss man dir dann bei allem nötigen Respekt völlige Blödheit unterstellen,
sorry ;)

du musst doch bestimmt schon zig Java-Beispiele gesehen haben,
eins hast du sogar gepostet, die Oberklasse Person,
unter anderem mit:
Code:
public class Person implements PersonIF{

  // attributes
  private String name="ABC"; 

  // Konstruktor
  public Person (int year,String name ){
    this.name = name; // HIER!
  } 

  public String getName() {
    return this.name; // HIER!
  }

  public void setName(String name) {
     this.name = name; // HIER!
  }

das Schema (welches einfacher nicht sein könnte) musst du nur 1:1 kopieren:

Code:
public class MemberOfUniversity extends Person implements MemberOfUniversityIF {

private ModuleIF[] modules = null;

  // Konstruktor
  public MemberOfUniversity (String name,int birth, ModuleIF[]modules) {
    super(birth, name);
    this.modules = modules; // HIER!
  } 

   public ModuleIF[] getModules() {
     return modules; // HIER!
  }

  public void setModules(ModuleIF[] modules) {
     this.modules = modules; // HIER!
  }

}
war das schwer?
 

Wusaa

Aktives Mitglied
es kann halt nicht jeder so ein masterbrain sein wie du. Aber trotzdem Danke für die Hilfe.
 

Wusaa

Aktives Mitglied
Nun muss ich analog zu "MemberOfUniversity" das gleiche für 3 neue Klassen "Studen" "Professor" "Employee" machen.

Ich hab mal mit Student angenfangen:

Code:
package uniAdministration;

public class Student extends Person implements StudentIF{
//Attribute
	private boolean stipendium = 0;
	
//Konstruktor	
	public Student (String name, int year, boolean stipendium) {
		super (birth, name);
		this.stipendium = stipendium;
		
		
	}
	
	
	
	public boolean isStipendium(){
		return stipendium;
		
	}

	public void setStipendium(boolean stipendium){
		this.stipendium = stipendium;
		
	}
	
	
	public void print(String text){
		
			super.print(text);								//use print() of Person
			System.out.println(" this.modules are: ");
			for (int i=0; i<this.modules.length;i++) {
				(this.getModules() [i]).print
				
				("modules["+i+"]of this member is: ");		// use print of Module
				
	}
	
}

Weiß nun aber nicht warum in Eclipse das Wort "Stipendium" nicht blau angezeigt wird wie es in der "MemberOfUniversity" Klasse bei "modules" war?! Hab ich da was vergessen?

Ich komm auch nicht dahinter wie ich die Print Methode ganz unten auf "Studen" anpassen soll?
 
S

SlaterB

Gast
und das modules muss aus print raus,
da musst du dann die neue boolean-Variable zusammen mit einem passenden Text ausgeben,
siehe print-Operation in Person
 

Wusaa

Aktives Mitglied
habe es jetzt mal so (siehe unten) geändert. Im Konstruktor wird bei "super (birth, name);" ein Fehler bei "birth" angezeigt.
Außerdem muss ich noch eine "TestmainStundent" anlegen, aber weiß nicht was alles in die reinsoll. Ich weiß nur dass das Student-Objekt mindestens 2 Module haben muss. Aber wie soll ich dass in die Testmain bringen?


Code:
package uniAdministration;

public class Student extends Person implements StudentIF{
//Attribute
   private boolean stipendium = false;
   
//Konstruktor   
   public Student (String name, int year, boolean stipendium) {
      super (birth, name);
      this.stipendium = stipendium;
      
      
   }
   
   
   
   public boolean isStipendium(){
      return stipendium;
      
   }

   public void setStipendium(boolean stipendium){
      this.stipendium = stipendium;
      
   }
   
   
   public void print(String text){
      
         super.print(text);                        //use print() of Person
         System.out.println(" this.modules are: ");
         for (int i=0; i<this.stipendium.length;i++) {
            (this.getModules() [i]).print
            
            ("stipendium["+i+"]this member has a stipendium: ");      // use print of Module
            
         }
   }
}
 
S

SlaterB

Gast
bei
super (angela merkel, name);
würde genauso ein Fehler angezeigt, 'birth' ist nunmal nirgendwo definiert,
was soll denn da überhaupt passieren, was bezweckst du mit der völlig neuen Variable 'birth'?
oder ist gar 'year' gemeint?
year schreibt man mit einem y, dann ein e, dann ein a und dann ein r ;)
sorry wiederum ;)

modules muss immer noch aus der print-Operation raus,

wahrscheinlich soll übrigens Student von MemberOfUniversity erben,
dann müsste auch modules als Parameter in den Konstruktor rein und an die Oberklasse MemberOfUniversity übergeben werden


-----

naja, ich gebe nun auf, wenn dir solche essentiellen Grundlagen fehlen,
dann wäre das Erstellen einer TestmainStundent ja ein riesiges Unterfangen

für sowas brauchst du einen minimal erfahrenen Java-Programmierer,
der neben dir sitzt und dir alle 2 Min. einen Tipp gibt,
sonst kommst du ja nicht voran
 

Wusaa

Aktives Mitglied
Exakt diesen bräuchte ich. Da aber niemand nebenmir sitzt und diese tipps gibt frage ich nunmal in diesem forum nach. Aber dir dürfte ja schon klar sein dass ich in der tat noch nicht wirklich mit der java programmierung vertraut bin.
 

Wusaa

Aktives Mitglied
Da es ja für dich kein Problem darstellt diese Anfänger aufgabe zu lösen kannst du mir ja sicher sagen wie man die Testmain erstellt bzw wie diese print-Methoden richtig lauten muss.

Code:
   public void print(String text){
      
         super.print(text);                        //use print() of Person
         System.out.println(" this.stipendium is: ");
         for (int i=0; i<this.stipendium.length;i++) {
             (this.getModules() [i]).print
            
             ("stipendium["+i+"]this member has a stipendium: ");      // use print of Module
            
         }
   }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
B Überschreiben und Überladen Java Basics - Anfänger-Themen 8
B Überschreiben und verdecken Java Basics - Anfänger-Themen 1
O Überschreiben/Überladen Methode Java Basics - Anfänger-Themen 6
R Schreibzugriff bei jedem Überschreiben? Java Basics - Anfänger-Themen 6
C Überschreiben von Methoden Java Basics - Anfänger-Themen 3
H Polymorphismus-Überschreiben Java Basics - Anfänger-Themen 1
F Überschreiben nach einer Vererbung Java Basics - Anfänger-Themen 2
A HashCode Überschreiben Java Basics - Anfänger-Themen 2
K Überschreiben einer "super.super"-Methode Java Basics - Anfänger-Themen 6
K Überschreiben und Überladen Java Basics - Anfänger-Themen 3
M Überschreiben von JPanels funktioniert nicht! Java Basics - Anfänger-Themen 9
buntuswalus OOP Überschreiben von Eigenschaften Java Basics - Anfänger-Themen 8
T Polymorphie:Überschreiben der Methode klappt nicht Java Basics - Anfänger-Themen 4
K Überladen und Überschreiben von Methoden Java Basics - Anfänger-Themen 3
0 Überschreiben von pai*tBackground() Java Basics - Anfänger-Themen 2
G Überschreiben einer Variable umgehen Java Basics - Anfänger-Themen 6
G Überschreiben von Methoden beim Casting Java Basics - Anfänger-Themen 7
O Überschreiben erzwingen Java Basics - Anfänger-Themen 6
M JFileChooser Überschreiben Dialog? Java Basics - Anfänger-Themen 2
G Frage zum Überschreiben einer Klasse Java Basics - Anfänger-Themen 6
W Überschreiben und Methodenaufruf Java Basics - Anfänger-Themen 3
D Überschreiben Java Basics - Anfänger-Themen 9
M Vererbung Ein JLabel einer Elternklasse anzeigen Java Basics - Anfänger-Themen 8
H Werte der Kindklasse aus Elternklasse übernehmen,wie? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben