Zum Inhalt springen

Instanceof Befehl und das ausgeben einzelner Komponenten?


Skylark

Empfohlene Beiträge

Folgende Dinge sind gegeben:

package MitarbeiterArray;


public class MitarbeiterArrayTest 

{

  public static void main(String[] args)

  {

    Mitarbeiter [] m = new Mitarbeiter [5];


    m[0] = new Arbeiter ("Heinrich", 2345, "AF1", 12.0, 8);

    m[1]= new Angestellter ("Friedrich", 3456, "AF2", 2000.0);

    m[2]= new Verkaeufer ("Meier", 2346, "OP4", 13.0, 9, 20000, 2.0);

    m[3] = new Arbeiter ("Keller", 7354, "KR9", 11.0, 9);

    m[4]= new Angestellter ("Schmidt", 2578, "SR1", 4000.0);


   //Aufgabe 3 

   // for(int i=0; i<m.length; i++)

   //{ 

   //   

   //   System.out.println();  

   //   m[i].display();

   // }


   //Aufgabe 4 

   // for(int i=0; i<m.length; i++)

   // { 

   //  if(m[i] instanceof Angestellter)

   //   {

   //   System.out.println();  

   //   m[i].display();

   //   }

   // }


    //Aufgabe 5 


    //for(int i=0; i<m.length; i++)

    //{ 

    // if(m[i] instanceof Arbeiter && !(m[i] instanceof Verkaeufer))

    //  {  

    //  System.out.println();  

    //  m[i].display();

    //  }  

    //}


    //Aufgabe 6 a)

    //for(int i=0; i<m.length; i++)

    // { 

    // if(m[i] instanceof Verkaeufer)

    //  {  

    //  System.out.println(m[i].getName());

    // 

    //  }  

    //}


    //Aufgabe 6 

    //for(int i=0; i<m.length; i++)

    // { 

    // if(m[i] instanceof Angestellter)

    // {  

    //   Angestellter a = (Angestellter) m[i];

    //   System.out.println(a.getVerdienst());

    // }

    // }  


}  [/code]




[code]package MitarbeiterArray; public class Mitarbeiter { private String name; private int mitarbeiternummer; private String abteilungsbezeichnung; public Mitarbeiter(String name, int mitarbeiternummer, String abteilungsbezeichnung) { setName(name); setMitarbeiternummer (mitarbeiternummer); setAbteilungsbezeichnung(abteilungsbezeichnung); } public void setName (String name) { this.name=name; } public String getName() { return name; } public void setMitarbeiternummer (int mitarbeiternummer) { this.mitarbeiternummer=mitarbeiternummer; } public int getMitarbeiternummer() { return mitarbeiternummer; } public void setAbteilungsbezeichnung (String abteilungsbezeichnung) { this.abteilungsbezeichnung=abteilungsbezeichnung; } public String getAbteilungsbezeichnung() { return abteilungsbezeichnung; } public void display() { System.out.println("Mitarbeiter " + name); System.out.println("Mitarbeiternummer: " + mitarbeiternummer); System.out.println("Abteilungsbezeichnung: " + abteilungsbezeichnung); } }
package MitarbeiterArray;


public class Arbeiter extends Mitarbeiter

{


  private double stundenlohn;

  private int anzahlstd;


  public Arbeiter(String name, int mitarbeiternummer, String abteilungsbezeichnung,double stundenlohn, int anzahlstd)

  {

    super(name, mitarbeiternummer, abteilungsbezeichnung);

    setStundenlohn(stundenlohn);

    setAnzahlstd(anzahlstd);


  }        


  public void setStundenlohn(double stundenlohn)

  {

    this.stundenlohn=stundenlohn;

  }


  public double getStundenlohn()

  {

    return stundenlohn;

  }   


  public void setAnzahlstd(int anzahlstd)

  {

    this.anzahlstd = anzahlstd;

  }


  public int getAnzahlstd()

  {

    return anzahlstd;

  }


  @Override

  public void display()

