Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Algoritmi e programmazione: astrazioni e uml, Appunti di Algoritmi E Programmazione Avanzata

Appunti del corso di ALGORITMI E PROGRAMMAZIONE del prof. Fabio Sartori. Astrazioni e UML, astrazioni di struttura, esempio

Tipologia: Appunti

2022/2023

In vendita dal 05/06/2023

rossimartaa
rossimartaa 🇮🇹

4.3

(18)

156 documenti

1 / 15

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Organizzazione del corso:
Laboratori da consegnare ogni settimana per fare i parziali
- lezioni: 11 lezioni da 3 ore
- esercitazioni frontali (martedì): 6 esercitazioni da 2 ore
- laboratorio: 6 laboratori da 2 0re
3 laboratori e parziale: parziale strutturato con risposte chiuse e programmazione.
19-21 aprile primo parziale.
17-19 maggio secondo parziale.
Capitoli 8-10 sul libro.
Utilizzo del software eclipse (seconda parte del corso)
PROGRAMMAZIONE CON JAVA
ASTRAZIONI E UML
Argomento cardine del corso: programmazione a oggetti
ASTRAZIONI
L’obiettivo è rappresentare delle porzioni di realtà.
Nella vita reale siamo abituati a osservare e descrivere oggetti a vari livelli di dettaglio.
Esempi: - Dai da mangiare a Fido
- Porta a passeggio il cane
- Di quale razza è quel cane?
- Bisogna amare gli animali
Fido, cane, razza e animale sono denotazioni di oggetti a diverso livello di astrazione.
Dire ‘porta a passeggio il cane’ risulta essere sbagliato perchè concettualmente il cane non esiste, è
un'astrazione: esiste infatti un essere vivente con un nome proprio al quale è stato associato un
‘nome’, gli è stato appiccicato il concetto di cane, che appunto è un'astrazione.
Quindi quando abbiamo a che fare con la rappresentazione di oggetti è necessario distinguere il
livello di astrazione a cui ci troviamo e l’oggetto concreto a cui ci riferiamo.
Facciamo quindi considerazione su oggetti che appartengono alla stessa categoria ma a diversi livelli
di astrazione che richiederanno diverse astrazioni.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Anteprima parziale del testo

Scarica Algoritmi e programmazione: astrazioni e uml e più Appunti in PDF di Algoritmi E Programmazione Avanzata solo su Docsity!

Organizzazione del corso: Laboratori da consegnare ogni settimana per fare i parziali

  • lezioni: 11 lezioni da 3 ore
  • esercitazioni frontali (martedì): 6 esercitazioni da 2 ore
  • laboratorio: 6 laboratori da 2 0re 3 laboratori e parziale: parziale strutturato con risposte chiuse e programmazione. 19-21 aprile primo parziale. 17-19 maggio secondo parziale. Capitoli 8-10 sul libro. Utilizzo del software eclipse (seconda parte del corso)

PROGRAMMAZIONE CON JAVA

ASTRAZIONI E UML

Argomento cardine del corso: programmazione a oggetti ASTRAZIONI L’obiettivo è rappresentare delle porzioni di realtà. Nella vita reale siamo abituati a osservare e descrivere oggetti a vari livelli di dettaglio. Esempi : - Dai da mangiare a Fido

  • Porta a passeggio il cane
  • Di quale razza è quel cane?
  • Bisogna amare gli animali Fido, cane, razza e animale sono denotazioni di oggetti a diverso livello di astrazione. Dire ‘ porta a passeggio il cane ’ risulta essere sbagliato perchè concettualmente il cane non esiste, è un'astrazione: esiste infatti un essere vivente con un nome proprio al quale è stato associato un ‘nome’, gli è stato appiccicato il concetto di cane, che appunto è un'astrazione. Quindi quando abbiamo a che fare con la rappresentazione di oggetti è necessario distinguere il livello di astrazione a cui ci troviamo e l’oggetto concreto a cui ci riferiamo. Facciamo quindi considerazione su oggetti che appartengono alla stessa categoria ma a diversi livelli di astrazione che richiederanno diverse astrazioni.

