\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}{ manager : \texttt{Manager} }{ \umlvirt{frame() : vide} } \umluniassoc{Manager}{View} \umlclass[x=4,y=-4.5]{ResourceManager}{ textures : dictionnaire \texttt{string -> texture} }{ getTexture(name : string) : texture } \umluniassoc{Manager}{ResourceManager} \umlabstract[x=-4,y=-8.5]{Level}{ name : chaîne de caractères\\ background : sprite\\ objects : \texttt{[Object]}\\ zone : \texttt{[[flottant, flottant]]} }{ \umlvirt{frame() : vide}\\ draw() : vide\\ load(file : fichier en lecture) : vide\\ save(file : fichier en écriture) : vide } \umlinherit{View}{Level} \umlclass[x=-7,y=-12.5]{Editor}{}{ frame() : vide } \umlinherit{Level}{Editor} \umlclass[x=-1,y=-12.5]{Game}{}{ frame() : vide\\ update() : vide } \umlinherit{Level}{Game} \umlabstract[x=-4,y=-19]{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} \umlunicompo{Editor}{Object} \umlclass[x=-8,y=-26]{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=-26]{Block}{}{ draw(manager : \texttt{Manager}) : vide\\ getAABB() : boîte } \umlinherit{Object}{Block} \end{tikzpicture} \end{document}