  {

    super.display();

    System.out.println("Stundenlohn: " + stundenlohn + "€" + " Stunden " + anzahlstd);

    System.out.println("Monatsgehalt: "+ getVerdienst() +" €");



  }


  public double getVerdienst()

  {

    double geld;

    geld=stundenlohn*anzahlstd*30;

    return geld;

  }        



}
package MitarbeiterArray;


public class Angestellter extends Mitarbeiter

{

private double monatsgehalt;


public Angestellter(String name, int mitarbeiternummer, String abteilungsbezeichnung, double monatsgehalt)

{

  super(name, mitarbeiternummer, abteilungsbezeichnung);

  setMonatsgehalt (monatsgehalt);


}  


public void setMonatsgehalt(double monatsgehalt)

{

  this.monatsgehalt=monatsgehalt;

} 


public double getMonatsgehalt()

{

  return monatsgehalt;

} 


@Override

public void display()

{

  super.display();

  System.out.println("Monatsgehalt: " + getVerdienst());


} 


public double getVerdienst()

{

 return monatsgehalt; 

}       





}

package MitarbeiterArray;


public class Verkaeufer extends Arbeiter 

{

  private double umsatz;

  private double provSatz;



  public Verkaeufer(String name, int mitarbeiternummer, String abteilungsbezeichnung,double stundenlohn, int anzahlstd, double umsatz, double provSatz)

  {

    super(name, mitarbeiternummer, abteilungsbezeichnung, stundenlohn, anzahlstd);

    setUmsatz(umsatz);

    setProvSatz(provSatz);



  } 


  public void setUmsatz(double umsatz)

  {

    this.umsatz = umsatz;

  }


  public double getUmsatz()

  {

    return umsatz;

  }


  public void setProvSatz(double provSatz)

  {


    this.provSatz = provSatz;

  }


  public double getProvSatz()

  {

    return provSatz;

  }


public double getProvision()

  {

    double geld;

    geld=getVerdienst()+(umsatz*(provSatz/100));

    return geld;

  }   


  @Override