CLASSI E ISTANZE

Un oggetto è un’ entità concreta , ossia un oggetto a cui posso associare delle proprietà. Il cane Fido è un oggetto con un insieme di proprietà

  • Fido, 17 kg, nero, abbaia, morde, chiama Il cane Pluto è un altro oggetto con un insieme di proprietà
  • Pluto, 36 kg, bianco, abbaia, morde, chiama Fido è un esemplare di cane. Pluto è un esemplare di cane. Nel mio immaginario attribuisco a Fido e Pluto quelle che sono le proprietà di un cane. In questo modo passo dal concreto all’astratto, classificando così oggetti diversi. Quest’astrazione prende il nome di “ instance-of ” ( istanza di ). L’oggetto Cane modella le proprietà comuni di un insieme di oggetti
  1. Quali attributi ha un cane
  • nome (che ho attribuito arbitrariamente), peso, colore
  1. Come si comporta
  • abbaia, morde
  1. Quali comandi può ricevere?
  • chiama Da un oggetto concreto derivo delle proprietà comuni a tutti gli oggetti che classifico come cani. Passo dalle caratteristiche che osservo nell’oggetto concreto alle proprietà/attributi. Allora tutti i cani hanno come attributi un nome, un peso ed un colore. Inoltre posso astrarre un comportamento e quali comandi può ricevere. A seconda degli stimoli che l’oggetto riceve o dà ad altri oggetti con cui interagisce, sto creando diversi livelli di astrazione. Quindi non è necessario descrivere separatamente Fido e Pluto: sono classificati come cani (a livello di descrizione). Cane è quindi una classe : elementi aventi caratteristiche comuni. Sappiamo già che Fido, in quanto cane, abbaia, morde e può essere chiamato, nel momento in cui andiamo a creare la classe cane l’oggetto Fido, andiamo ad attribuire alla classe dei valori specifici per gli attributi, quindi andiamo a “ personalizzare ” gli attributi: l’oggetto di nome Fido è un cane nero il cui peso è 17 kg. In questo modo ho una rappresentazione semplice e complessa del mondo: riesco a capire se la nuova identità che sto conoscendo appartiene ad una classe preesistente o se è necessario creare una classe nuova. Se devo creare un oggetto nuovo da una classe, devo attribuire dei valori ad un oggetto e creare un’ istanza. ( Analogo di quando impariamo un nuovo concetto, lavoriamo per classificazione e astrazione quando conosciamo delle nuove entità ci chiediamo se sia possibile inserirle in una classe che già abbiamo o se invece sia necessario crearne una nuova)

ASTRAZIONI DI STRUTTURA

Astrazioni strutturali: modellano oggetti e relazioni fra oggetti. CLASSIFICAZIONE (“INSTANCE_OF”) Lega istanze e classi. La classe definisce le caratteristiche comuni degli oggetti di un insieme. Ogni oggetto della classe possiede le proprietà definite dalla classe. Esempio :

  • Fido è un (esemplare di) Cane: considero la classe cane e la istanzo. GENERALIZZAZIONE (“IS_A”) Lega una classe genitore (superclasse) a una o più classi figlie (sottoclassi) che ne sono sottoinsieme. Ogni oggetto della sottoclasse appartiene anche alla superclasse. Non ho solo un legame tra classe e oggetto concreto ma posso creare più livelli di astrazione fra classi. Questo livello di astrazione iterata prende il nome di generalizzazione : posso astrarre più volte creando delle catene di astrazione fino ad arrivare ad un livello che mi permette di ottenere una rappresentazione del dominio di riferimento consona a quello che mi interessa. Esempi :
  • I cani sono mammiferi: La classe Cane è una sottoclasse della classe Mammifero
  • Gli oggetti di una classe appartengono anche a una classe più ampia
  • Fido è un Cane, quindi è anche un Mammifero
  • Ogni esemplare di Cane è anche un esemplare di Mammifero
  • Ogni esemplare di Cane possiede tutte le proprietà definite dalla classe Cane e anche tutte le proprietà definite dalla classe Mammifero Tutte le caratteristiche e il comportamento che ho descritto, si ripercuotono sulle catene sottostanti. Classificazione e Generalizzazione Attenzione: nel linguaggio comune, si usa “è un…” in entrambi i sensi. Non confondere!
  • Fido “è un” Cane
  • Fido è un oggetto concreto
  • Un Cane “è un” Mammifero
  • “un Cane” non è un oggetto concreto!!!
  • Non sto creando un oggetto concreto, sto descrivendo in maniera più approfondita alcune delle proprietà del cane. Distinguere:
  • Fido è un esemplare (instance_of) di Cane: assegno valori ad un oggetto.
  • Cane è una sottoclasse (is_a) di Mammifero: is_a si usa tra classe e classe.

