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

Contenuto cancellato Contenuto aggiunto
Riga 8:
= Programmazione a oggetti =
=== Tipo di dato astratto ===
''(documentazione e stato interno)''
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.
 
Nella programmazione a oggetti è esattamente così. Un oggetto considera un altro oggetto solo in funzione dei messaggi che può inviargli e del significato di questi messaggi, ma non del modo in cui questi messaggi siano realmente implementati. L'elenco dei messaggi è scritto in linguaggio Java ed è definito dalla classe di cui l'oggetto è istanza; il loro significato è definito da commenti aggiuntivi, scritti in linguaggio naturale, che collettivamente sono chiamati ''documentazione''. Ad esempio:
<br />''TODO: inserire qui del codice Java che definisce l'interfaccia di una classe con (metodi e documentazione), seguito da un paragrafo che indichi come il solo elenco dei metodi non sia sufficiente, portando come esempio (e conferma) un metodo il cui nome potrebbe un significato diverso da quello indicato nella documentazione, ma altrettanto plausibile.''
 
Alla base della programmazione orientata agli oggetti c'è il concetto di [[:w:tipo di dato astratto|tipo di dato astratto]], ovvero un tipo definito da una collezione di operazioni e dal loro significato (''semantica''). I ''client'' attivano le operazioni sulle istanze di quel tipo, senza conoscerne i meccanismi interni, ma solo in funzione del loro significato.
 
; Stato interno
''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 ===