\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{Manager}{ window : fenêtre\\ clock : horloge\\ elapsed\_time : flottant\\ resource\_manager : \texttt{ResourceManager}\\ keys : \texttt{[booléen]}\\ view : \texttt{View} }{ start() : vide\\ getWindow() : fenêtre\\ getElapsedTime() : flottant\\ getResourceManager() : \texttt{ResourceManager}\\ isKeyPressed(key : touche) : booléen } \umlabstract[x=-4,y=-4.5]{View}{}{ \umlvirt{frame(manager : \texttt{Manager}) : vide} } \umluniassoc{Manager}{View} \umlclass[x=4,y=-4.5]{ResourceManager}{ textures : dictionnaire \texttt{string -> texture} }{ getTexture(name : string) : texture } \umluniassoc{Manager}{ResourceManager} \umlclass[x=-4,y=-8]{Game}{ accumulator : flottant\\ objects : \texttt{[Object]} }{ frame(manager : \texttt{Manager}) : vide\\ update(manager : \texttt{Manager}) : vide\\ draw(manager : \texttt{Manager}) : vide } \umlinherit{View}{Game} \umlabstract[x=-4,y=-15]{Object}{ acceleration : vecteur\\ velocity : vecteur\\ position : vecteur\\ mass : flottant\\ charge : flottant\\ restitution : flottant\\ static\_friction : flottant\\ dynamic\_friction : flottant\\ layer : entier }{ \umlvirt{draw() : vide}\\ \umlvirt{getForces(manager : \texttt{Manager}, objects : \texttt{[Object]}) : vecteur}\\ \umlvirt{draw(manager : \texttt{Manager}) : vide}\\ \umlvirt{getAABB() : boîte}\\ \hfill\\ updateVelocity(manager : \texttt{Manager}, objects : \texttt{[Object]}, delta : flottant) : vide\\ updatePosition(manager : \texttt{Manager}, objects : \texttt{[Object]}, delta : flottant) : vide\\ detectCollision(object : \texttt{Object}) : \texttt{CollisionData}\\ solveCollision(object : \texttt{Object}, normal : vecteur) : vide\\ positionalCorrection(object : \texttt{Object}, normal : vecteur, depth : flottant) : vide\\ } \umlunicompo{Game}{Object} \umlclass[x=-8,y=-22]{Player}{ player\_number : entier non-signé }{ getForces(manager : \texttt{Manager}, objects : \texttt{[Object]}) : vecteur\\ draw(manager : \texttt{Manager}) : vide\\ getAABB() : boîte } \umlinherit{Object}{Player} \umlclass[y=-22]{Block}{}{ draw(manager : \texttt{Manager}) : vide\\ getAABB() : boîte } \umlinherit{Object}{Block} \end{tikzpicture} \end{document}