UML e/o organigrammi

  • Creatore
    Topic
  • #74334
    Up
    0
    Down
    ::


    Ciao a tutti.
    Sono in dirittura d’arrivo con un progetto di informatica all’università e dobbiamo consegnare uno schema che rappresenti la gerarchia tra le classi che abbiamo utilizzato. Avrebbe dovuto occuparsene la persona che ha fatto il progetto con me, ma purtroppo si é ammalato piuttosto seriamente. Mi trovo quindi a doverlo fare da solo e non ho molti strumenti a disposizione… Allora ho pensai subito a LaTeX, perché sicuramente ci sarà un pacchetto apposito per creare organigrammi o diagrammi UML.

    Qualcuno può darmi qualche dritta? Più che il nome del pacchetto e la sua documentazione (comunque indispensabili) mi servirebbe qualche esempio, che potrei pori modificare ed espandere a mio piacimento (perché il tempo stringe… =S). C’é qualche benevolo che ha in giro un esempio (semplice) di utilizzo e sarebbe disposto a postarlo?

    Grazie mille, Rocco.

Visualizzazione 11 filoni di risposte
  • Autore
    Risposte
    • #74335
      Up
      0
      Down
      ::

      Rocco M.” post=73322Ciao a tutti.
      Sono in dirittura d’arrivo con un progetto di informatica all’università e dobbiamo consegnare uno schema che rappresenti la gerarchia tra le classi che abbiamo utilizzato. Avrebbe dovuto occuparsene la persona che ha fatto il progetto con me, ma purtroppo si é ammalato piuttosto seriamente. Mi trovo quindi a doverlo fare da solo e non ho molti strumenti a disposizione… Allora ho pensai subito a LaTeX, perché sicuramente ci sarà un pacchetto apposito per creare organigrammi o diagrammi UML.

      Qualcuno può darmi qualche dritta? Più che il nome del pacchetto e la sua documentazione (comunque indispensabili) mi servirebbe qualche esempio, che potrei pori modificare ed espandere a mio piacimento (perché il tempo stringe… =S). C’é qualche benevolo che ha in giro un esempio (semplice) di utilizzo e sarebbe disposto a postarlo?

      Grazie mille, Rocco.

      Ciao,

      il pacchetto esiste e ne trovi la documentazione con texdoc uml da terminale. Come dicevo in questo post tuttavia, è possibile realizzare qualcosa di meglio con TikZ: fra le guide tematiche nella sezione Documentazione, trovi l’Introduzione all’uso di TikZ in Ingegneria dove il primo esempio è davvero molto simile a ciò che ti serve (il codice è molto semplice e si può migliorare usando il \foreach di TIkZ).

      Ciao
      Claudio

    • #74336
      Up
      0
      Down
      ::

      cfiandra” post=73323
      Ciao,

      il pacchetto esiste e ne trovi la documentazione con texdoc uml da terminale. Come dicevo in questo post tuttavia, è possibile realizzare qualcosa di meglio con TikZ: fra le guide tematiche nella sezione Documentazione, trovi l’Introduzione all’uso di TikZ in Ingegneria dove il primo esempio è davvero molto simile a ciò che ti serve (il codice è molto semplice e si può migliorare usando il \foreach di TIkZ).

      Ciao
      Claudio

      Grazie mille per la tempestiva risposta. Ho guardato un po’ la documentazione del pacchetto uml e come immaginavo ha pochi esempi e quindi é difficile poterlo utilizzare in poco tempo. Per quanto riguarda la guida che mi hai consigliato, il primo esempio mi sembra ottimo e fa proprio il caso mio. Purtroppo però bisogna piazzare ogni elemento a mano e nuovamente si tratta di un lavoro troppo lungo.

      Non c’é qualcosa di meno perfetto ma di più pratico, qualcosa di “automatico”?

      Faccio un esempio di quello che veramente avrei bisogno:
      `
      \begin{UML}
      \level[1]
      \class{A}{Attributi}{Metodi}
      \level[2]
      \class[A]{B}{Attributi}{Metodi}
      \class[A]{C}{Attributi}{Metodi}
      \level[3]
      \class[B|C]{D}{Attributi}{Metodi}
      \end{UML}
      `
      Per generare una gerarchia del tipo

      . A
      . / \
      . B C
      . \ /
      . D

      Anche se il fatto che una sotto classe eredita da due classi superiori non ce l’ho bisogno. Mi serve quindi una gerarchia piramidale che però si generi automaticamente. Come opzione tra [] ho messo la classe superiore a cui si é legati… Qualcosa del genere (che ovviamente qui ho inventato di sana pianta) sarebbe davvero pratico e farebbe il caso mio…
      Esiste?

      Rocco.

      Ps: L’ambiente l’ho chiamato UML ma non deve assolutamente essere una cosa formale. Va benissimo qualsiasi riquadro. Se poi diviso in tre parti (Titolo, attributi, metodi) sarebbe perfetto.

    • #74337
      Up
      0
      Down
      ::

      Rocco M.” post=73339Grazie mille per la tempestiva risposta. Ho guardato un po’ la documentazione del pacchetto uml e come immaginavo ha pochi esempi e quindi é difficile poterlo utilizzare in poco tempo. Per quanto riguarda la guida che mi hai consigliato, il primo esempio mi sembra ottimo e fa proprio il caso mio. Purtroppo però bisogna piazzare ogni elemento a mano e nuovamente si tratta di un lavoro troppo lungo.

      Non c’é qualcosa di meno perfetto ma di più pratico, qualcosa di “automatico”?

      Faccio un esempio di quello che veramente avrei bisogno:
      `
      \begin{UML}
      \level[1]
      \class{A}{Attributi}{Metodi}
      \level[2]
      \class[A]{B}{Attributi}{Metodi}
      \class[A]{C}{Attributi}{Metodi}
      \level[3]
      \class[B|C]{D}{Attributi}{Metodi}
      \end{UML}
      `
      Per generare una gerarchia del tipo

      . A
      . / \
      . B C
      . \ /
      . D

      Anche se il fatto che una sotto classe eredita da due classi superiori non ce l’ho bisogno. Mi serve quindi una gerarchia piramidale che però si generi automaticamente. Come opzione tra [] ho messo la classe superiore a cui si é legati… Qualcosa del genere (che ovviamente qui ho inventato di sana pianta) sarebbe davvero pratico e farebbe il caso mio…
      Esiste?

      Rocco.

      Ps: L’ambiente l’ho chiamato UML ma non deve assolutamente essere una cosa formale. Va benissimo qualsiasi riquadro. Se poi diviso in tre parti (Titolo, attributi, metodi) sarebbe perfetto.

      L’esempio che ti ho suggerito in quel caso è fatto completamente a mano: nessuno vieta di farlo meglio. 😀 Probabilmente nella revisione della guida lo farò come si deve, ossia definendo una chiave mytable che creii la tabella. Questo vuol dire che anche il codice che tu hai proposto si può fare, ma ora ho veramente pochissimo tempo (devo fare alcuni laboratori sui socket senza alcun entusiamso 🙁 ) anche se mi piacerebbe occuparmene. In ogni caso, se hai voglia di tentare, secondo me leggendo il pgfmanual (texdoc pgfmanual) dove si parla di chiavi (in particolar modo /.code={}) e sul costrutto foreach ci puoi riuscire in poco tempo.

      Ciao
      Claudio

    • #74338
      Up
      0
      Down
      ::

      cfiandra” post=73341
      L’esempio che ti ho suggerito in quel caso è fatto completamente a mano: nessuno vieta di farlo meglio. 😀 Probabilmente nella revisione della guida lo farò come si deve, ossia definendo una chiave mytable che creii la tabella. Questo vuol dire che anche il codice che tu hai proposto si può fare, ma ora ho veramente pochissimo tempo (devo fare alcuni laboratori sui socket senza alcun entusiamso 🙁 ) anche se mi piacerebbe occuparmene. In ogni caso, se hai voglia di tentare, secondo me leggendo il pgfmanual (texdoc pgfmanual) dove si parla di chiavi (in particolar modo /.code={}) e sul costrutto foreach ci puoi riuscire in poco tempo.

      Ciao
      Claudio

      Non avevo notato che la guida l’avessi scritta tu! =). Ad ogni modo cerco un’esempio automatico proprio perché ho poco tempo. Domani sera devo consegnare il tutto e mi restano ancora parecchie cose da fare. Spulciare un manuale di 700 pagine (con 60 risultati di ricerca per le parole chiave che mi hai dato) é per me impossibile, anche se non mi dispiacerebbe poterlo fare. Se non esiste niente di già fatto come l’ho pensato io non fa niente.

      Nel caso di dovessi divertire ad crearlo, fammelo sapere che potrà sicuramente rivelarsi utile anche in futuro. ; )

      Grazie mille in ogni caso.
      Rocco.

    • #74339
      Up
      0
      Down
      ::


      Non mi sono dato per vinto e ho cominciato a buttare giù questo, grazie ad alcuni esempi che ho trovato in internet.

      `
      \documentclass{article}
      \usepackage[a3paper]{geometry}
      \usepackage{tikz}
      \usepackage{pdflscape}
      \usetikzlibrary{shapes,arrows}

      \tikzstyle{block} = [rectangle, draw, text width=8em, text centered, rounded corners, minimum height=4em]
      \tikzstyle{line} = [draw, -latex']

      \begin{document}

      \begin{landscape}
      \begin{center}
      \begin{tikzpicture}[node distance = 2.5cm, auto]
      \node [block] (DES) {Dessinable};
      \node [block, below of=DES] (OBM) {ObjetMobile};
      \node [block, left of=OBM, node distance = 2.5cm] (OBS) {Obstacle};
      \node [block, right of=OBM, node distance = 2.5cm] (CHF) {ChampForce};

      \path [line] (DES) — (OBM);
      \path [line] (DES) — (OBS);
      \path [line] (DES) — (CHF);

      \end{tikzpicture}
      \end{center}
      \end{landscape}

      \end{document}
      `

      Sembrerebbe quello che cerco, ma ho bisogno di alcune cose:

      – Come posso rendere la grandezza dei riquadri automatica?
      – Come posso ricreare le linee che hai utilizzato nella guida, potendole poi utilizzare come faccio adesso?
      – Come posso riprendere i tuoi blocchi (con una linea che spezza, io ne avrei bisogno due) e come utilizzarli come li sto utilizzando adesso (definendo poi che testo vada sopra la linea e che tasto vada sotto la linea)?
      – Come posso distanziare i blocchi sullo stesso livello? Sono completamente attaccati.

      Grazie mille per eventuali delucidazioni.

      Rocco.

    • #74340
      Up
      0
      Down
      ::

      Rocco M.” post=73365Non mi sono dato per vinto e ho cominciato a buttare giù questo, grazie ad alcuni esempi che ho trovato in internet.

      `
      \documentclass{article}
      \usepackage[a3paper]{geometry}
      \usepackage{tikz}
      \usepackage{pdflscape}
      \usetikzlibrary{shapes,arrows}

      \tikzstyle{block} = [rectangle, draw, text width=8em, text centered, rounded corners, minimum height=4em]
      \tikzstyle{line} = [draw, -latex']

      \begin{document}

      \begin{landscape}
      \begin{center}
      \begin{tikzpicture}[node distance = 2.5cm, auto]
      \node [block] (DES) {Dessinable};
      \node [block, below of=DES] (OBM) {ObjetMobile};
      \node [block, left of=OBM, node distance = 2.5cm] (OBS) {Obstacle};
      \node [block, right of=OBM, node distance = 2.5cm] (CHF) {ChampForce};

      \path [line] (DES) — (OBM);
      \path [line] (DES) — (OBS);
      \path [line] (DES) — (CHF);

      \end{tikzpicture}
      \end{center}
      \end{landscape}

      \end{document}
      `

      Sembrerebbe quello che cerco, ma ho bisogno di alcune cose:

      – Come posso rendere la grandezza dei riquadri automatica?
      – Come posso ricreare le linee che hai utilizzato nella guida, potendole poi utilizzare come faccio adesso?
      – Come posso riprendere i tuoi blocchi (con una linea che spezza, io ne avrei bisogno due) e come utilizzarli come li sto utilizzando adesso (definendo poi che testo vada sopra la linea e che tasto vada sotto la linea)?
      – Come posso distanziare i blocchi sullo stesso livello? Sono completamente attaccati.

      Grazie mille per eventuali delucidazioni.

      Rocco.

      Ciao,

      ti consiglio di dare un’occhiata a questo post che potrebbe esserti utile. I riquadri hanno di per se una grandezza automatica in base al testo inserito al loro interno; poi è possibile impostare in ogni caso un’ altezza e lunghezza minima.

      Per le linee guida: guarda nel post.

      Io in realtà ho in mente un modo per fare il lavoro in maniera più semplice dal punto di vista utente (qualcosa simile al codice di esempio che hai riportato): il problema è che ci vuole un po’ di tempo, soprattutto per gestire bene il problema dei collegamenti da crearsi con segmenti.

      Ti faccio sapere quando ho qualcosa di interessante.

      Ciao
      Claudio

    • #74341
      Up
      0
      Down
      ::

      cfiandra” post=73413
      Ciao,

      ti consiglio di dare un’occhiata a questo post che potrebbe esserti utile. I riquadri hanno di per se una grandezza automatica in base al testo inserito al loro interno; poi è possibile impostare in ogni caso un’ altezza e lunghezza minima.

      Per le linee guida: guarda nel post.

      Io in realtà ho in mente un modo per fare il lavoro in maniera più semplice dal punto di vista utente (qualcosa simile al codice di esempio che hai riportato): il problema è che ci vuole un po’ di tempo, soprattutto per gestire bene il problema dei collegamenti da crearsi con segmenti.

      Ti faccio sapere quando ho qualcosa di interessante.

      Ciao
      Claudio

      Ciao.
      Grazie ancora per la risposta. Ieri sera ho già consegnato il lavoro, ma il post che mi hai proposto é interessante. Effettivamente é davvero un po’ macchinoso impostare manualmente tutte le distanze tra i nodi e le relazioni di ereditarietà esplicitando i collegamenti. Un pacchetto come l’avrei concepito io sarebbe sicuramente utile!

      Non mi intendo troppo di LaTeX (sono un semplice utilizzatore) ma immagino che non sia semplice creare un pacchetto, e che comunque prenda non poco tempo. Ad ogni modo se decidi di farlo fammi sapere, perché potrebbe essere davvero utile averlo a disposizione! =).

      Saluti,
      Rocco.

    • #74342
      Up
      0
      Down
      ::


      Ti segnalo che ho trovato TikZ-UML che sicuramente è più efficace di quanto avrei potuto fare io.

      Ciao
      Claudio

    • #74343
      Up
      0
      Down
      ::


      Grazie.

      L’avevo già visto (sempre troppo tardi), ma non avendo bisogno del formalismo UML ho pensato che non sarebbe stato molto bello utilizzare un pacchetto UML per poi utilizzarlo alla carlona. Però lo terrò a mente, grazie ancora.

      R.

    • #74344
      Up
      0
      Down
      ::


      Non c’entrano niente con LaTeX, ma potresti provare a vedere se fanno al caso tuo questi due programmi:
      BOUML
      PyNSource

      Ciao ciao.
      Fra

    • #74345
      Up
      0
      Down
      ::


      Grazie mille ma ho risolto con TiKZ in maniera un po’ grezza!

      =)

    • #74346
      Up
      0
      Down
      ::


      Ciao a tutti.

      Sono finiti gli esami mi sono rimesso a programmare e ho avuto un’altra idea, riguardante sempre un metodo per creare la mappa delle gerarchie di classe contenente solo i nomi di quest’ultime (niente di più complicato).

      Sarebbe fantastico se esistesse un pacchetto in cui si inserisce solamente il nome della cartella in cui sono contenuti i file header (.h) e quest’ultimo va a spulciarli e a cercare la gerarchia delle classi in automatico! :mrgreen: :mrgreen: :mrgreen:

      È fattibile? Io non sarei assolutamente in grado di farlo (conoscenze di LaTeX troppo scarse), ma magari qualcuno a cui piace l’idea e ha voglia di mettersi dietro… 😉

      Ciao,
      R.

Visualizzazione 11 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top