AGGREGAZIONE (“PART_OF”)

Lega una classe “Aggregato” con un insieme di classi “Parti”. Ogni oggetto di Aggregato è costituito da oggetti delle classi “Parti”. Questo è un caso particolare di Associazione. Esempi :

  • Un’automobile comprende motore, carrozzeria, ruote…: potrei vederla come un’istanza di una classe automobile con attributi ruote, motore, comportamento (stringa di caratteri per numero ruote, modello … ) oppure potrei pensarla come un insieme di parti. - descrivendo il motore con una stringa, questo resta uguale nel tempo. Se dovessi pensare di sostituire una parte dell’auto, risulterebbe difficile nella programmazione.
  • Non immagino l’auto come una classe monolitica ma come un insieme di oggetti che vengono montati insieme.
  • automobile = insieme di oggetti di natura diversa. In questo modo creo all’interno di una classe delle altre associazioni con delle classi interne. Importerò quindi all’interno delle parti che possono essere sostituite rappresentando quindi un dominio in modo più realistico. Attenzione: non confondere aggregazione e generalizzazione!
  • Un Cane è un Mammifero (is_a)
  • Un Cane fa parte di un Branco (part_of) Un Cane non è un Branco! (branco = insieme di oggetti della stessa natura). ASSOCIAZIONE (“HAS_A”) Definisce una connessione logica fra oggetti di una classe e oggetti di un’altra classe Esempi:
  • Classi: Cane, Persona Associazione:
  • una Persona è padrona di un Cane
  • Cani: Fido, Pluto - Persone: Mario, Pino
  • Mario è padrone di Fido
  • Pino è padrone di Pluto Attenzione a non confondere
  • Mario è padrone di Fido
  • Fido non è parte di Mario
  • Un Cane non è una Persona

ASSOCIAZIONI

Sono linee che legano più classi e mi permettono di collegare le classi coinvolte in modo da avere una relazione fra le identità di riferimento. Se ipotizzassi di avere una persona che possiede un cane, posso stabilire una relazione fra una classe di nome persona e una di nome cane. ASSOCIAZIONINOME Nome: esprime il significato dell’associazione

  • Il nome della classe spesso è un verbo
  • Il nome è opzionale (ma fortemente consigliato…) ASSOCIAZIONIRUOLO Ruolo: esprime il ruolo giocato dal partner
  • Spesso è un sostantivo o un aggettivo
  • Opzionale (ma fortemente consigliato…) Risulta necessario specificare il ruolo con cui partecipa ognuna delle entità coinvolte.
  • In questo caso è il padrone che possiede un cane

ASSOCIAZIONI ‐ CARDINALITÀ

Cardinalità: esprime quante istanze della classe possono essere associate all’altra classe

  • Molto importante
    • quanti padroni può avere un cane? 0 o 1 (potrebbe non averlo)
    • quanti animali può possedere una persona? da 0 a un infinito (infinito si indica con *) Nella pratica: Sto modellando una relazione fra classi, è quindi necessario considerare tutte le potenziali persone e i potenziali cani. Ho una relazione “possiede” fra persona e cane.
  • Se l’entità persona partecipa alla relazione, partecipa con il ruolo “padrone” e il cane parteciperà con il ruolo “animale da compagnia”.
  • La persona potrebbe anche non partecipare alla relazione: è necessario quindi che la sua cardinalità sia 0 o 1.
  • Se avessi invece assegnato una cardinalità 1, avrei modellato il fatto che tutte le persone possiedono 0 o più cani. Esempi cardinalità : ***** : significa molti, un numero imprecisato. **1 .. *** : significa 1 a molti, non si sa quanti ma almeno 1. 1 .. 5 : da 1 a 5, è una relazione precisa. 9 : numero preciso, esattamente quel numero. 0 .. 1 : o nessuno oppure 1. 1, 4, 6 : o 1 o 4 o 6 (si usa poco). Utile per modellare i pari o i dispari.

In questo caso, ogni persona ha un cane. Luca non può stare da solo: deve avere un cane. Marco e Mario non possono condividere un cane, Pippo può avere un solo padrone.

ASSOCIAZIONI ‐ MULTIPLE

Associazione multipla : esplicita più associazioni tra una coppia di classe per arricchirne la descrizione. Se non la potessi usare, il diagramma sarebbe meno leggibile. Potrei avere delle associazioni doppie fra le entità. Le classi partecipano alle associazioni con ruoli differenti, pur essendo gli oggetti che partecipano gli stessi Esempio : - voli in aeroporto: capita che tra due entità vengano stabilite più associazioni.

  • Se il volo partecipa tramite la relazione parte, parteciperà con il ruolo partenza e l’aeroporto sarà partecipe con il ruolo di arrivo Questo modo di rappresentare la relazione duplice fra le entità mi permette di rendere più leggibile la relazione. Nell’implementazione distinguerò le due associazioni in maniera opportuna. ASSOCIAZIONI A CAPPIO Cappio : la stessa entità partecipa con due ruoli diversi ad un’associazione. L’esempio tipico è la relazione di figliolanza: un’entità della classe persona partecipa alla relazione con due ruoli diversi (unica classe persona che torna in se stessa).
  • da un lato la persona partecipa come madre: ogni persona che è madre potrebbe non avere figli (affido, morte…). La persona partecipa come madre con 1 perché ogni figlio ha soltanto una madre.
  • dall’altro lato partecipa come figlio: ogni figlio ha una madre. Figlio partecipa con 0 .. *. La relazione è unaria , la classe che partecipa è unica. Ogni volta che abbiamo un’associazione in cui le entità appartengono ad una sola classe, dobbiamo usare questo tipo di relazione.

COMPOSIZIONE

È una relazione più forte. L’oggetto parte appartiene ad un solo tutto e le parti hanno lo stesso ciclo di vita dell’insieme. Quando l’insieme muore nel mondo reale, anche le parti muoiono. All’atto della distruzione dell’oggetto principale si ha la propagazione della distruzione agli oggetti parte. Esempio :

  • In questo caso, quando viene distrutta un’automobile, ne vengono distrutte anche tutte le parti.
  • Nell’esempio precedente, se l’azienda dovesse fallire, i lavoratori non muoiono, perdono solo il lavoro ed eventualmente ne trovano un altro. Continuano quindi a vivere come persone, magari esisterebbero come “disoccupato”.
  • Fido e Pluto, pur avendo la stessa descrizione all’interno di classe, sono due oggetti diversi fra loro e mantengono questa caratteristica fino alla distruzione di entrambi. Ad uno stesso oggetto posso decidere di aggregare alcune parti e di comporne altre. ALTRI ESEMPI Il club è un'aggregazione di persone. Il poligono è una composizione di punti, nel momento di distruzione del poligono vengono distrutti anche i punti.

GENERALIZZAZIONE

Freccia con triangolo bianco.