Dynamic und Static Cast? oder einfach nur ein normales Cast?



  • nicht unbedingt der selbe typ , éin abgeleitest typ

    A (Handling)

    class A : public AllocNode{
    };
    
    clas A1: public A{
    };
    
    class A2: public A{
    };
    

    ---- Base-------
    --- /----\------
    ---A------A-----
    -/--\---/-|-\---
    A1--A2-A1-A1-A2-

    ein Allocation kann nur Knoten mit den Bassis typen A,B,C und deren jweile abgeleiten kalssen enthalten.. also keine mischformen von A,B,C..

    Es gibt zwei unterschiedliche gruppierungsmodi..

    - sequentielle gruppierung, das heist alle Kinder allokationen folgen zeitlich aufeinandern und wird insgesammt dann als Vater allokation gesehen.

    -parallele gruppierung, das heist alle Kinderkonten ihn ihren start und allokationdauer können/sind parallel angeodnet,
    Bsp. Kind1 20 sek. länge. kind2 30sek., so wird die gsamtn Allokation (Vater ) 30 sek. sein...



  • Ohje, ich fürchte, bei deinem Ansatz fehlt vor allem eins: ein vernünftiges Konzept. Bevor du weiter über solche Details nachdenkst, solltest du wohl zum Zeichenbrett zurückkehren und dir genau überlegen, was du überhaupt umsetzen willst.



  • wie würdest es du denn machen? was ist sooo schlecht? Welche denkfehler hab ich drin? wenn du dir mal die gruppierung weg denkst?



  • Der Hauptfehler besteht darin, daß du dein Konzept nicht wirklich verständlich erklären konntest (wenn da überhaupt ein Konzept ist). Und da ich nicht weiß, was genau dein Ziel ist, wird es etwas schwierig, dort Hilfestellungen zu geben.



  • Also:

    Stell dir vor du Willst eine best. Ressource bspw. ein PC reservieren für eine best zeit. In dem Zeitraum der reservierung wird der PC angeschaltet, es werden e-mail abgerufen, ein Dokument geschrieben, und wieder heruntergefahren.
    das sind quasie 4 abläufe die nacheinander folgen, jeweils ne gewisse zeit andauern , und insgesammt die gesmantzeit der Reservierung (Allokation) des PCs
    darstellen. Wenn wir nun noch die Gruppieren betrachten, könnte beispielsweise e-mail abrufen durch (Outlock öffnen, e-mail lesen, outlock schliesen) gruppeiren.

    Soweit verstanden?

    Was soweit logisch ist , besteht eine reservierung eins best. Dinges (Ressoruce) aus der zeitspannen und wann sie eintrifft, (e-mail lesen folgt sobald Outlock geöffnent ist) und wie lange sie geht.

    so mit A,B,C will ich nun verschiede Ressourcen angeben können in dem beispiel hab ich ein PC definiert.

    Besesr kapiert?



  • Wenn das so ist, brauchst du nach dem Anlegen der Allokation eigentlich keinen Zugriff von außen auf ihre Attribute, oder? Du brauchst nur eine virtuelle Methode starte(), die ihr sagt, daß sie jetzt das tun soll, was immer nötig ist (innerhalb dieser Methode hast du vollen Zugriff auf alle Attribute, die du für die Arbeit brauchst).

    PS: Kann es sein, daß du die Klassenhierarchie (es gibt eine abstrakte Basisklasse sowie verschiedene konkrete Allokations-Typen) und deine Baumstruktur (die Art, wie die Allokationen zusammengefasst/gruppiert werden) durcheinanderwirfst?



  • Meisnt du so?

    wenn ich ressorurtentyp mit allokationdauer erstelle wird die dauer der reservierung über den Konstruktor der AllocNode übergeben..

    Oder hab ich nich verstandne was du willst?

    class A : public AllocNode){
    
     int balbal;
    
     A(double start, double dauer,int blalbal) : AllocNode(start,dauer), balbal  (blalbla){}
    
    }
    

    ne das sieht nur in dem baum diagrmm oben so aus....

    A kann auch A kinder haben, und A1 kinder kann auch A1 kinder haben etc.



  • BorisDieKlinge schrieb:

    Meisnt du so?

    wenn ich ressorurtentyp mit allokationdauer erstelle wird die dauer der reservierung über den Konstruktor der AllocNode übergeben..

    Oder hab ich nich verstandne was du willst?

    Ja, so in etwa. Jetzt brauchst du noch eine Methode (eventuell abstrakt in der Basisklasse), die die Allokation "ausführt". Die A-Version dieser Methode wertet dann den Inhalt von 'int blabal;' aus, um ihre jeweiligen Ziele zu erreichen.

    Und für die inneren Knoten der Baumstruktur solltest du zwei eigene Klassen ParallelAlloc und SequentialAlloc anlegen, die jeweils eine list<AllocNode*> verwalten und zum Ausführen über diese list<> laufen und alle Elemente anschubsen:

    class Alloc
    {
      double start,len;
    public:
      Alloc(double st,double ln) : start(st),len(ln) {}
      virtual void execute() = 0;
    };
    
    class MailAlloc : public Alloc
    {
      string server,pw;
    public:
      MailAlloc(...);
      virtual void execute()
      {
        //verbinde dich mit Mail-Server und hole alle anstehenden E-Mails
      }
    };
    
    class SequentialAlloc : public Alloc
    {
      list<Alloc*> elements;
    public:
      SequentialAlloc(...);
      //Methoden zum Anlegen der Liste
      ...
    
      virtual void execute()
      {
        for(list<Alloc*>::iterator p=elements.begin();p!=elements.end();++p)
          (*p)->execute();
      }
    };
    


  • ok danke, ich schau mir das mal an und denk drüber nach.. 😉 vll. komm ich ja auf ne die...



  • HumeSikkins schrieb:

    Mal unabhängig davon sollte man imo darauf hinweisen, dass dein Beispiel nicht mit dem des OP zu vergleichen ist.

    Ja, das ist mir schon klar. Darum ging es ja auch nie, ich habe mein Beispiel in einem ganz anderen Kontext gebracht.


Anmelden zum Antworten