Wer kann helfen mit Builder Pattern?



  • Hallo allerseits,
    es geht darum, ein Ubahnnetzwerk in c++ mit dem Builder Pattern zu erstellen.
    Wer wuesste, wie BuildStation() und BuildTrack() aussehen koennten?
    Kann mir jemand nur erklaren, wie ich anfangen soll?
    Danke



  • Naja...
    Abstrahiere die Dinge deines Programms, z.B. Strecken, Ampeln, etc...
    Dann definierst Du ein Objekt Modell, wer was besitzt, Beziehungen hat, etc.

    Dann machst Du eben einen Builder der das ganz zusammenbaut.
    Simon



  • ok naja also ich habe schon

    using namespace std;

    #include "TubeBuilder.h"
    #include "ITrain.h"

    void DriveTrain(ITrain *player)
    {
    bool loc = true;
    string command;

    for(;;)
    {
    if(loc)
    {
    cout << "You are at " << player->GetStation() << endl;
    loc = true;
    }

    cin >> command;
    if(0 == command.compare("quit"))
    {
    return;
    }
    else if(0 == command.compare("north"))
    {
    loc = player->DriveNorth();
    }
    else if(0 == command.compare("south"))
    {
    loc = player->DriveSouth();
    }
    else if(0 == command.compare("east"))
    {
    loc = player->DriveEast();
    }
    else if(0 == command.compare("west"))
    {
    loc = player->DriveWest();
    }

    if(!loc)
    {
    cout << "This is the end of the line...\n";
    }
    }
    }

    int main(int argc, char * const argv[])
    {
    ITube *tube;
    CTubeBuilder *tb;
    ITrain *train;

    tb = new CTubeBuilder;

    tb->BuildStation(0, "Engine Shed");
    tb->BuildStation(1, "Holburn");
    tb->BuildTrack(1, 0, 1);
    tb->BuildStation(2, "Aldwych");
    tb->BuildTrack(0, 2, 1);
    tb->BuildStation(3, "Down Street");
    tb->BuildTrack(1, 1, 3);
    tb->BuildStation(4, "Brompton Road");
    tb->BuildTrack(1, 3, 4);
    tb->BuildStation(5, "Wood Lane");
    tb->BuildTrack(0, 4, 5);
    tb->BuildStation(6, "North End");
    tb->BuildTrack(0, 5, 6);
    tb->BuildStation(7, "Muswell Hill");
    tb->BuildTrack(0, 7, 4);
    tb->BuildStation(8, "Watford Stadium");
    tb->BuildTrack(0, 8, 7);
    tb->BuildStation(9, "Crouch End");
    tb->BuildTrack(0, 9, 8);
    tb->BuildStation(10, "Watford West");
    tb->BuildTrack(1, 10, 8);
    tb->BuildStation(11, "Croxley Green");
    tb->BuildTrack(1, 11, 10);

    tube = tb->GetTubeNetwork();
    tb->Release();

    train = tube->GetTrain();
    tube->Release();
    DriveTrain(train);

    train->Release();
    return 0;
    }

    und jetzt soll ich die folgenden methoden schreiben:

    #include <iostream>
    #include <string>

    using namespace std;

    #include "TubeBuilder.h"

    CTubeBuilder::CTubeBuilder()
    {
    }

    CTubeBuilder::~CTubeBuilder()
    {
    }

    void CTubeBuilder::BuildStation(int sid, string stationName)
    {

    }

    void CTubeBuilder::BuildTrack(int direction, int sid1, int sid2)
    {
    }

    ITube *CTubeBuilder::GetTubeNetwork()
    {

    }

    wobei sid eine bestimmte station identifiziert und von BuildTrack benutzt werden soll, denn BuildTrack soll der weg zwischen zwei stationen sein und direction sagt ob@s nord-sued oder ost-west geht.
    GetTubeNetwork soll einen ITube pointer wiedergeben...

    Ich weiss nicht wie 😢



  • Das ist kein C++/CLI, das gehört ins C++ Forum.
    Dein Beitrag wird sicher bald verschoben...
    Simon



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • also hier das ganze noch mal mit cpp tags

    #include "TubeBuilder.h"
    #include "ITrain.h"
    
    void DriveTrain(ITrain *player)
    {
    bool loc = true;
    string command;
    
    for(;;)
    {
    if(loc)
    {
    cout << "You are at " << player->GetStation() << endl;
    loc = true;
    }
    
    cin >> command;
    if(0 == command.compare("quit"))
    {
    return;
    }
    else if(0 == command.compare("north"))
    {
    loc = player->DriveNorth();
    }
    else if(0 == command.compare("south"))
    {
    loc = player->DriveSouth();
    }
    else if(0 == command.compare("east"))
    {
    loc = player->DriveEast();
    }
    else if(0 == command.compare("west"))
    {
    loc = player->DriveWest();
    }
    
    if(!loc)
    {
    cout << "This is the end of the line...\n";
    }
    }
    }
    
    int main(int argc, char * const argv[])
    {
    ITube *tube;
    CTubeBuilder *tb;
    ITrain *train;
    
    tb = new CTubeBuilder;
    
    tb->BuildStation(0, "Engine Shed");
    tb->BuildStation(1, "Holburn");
    tb->BuildTrack(1, 0, 1);
    tb->BuildStation(2, "Aldwych");
    tb->BuildTrack(0, 2, 1);
    tb->BuildStation(3, "Down Street");
    tb->BuildTrack(1, 1, 3);
    tb->BuildStation(4, "Brompton Road");
    tb->BuildTrack(1, 3, 4);
    tb->BuildStation(5, "Wood Lane");
    tb->BuildTrack(0, 4, 5);
    tb->BuildStation(6, "North End");
    tb->BuildTrack(0, 5, 6);
    tb->BuildStation(7, "Muswell Hill");
    tb->BuildTrack(0, 7, 4);
    tb->BuildStation(8, "Watford Stadium");
    tb->BuildTrack(0, 8, 7);
    tb->BuildStation(9, "Crouch End");
    tb->BuildTrack(0, 9, 8);
    tb->BuildStation(10, "Watford West");
    tb->BuildTrack(1, 10, 8);
    tb->BuildStation(11, "Croxley Green");
    tb->BuildTrack(1, 11, 10);
    
    tube = tb->GetTubeNetwork();
    tb->Release();
    
    train = tube->GetTrain();
    tube->Release();
    DriveTrain(train);
    
    train->Release();
    return 0;
    }
    
    und jetzt soll ich die folgenden methoden schreiben:
    
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    #include "TubeBuilder.h"
    
    CTubeBuilder::CTubeBuilder()
    {
    }
    
    CTubeBuilder::~CTubeBuilder()
    {
    }
    
    void CTubeBuilder::BuildStation(int sid, string stationName)
    {
    
    }
    
    void CTubeBuilder::BuildTrack(int direction, int sid1, int sid2)
    {
    }
    
    ITube *CTubeBuilder::GetTubeNetwork()
    {
    
    }
    

Log in to reply