in Javascript eine Hierarchie Abbilden mit Objekten.

baeri

Erfahrenes Mitglied
Hallo,

ich möchte ich Javascript eine Hierarchie abbilden und diese über "klassen / funkionen" befüllen und auslesen...

vom Prinzip will ich das ganze 3 Stufig gestalten...
oben der Chef, darunter (mehrere) Abteilungsleiter, darunter (mehrere) Mitarbeiter.

cool wäre, wenn man das etwas "objektorientiert" abbilden könnte (soll mehr als lerneffekt als tatsächlicher nutzen darstellen) <- schöne tutorials für eine "Firmenhierarchie" habe ich leider nicht gefunden...

Code:
funktion firma {

   var chef;
   var abteilungsleiter;
   var mitarbeiter;

   this.newChef = funktion( chef ) {
      this.chef = chef;
   }

   this.addAbteilungsleiter = funktion( chef, abteilungsleiter ) {
      //genau hier hängts bei mir, wie ordne ich den Abteilungsleiter dem Chef zu
   }
}

var myCompany = new Firma();
myCompany.newChef( "müller" );
myCompany.addAbteilungsleiter( "müller", "maier" );

console.log( myCompany )
Code:
myCompany : { "müller": {
    "maier" : [ "mitarbeiter1", "mitarbeiter2" ] },
    "schmitt" : [ "mitarbeiter3", "mitarbeiter4" ] }
}

auf ne "echte" Firma muss und soll das nicht abgebildet werden kann... wenn ein Abteilungsleiter geht, dann muss die Abteilung mit gehen :D .. <- das ganze so zu gestalten, dass es Abteilungen gibt und ein "Auswechselbarer" Chef sind dann so Punkte die ich selbst erarbeiten möchte...

Vielen Dank für jede Hilfe...
 
Da die Abteilungsleiter in der Hierarchie dem Chef untergeordnet sind, würde ich das auch in der Struktur entspr. abbilden:
Code:
  this.newChef = funktion( chef ) {
      this.chef = chef;
      this.abteilungsleiter = [];
      that = this;
      this.addAbteilungsleiter = function(name) {
          that.abteilungsleiter.push(name);
      }      
   }
Analog mit den Mitarbeitern.
 
Hey cool, vielen Dank...

aber nachdem "die Abteilungsleiter" eher neben dem Chef agieren, wäre jetzt die Frage wie ich die Mitarbeiter "unter" den Abteilungsleitern bekomme...
<- das ist ja mein "eigentliches" Problem...

also brauche ich "immernoch" eine Funktion bei der ich dann den Abteilungsleiter n Mitarbeiter zuordnen kann...

> Der Abteilungsleiter ist sozusagen kein Array...

Ebenso wünschte ich der Chef könnte ein Array (indem die Abteilungsleiter sind) sein!?
 
ich glaube wir reden aneinander vorbei...

nehmen wir mal keine Personen sondern abteilungen


also
Code:
FIRMA -> ABTEILUNGA -> [ MITARBEITERA, MITARBEITERB ]
      -> ABTEILUNGB -> [ MITARBEITERC, MITARBEITERD ]

also, die Hauptfunktion welche ich suche ist

1. Abteilungen (also arrays) anzulegen
2. Abteilungen (die arrays) befüllen

:)
 
Mein Posting war aber ein Schnellschuss und nicht richtig zu Ende gedacht. Genau genommen, müsste man die Abteilungsleiter und den Chef ebenso wie die Firma als Objekte anlegen und mit "new" erzeugen und mit addxxx dann der betr. Hierarchieebene hinzu fügen.
 
wäre es zu viel verlangt hier mal ein beispiel zu bekommen???

weil ich versteh grad nur, HÄ? :D :D

*sorry*
 
1. Abteilungen (also arrays) anzulegen
2. Abteilungen (die arrays) befüllen
Da kommen wir der Sache schon näher. Alle Abteilungen sind in einem Array abgelegt und jede davon hat ein Attribut "Abteilungsleiter" und eines "Mitarbeiter", wobei das letztere wieder ein Array ist.
 
Wie gesagt, meine Postings sind Schnellschüsse, weil ich nicht wirklich viel Erfahrung mit OOP habe. Warte mal, bis dir jemand mit mehr Erfahrung antwortet.
 
Ich habe mich mal über das Bewusstsein meiner mangelnden Erfahrung hinweg gesetzt und entspr. meinem Verständnis von OOP etwas ausgearbeitet:
Code:
            function Firma(name) {
                var that = this;
                this.name = name;
                this.abteilungen = {};
                this.addAbteilung = function(abteilung) {
                    that.abteilungen[abteilung.name] = abteilung;
                }
                this.setChef = function(chef) {
                    that.chef = chef;
                }
            }
            function Abteilung(name) {
                var that = this;
                this.leiter = {};
                this.setLeiter = function(leiter) {
                    that.leiter = leiter;
                }
                this.name = name;
                this.mitarbeiter = {};
                this.addMitarbeiter = function (mitarbeiter) {
                    that.mitarbeiter[mitarbeiter.name] = mitarbeiter;
                }
            }
            function Mitarbeiter(name) {
                this.name = name;
            }
            var firma1 = new Firma("Firma1");
            var meier = new Mitarbeiter("Meier");
            firma1.setChef(meier);
            var abteilung1 = new Abteilung("Abteilung1");
            firma1.addAbteilung(abteilung1);
            var abteilung2 = new Abteilung("Abteilung2");
            firma1.addAbteilung(abteilung2);
            var mueller = new Mitarbeiter("Mueller");
            abteilung1.setLeiter(mueller);
            var schulze = new Mitarbeiter("Schulze");
            abteilung2.setLeiter(schulze);
            abteilung1.addMitarbeiter(new Mitarbeiter("Mitarbeiter1.1"));
            abteilung1.addMitarbeiter(new Mitarbeiter("Mitarbeiter1.2"));
            abteilung2.addMitarbeiter(new Mitarbeiter("Mitarbeiter2.1"));
            abteilung2.addMitarbeiter(new Mitarbeiter("Mitarbeiter2.2"));

            console.log("Chef: ", firma1.chef.name);
            console.log("Abteilungen:");
            for (nameabt in firma1.abteilungen) {
                console.log("Name und Leiter: ", nameabt, firma1.abteilungen[nameabt].leiter.name);
                console.log("Mitarbeiter:");
                for (namemitarb in firma1.abteilungen[nameabt].mitarbeiter) {
                    console.log(namemitarb);
                }
            }
            // oder einfach:
            console.log(firma1);
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück