Partage
  • Partager sur Facebook
  • Partager sur Twitter

Conseil MVC

    7 avril 2019 à 19:22:40

    Bonjours a tous,

    Souhaitant m’entraîner a l'utilisation des designs patterns, j'ai pour projet de réaliser une ToDo liste en utilisant le pattern MVC

    J'aimerais avoir vos remarque/conseils sur cette implémentation simplifié, savoir si je ne plante pas completement

    Le projet est dispo sur github

    Sinon voici les fichiers (certain rassemblé) :

    main

    #include <iostream>
    
    #include "Model.h"
    #include "Controller.h"
    #include "View.h"
    
    int main()
    {
    	std::vector<Task> myTasks;
    	myTasks.push_back( Task{ 1, "Do app" } );
    	myTasks.push_back( Task{ 2, "Do web" } );
    
    	Model myModel;
    	myModel.setData(myTasks);
    
    	Controller myController;
    	myController.setModel(myModel);
    
    	myController.displayData();
    
    	myController.addTask( Task{ 3, "Training MVC" } );
    
    
    	return 0;
    }
    

    View

    #pragma once
    
    #include "Commun.h"
    #include <vector>
    
    class View
    {
    public:
    	View();
    
    	void render(std::vector<Task> const& data) const;
    
    	~View();
    
    private:
    	void printTask(Task const& task) const;
    };
    
    
    #include "View.h"
    
    #include <iostream>
    
    View::View()
    {
    }
    
    void View::render(std::vector<Task> const& data) const
    {
    	for(auto const& task : data)
    	{
    		printTask(task);
    	}
    }
    
    void View::printTask(Task const& task) const
    {
    	std::cout << "Priority " << task.priority << "\t" << task.description << std::endl;
    }
    
    View::~View()
    {
    }
    

    Model

    #pragma once
    
    #include "Commun.h"
    #include <vector>
    
    class Model
    {
    public:
    	Model();
    	
    	std::vector<Task> getData() const;
    	void setData(std::vector<Task> const& data);
    
    	~Model();
    
    private:
    	std::vector<Task> data;
    };
    
    
    #include "Model.h"
    
    Model::Model()
    {
    }
    
    std::vector<Task> Model::getData() const
    {
    	return data;
    }
    
    void Model::setData(std::vector<Task> const & data)
    {
    	this->data = data;
    }
    
    
    Model::~Model()
    {
    }
    

    Controller

    #pragma once
    
    #include "Commun.h"
    #include "Model.h"
    #include "View.h"
    
    class Controller
    {
    public:
    	Controller();
    	Controller(Model const& model, View const& view);
    
    	void setModel(Model const& model);
    	void setView(View const& view);
    	void addTask(Task const& task);
    	void displayData() const;
    
    	~Controller();
    
    private:
    	Model model;
    	View view;
    };
    
    
    
    #include "Controller.h"
    
    
    Controller::Controller()
    {
    }
    
    Controller::Controller(Model const& model, View const& view):
      model(model), view(view)
    {
    }
    
    void Controller::setModel(Model const& model)
    {
      this->model = model;
    }
    
    void Controller::setView(View const& view)
    {
      this->view = view;
    }
    
    void Controller::addTask(Task const& task)
    {
      std::vector<Task> data = model.getData();
      data.push_back(task);
      model.setData(data);
    
      displayData();
    }
    
    void Controller::displayData() const
    {
      view.render(model.getData());
    }
    
    Controller::~Controller()
    {
    }
    

    Et ma petite structure Task

    #pragma once
    
    #include <string>
    
    struct Task
    {
    	int priority;
    	std::string description;
    };
    

    Voila, je suis preneur de toute remarques ^^

    Merci pour votre lecture / aide




    • Partager sur Facebook
    • Partager sur Twitter

    Conseil MVC

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown