Utente:LoStrangolatore/Sac à poche: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Riga 1:
== Programmazione a oggetti (Java) ==
{{vedi anche|Java/Programmazione ad oggetti}}
 
Riga 6:
*Vedi anche [[:commons:Category:Object-oriented_design]]
 
=== Tipo di dato astratto ===
= Programmazione a oggetti =
=== Tipo di dato astratto ===
Ciò avviene anche nel mondo reale. Un esempio: in genere, una persona non conosce gli esatti meccanismi burocratici che vengono attivati da una richiesta svolta ad un ufficio pubblico o non; tutto ciò che fa è inviare la richiesta e attendere che sia completata. Ciò che il cliente conosce è il concetto di ''richiesta inviata a tale ufficio'' e il comportamento che ci si aspetta da tale ufficio in conseguenza della richiesta.
 
Line 18 ⟶ 17:
''TODO: inserire qui l'implementazione della classe di cui sopra, e usarla per mostrare che gli oggetti hanno un proprio stato interno. Validità dello stato interno di un oggetto.''
 
=== Incapsulamento ===
Si consideri un qualunque oggetto meccanico o elettronico, come un computer. All'interno del computer ci sono dispositivi che l'utente non vede: il processore, i cavi di collegamento tra le periferiche, e così via. L'utente vede solo l'esterno, ovvero il ''case'' e le periferiche. Analogamente, nella maggioranza dei casi, per creare un oggetto è necessario definire più membri di quelli che si vogliono rendere disponibili ai client. I client non devono avere accesso ai membri interni, i quali sono ad uso privato dell'oggetto stesso.
 
Line 26 ⟶ 25:
I vantaggi sono molteplici. Infatti, ciò impedisce di scrivere un client (difettoso o malevolo) che modifichi erroneamente lo stato interno dell'oggetto; inoltre, permette di modificare in futuro la classe in esame senza dover ricompilare i client, ovviamente a patto che l'interfaccia resti immutata.
 
=== Responsabilità ===
Esempio: un programma è come un'azienda e gli oggetti sono come i dipendenti. Ogni dipendente non può svolgere un compito che appartiene ad un altro: non può entrare nel suo ufficio, consultare le sue scartoffie, e firmare i documenti al suo posto; né può svolgere per conto suo una richiesta ad un altro ufficio della stessa azienda o di altre aziende; non gli spetta, anche nel caso in cui può tecnicamente farlo (per es. se le scartoffie non sono state messe sotto chiave e il computer non è protetto da password). Invece, tutto ciò che può (e che deve) fare è contattare l'impiegato, e chiedergli che ''lui stesso'' svolga quel compito. Nella programmazione a oggetti, ciò significa che ogni oggetto deve limitarsi a svolgere il proprio compito (in gergo si parla di ''responsabilità''), e per attivare gli altri compiti deve limitarsi ad inviare messaggi agli oggetti di competenza.
 
Ad esempio: se una azienda ha dei dipendenti, e ogni dipendente ha un conto corrente, allora inviare un messaggio al dipendente dicendogli "ricevi stipendio" è preferibile ad inviare un messaggio "incrementa" al suo conto corrente.
 
=== Documentazione ===
La documentazione è una vera e propria [[:w:specifica|specifica]], quindi dovrebbe essere chiara, precisa e univoca (non ambigua), perché è il documento di riferimento per i programmatori che scrivono i ''client'' per la parte di programma interessata.
 
Line 41 ⟶ 40:
Un altro modo di documentare il codice è fare uso di [[Java/Annotazioni|annotazioni]].
 
=== Esempi non ancora assegnati ===
==== Laboratorio di ricerca ====
{{cassetto|titolo=Esempio|testo=
Ad esempio, supponiamo che un laboratorio di ricerca ci chieda di scrivere un programma per il calcolo scientifico. Il programma sarà installato sui computer del laboratorio (che sono vecchi e poco potenti) e farà svolgere i calcoli ad un server: un supercomputer che si trova in Florida ed appartiene all'Università che finanzia il laboratorio. I ricercatori inseriranno i dati nel programma, che li passerà al supercomputer, e questi li elaborerà; il nostro programma riceverà i risultati e li mostrerà ai ricercatori, sullo schermo o stampandoli su carta.
Line 50 ⟶ 49:
}}
 
==== Inventario di un negozio ====
{{cassetto|titolo=Esempio|testo=
Ad esempio, si supponga di voler scrivere un programma per la gestione dell'inventario di un negozio. Per semplicità, consideriamo un minimarket con una sola cassa, con un computer. Il proprietario inserisce nel programma il materiale acquistato dal grossista, indicandone la quantità precisa, e il materiale acquistato dai clienti, anche in questo caso indicandone la quantità; il programma calcola la differenza e segnala quando c'è bisogno di comprare nuovi oggetti dal grossista.