  public void display()

{

  super.display();

  System.out.println("Lohn: " + getProvision());


}




}

Die Ausgeblendeten Ausgaben zeigen, wie einzelne Komponenten des Arrays ausgegeben werden, wie z.B. nur die Arbeiter, oder nur der Verdienst der Angestellten.

Nun zu meinem Problem:

Wie programmiere ich jetzt eine Ausgabe, in der z.B. nur das Durchschnittsgehalt von z.B. zwei Angestellten ausgegeben werden?

Muss ich das Durchschnittsgehalt hier extra in eine Methode schreiben, oder funktioniert dies auch einfach in der Instanceof Abfrage? Wenn ich eine extra Methode schreiben muss, wie genau füge ich diese dann bei instanceof ein? Ich blicke da irgendwie trotz Unterlagen nicht mehr durch.

Bearbeitet von Skylark
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein anderes Problem ist z.B. auch , dass wir vom instanceof erst heute zum ersten Mal gehört haben. In den Aufzeichnung steht eben z.B.:

if(m instanceof Angestellter)

Mehr wurde dazu nicht gesagt. Ich hatte absolut keinen Schimmer, dass ich in diesem If auch noch ein && setzen kann. Habe zwei Stunden an dieser Aufgabe gesessen und kam dann nur durch Google auf die Lösung, ohne würde ich jetzt noch sitzen.

if(m instanceof Arbeiter && !(m instanceof Verkaeufer)) <- ich wäre im Leben nicht drauf gekommen, dass man nur mit einem "!" verneinen kann und das man den Rest dann komplett in Klammern schreiben muss.

In zwei Wochen muss ich das Ganze wieder beherrschen. Hab schon Schlafprobleme deswegen. Keine Ahnung, wie ich das alles bis dahin noch begreifen soll.

Ich weiß nicht, ob mein Lernansatz überhaupt der Richtige ist. Aufgrund der Unterlagen konnte ich bisher nie auch nur eine Aufgabe lösen. Meine Lernweise sieht so aus, dass ich zuerst eine gute Musterlösung pro Aufgabenstellung brauche. Diese wiederhole ich dann so oft, bis ich genau weiß, was diese tut und wie sie mit der Aufgabenstellung in Verbindung steht. Irgendwann kann ich es dann auch bei anderen Aufgaben (Wenn sich nichts Großartiges ändert). Jedoch vergesse ich fast alles, was ich davor gelernt hatte bzw. bringe dann alles durcheinander und weiß am Ende gar nichts mehr. Dinge, die ich zuvor einwandfrei beherrscht habe, machen erneut Probleme. Muss es also immer wieder von Vorne lernen und es kommen noch die neuen Sachen dazu.

Ich habe bisher das Ganze mt dem Instanceof und diesen Refernezvariablen noch nicht umrissen und morgen kommt schon wieder das nächste Thema dazu.

Ich frage mich gerade ernsthaft, ob man für eine IHK Abschlussprüfung als FISI wirklich diese komplette Java Sache verstehen muss, oder ob es ausreicht ein bisschen Struktogramme zu beherrschen.

Momentan hätte ich nämlich absolut keine Ahnung, wie ich sowas in ein Struktogramm einzeichnen könnte, ohne dabei explizit Javacode zu verwenden. Und genau darauf kommts in der IHK Abschlussprüfung doch eigentlich an :-/

Bearbeitet von Skylark
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie programmiere ich jetzt eine Ausgabe, in der z.B. nur das Durchschnittsgehalt von z.B. zwei Angestellten ausgegeben werden?

Gegenfrage: Wie ist der Durchschnitt definiert? Sprich wenn Du 200 verschiedene Werte bekommst, wie berechnet sich der Durchschnitt.

Muss ich das Durchschnittsgehalt hier extra in eine Methode schreiben, oder funktioniert dies auch einfach in der Instanceof Abfrage?

Kann man, muss man aber nicht

Wenn ich eine extra Methode schreiben muss, wie genau füge ich diese dann bei instanceof ein? Ich blicke da irgendwie trotz Unterlagen nicht mehr durch. [...] Ich habe bisher das Ganze mt dem Instanceof und diesen Refernezvariablen noch nicht umrissen und morgen kommt schon wieder das nächste Thema dazu.

Du hast nicht verstanden was "instanceof" macht. Du solltest bevor Du überhaupt an die Problemlösung gehst sicher (!) verstanden haben, was eine Referenz, Instanz, Objekt & Klasse ist. Ohne dieses Wissen sicher zu beherrschen wirst Du kaum weiter kommen. Das ist Grundvorraussetzung

Mehr wurde dazu nicht gesagt. Ich hatte absolut keinen Schimmer, dass ich in diesem If auch noch ein && setzen kann.

Auch das ist Grundvoraussetzungen wie boolsche Ausdrücke (bzw. Conditions) definiert werden, siehe Boolescher Operator Das musst Du zwingend sicher beherrschen

Ich weiß nicht, ob mein Lernansatz überhaupt der Richtige ist. Aufgrund der Unterlagen konnte ich bisher nie auch nur eine Aufgabe lösen. Meine Lernweise sieht so aus, dass ich zuerst eine gute Musterlösung pro Aufgabenstellung brauche. Diese wiederhole ich dann so oft, bis ich genau weiß, was diese tut und wie sie mit der Aufgabenstellung in Verbindung steht. Irgendwann kann ich es dann auch bei anderen Aufgaben (Wenn sich nichts Großartiges ändert).

Nein, Du lernst nur auswendig, d.h. Transferdenken kannst Du nicht leisten, aber das brauchst Du zwingend. Du musst verstehen, was jeder einzelne Befehl inhaltlich bedeutet und wie sich daraus die Gesamtlösung ergibt. Bei auswendig gelernten wirst Du niemals mehr als das lösen können, was Du eben auswendig gelernt hast.

Das was man auswendig können muss, sind die Befehle, aber zusätzlich muss man wissen was sie machen, sprich die Funktionsweise verstanden haben.

Jedoch vergesse ich fast alles, was ich davor gelernt hatte bzw. bringe dann alles durcheinander und weiß am Ende gar nichts mehr. Dinge, die ich zuvor einwandfrei beherrscht habe, machen erneut Probleme. Muss es also immer wieder von Vorne lernen und es kommen noch die neuen Sachen dazu.

Dann musst Du wohl mehr üben und lernen.

Momentan hätte ich nämlich absolut keine Ahnung, wie ich sowas in ein Struktogramm einzeichnen könnte, ohne dabei explizit Javacode zu verwenden.

Man braucht keinen Javacode um ein Struktogramm zu verstehen bzw. entwerfen zu können. Im Normalfall wird die Darstellung mittels Diagramm entworfen (wobei Struktogramme nicht mehr so die große Rolle spielen), bevor man eine Zeile Code schreibt.

Um ein Diagramm entwerfen zu können, musst Du das Problem erkennen können und vor allem musst Du dafür einen Lösungsweg skizziert haben. Anhand dieses Lösungsweges wird das Diagramm gezeichnet und dann dieses in Quellcode übersetzt.

Ich sehe sprichwörtlich bei Deinen Problemschilderungen, dass Du immer noch versuchst eine Lösung durch auswendig gelerntes zu entwickeln und das funktioniert nicht. Letztendlich sollte Dir klar sein, dass Du damit nicht weiter kommst und eben Deine Lernmethodik extrem schnell verändern musst (wie wurde Dir auch schon mehrfach gesagt), wenn Du eben die Prüfung bestehen willst (oder Du beendest diese berufliche Richtung).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich frage mich gerade ernsthaft, ob man für eine IHK Abschlussprüfung als FISI wirklich diese komplette Java Sache verstehen muss, oder ob es ausreicht ein bisschen Struktogramme zu beherrschen.

Also bei mir in der Klasse haben die FISIs Noten schlechter als 4 in SAE (wir machen auch Java). Wenn man die Prüfungen der letzten Jahre anschaut, kommt bei den Anwendungsentwicklern zwar auch Subnetting und Netzwerkfragen dran, bei den Systemintegratoren aber keine Fragen zu irgendwelchen Programmiersprachen.

Selbst für die Anwendungsentwickler reicht es aus, nicht programmieren zu können sondern nur Struktorgramme zu verstehen und schrieben zu können. Es wird nicht nach einer bestimmten Sprache gefragt. Wie denn auch, wenn jede Berufsschule andere Sprachen beibringt. Struktogramme reichen also vollkommen aus.

Zum Programmieren braucht man gewisse Denkmuster, die eben nicht jeder beherrscht. Es gibt hoch intelligente Leute, die das Programmieren einfach nicht in den Kopf kriegen. Dazu im Gegensatz bin ich zB sau dumm und kann garnichts. Aber Programmieren ist einfach mein Ding. Also mach dir nichts draus, wenn du Schwierigkeiten damit hast. Wenn du jetzt Anwendungsentwickler wärst, würde ich sagen, dass es vielleicht nicht die glücklichste Berufswahl ist, aber da du ja Fisi bist hast du ganz andere Herausforderungen die du meistern musst. Und dafür brauchst du sicherlich kein Java ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das beruhig mich jetzt etwas. Hatte bisher in den Java Prüfungen immer zwischen 75 und 79 Punkten. Habe aber allgemein das Gefühl, im Grunde gar nichts zu verstehen. Ich mach dann eben einfach immer und scheint zu funktionieren. Diesen Freitag ist die letzte Java Prüfung, dann hab ich das Thema vorerst übestanden.

Als wir Grundlagen Netzwerke hatten, hab ich mit 98 abeschnitten. Mal sehen, wie schwer das mit dem Netzwerkkram am Ende noch wird. Ich hoffe sehr, man braucht da nicht diese Logik wie beim Programmieren.

Habe gehört, dass man da auch komplizierteste Eingaben machen muss (Windows server etc.)

Das mit dem Instanceof hab ich mir am WE nochmal angeschaut. Habs so halbswegs vestanden. Muss in der Prüfung 51 Punkte schaffen. Soweit reichts dann hoffentlich. Kommt ja noch mehr dazu.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...