MVC_class_diagram


\documentclass[border=10pt]{standalone}
\usepackage{tikz}
    \usetikzlibrary{matrix}
    \tikzset{>=latex}
\usepackage{lib/tikz-uml}
\begin{document}
    \begin{tikzpicture}
    	\begin{umlpackage}[y = 0, x = -3, fill=green!20]{vista}
    	\umlclass[rectangle split parts = 1, x=1.25]{AplicacioUB2}{}{}
    	\umlclass[rectangle split parts = 1, x=7]{IniciadorAplicacioUB}{}{}
    	\umlimport[]{IniciadorAplicacioUB}{AplicacioUB2}
    	\end{umlpackage}
    	
    	\umlclass[rectangle split parts=1, x=-5, y=-6]{File}{}{}
    	\umlclass[rectangle split parts=1, x=0, y=-6]{Serializable}{}{}
    	\umlclass[rectangle split parts=1, x=5, y=-6]{ArrayList}{}{}
    	\umlclass[rectangle split parts=1, x=-6.5, y=-3.5]{ReproductorBasic}{}{}
    	\umlclass[rectangle split parts=1, x=-3, y=-12.3]{FileIn/OutputStream}{}{}
    	\umlclass[rectangle split parts=1, x=2.5, y=-12.3]{ObjectIn/OutputStream}{}{}
    	\umlclass[rectangle split parts=1, x=-6.5, y=0]{Menu}{}{}
    	\umlclass[rectangle split parts=1, x=-6.5, y=-1]{Scanner}{}{}
    	
    	\begin{umlpackage}[y=-7.9, x = -5]{model}
    	\umlclass[rectangle split parts=1, y=0]{FitxerMultimedia}{}{}
    	\umlclass[rectangle split parts=1, y=-1.5]{FitxerReproduible}{}{}
    	\umlclass[rectangle split parts=1, y=-3, x=-1.25]{Video}{}{}
    	\umlclass[rectangle split parts=1, y=-3, x=1.25]{Audio}{}{}
    	\umlclass[rectangle split parts=1, x=5, y=-1.25]{Dades}{}{}
    	\umlclass[rectangle split parts=1, x=10]{CarpetaFitxers}{}{}
    	\umlclass[rectangle split parts=1, x=10, y=-3]{BibliotecaFitxersMultimedia}{}{}
    	\umlinherit[]{FitxerMultimedia}{File}
    	\umlreal[]{Dades}{Serializable} 
    	\umlinherit[geometry=|-|]{FitxerReproduible}{FitxerMultimedia}
    	\umlinherit[]{Video}{FitxerReproduible}
    	\umlinherit[]{Audio}{FitxerReproduible}
    	\umlinherit[]{BibliotecaFitxersMultimedia}{CarpetaFitxers}
    	\umlinherit[]{CarpetaFitxers}{ArrayList}
    	\umlimport[]{Dades}{BibliotecaFitxersMultimedia}
    	\umlimport[]{Dades}{Video}
    	\umlimport[]{Dades}{Audio}
    	\umlimport[]{Dades}{FileIn/OutputStream}
    	\umlimport[]{Dades}{ObjectIn/OutputStream}
    
    	\end{umlpackage}
    	
    	\begin{umlpackage}[y=-3.5, x=-1.5, fill=red!20]{controlador}
    	\umlclass[rectangle split parts=1, x=5]{Controlador}{}{}
    	\umlclass[rectangle split parts=1, x=0]{Reproductor}{}{}
    	
    	\end{umlpackage}
    	
        \umlimport[]{AplicacioUB2}{Controlador}
        \umlimport[xshift=2cm]{AplicacioUB2}{Reproductor}
        \umlimport[]{Controlador}{Dades}
        \umlinherit[]{Reproductor}{ReproductorBasic}
        \umlimport[]{AplicacioUB2}{Menu}
        \umlimport[]{AplicacioUB2}{Scanner}
    \end{tikzpicture}
\end{document}