\documentclass[tikz,border=30pt]{standalone} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{tikz} \usepackage{tikz-uml} \usepackage[french]{babel} \begin{document} \begin{tikzpicture} \umlclass[y=.5]{Engine}{ objects : tableau de \texttt{Object}\\ goLeftKey: booléen\\ goRightKey : booléen\\ clock : horloge }{ draw() : vide\\ update() : vide } \umlclass[x=6,y=-1]{State}{ objects : tableau de \texttt{Object}\\ goLeftKey: booléen\\ goRightKey : booléen\\ delta : flottant }{} \umlabstract[y=-4]{Object}{ position : vecteur\\ charge : entier signé }{ \umlvirt{draw(fenêtre : Fenêtre) : vide}\\ \umlvirt{update(état : State) : vide}\\ \umlvirt{getLayer() : entier}\\ getPosition() : vecteur\\ getCharge() : entier signé } \umlabstract[y=-8,x=4]{PhysicsObject}{ velocity : vecteur\\ mass : flottant }{ getForces(état : State) : vecteur\\ update(état : State) : vide } \umlclass[y=-11.5,x=4]{Ball}{}{ draw(fenêtre : Fenêtre) : vide\\ getForces(état : State) : vecteur\\ getLayer() : 1 } \umlclass[y=-8,x=-4]{Block}{}{ draw(fenêtre : Fenêtre) : vide\\ update(état : State) : vide\\ getLayer() : 0 } \umlcompo{Engine}{Object} \umlinherit{Object}{Block} \umlinherit{Object}{PhysicsObject} \umlinherit{PhysicsObject}{Ball} \end{tikzpicture} \end{document}