Examen C++ pour mes étudiants ESGI 4ème année AL2

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;}

 

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s