NOM : CLASSE :
Examen noté de C++ Moderne
1° Créer une classe abstraite CShape avec
- Un constructeur qui prend en paramètre un rectangle (à encapsuler de plusieurs manières)
- Une méthode virtuelle pure Draw
2° Créer des classes dérivées de CShape comme CRectangle et CEllipse
3° Coder le minimum pour le main() compile :
- Coder pch.h et y inclure tous les entêtes nécessaires
- Créer la classe CView et ses méthodes (voir main)
- Créer la classe CCommandBar et ses méthodes (voir main)
- Etablir un modèle objet clair et cohérent entre CShape, CRectangle, CElippse, CDeviceContext, CCommandBar et CView et coder l’ensemble de ces classes
Conseils :
- Ecrire correctement
- Coder avec style
- En cas de difficultés, improvisez ! Lancez-vous !
int main() { //CDeviceContext dc; //CRectangle r1(10, 10, 50, 50); //r1.Draw(dc); CView view; CCommandBar cmdBar; std::shared_ptr shape1 = cmdBar.CreateShape(ShapeType::rectangle); view.AddShapeToView(shape1); std::shared_ptr shape2 = cmdBar.CreateShape(ShapeType::ellipse); view.AddShapeToView(shape2); view.DrawView(); return 0; } Le coding graphique est un simple cout dans la console : void CDeviceContext::Rectangle(CRect rect){ std::cout << "Rectangle x1:" << rect._x1 << ", y1:" << rect._y1 << ", x2:" << rect._x2 << ", y2:" << rect._y2 << std::endl;} void CDeviceContext::Ellipse(CRect rect){ std::cout << "Ellipse x1:" << rect._x1 << ", y1:" << rect._y1 << ", x2:" << rect._x2 << ", y2:" << rect._y2 << std::endl;}