Partirò da una citazione dell'articolo A Laboratory For Teaching Object-Oriented Thinking:
One of the distinguishing features of object design is that no object is an island. All objects stand in relationship to others, on whom they rely for services and control. The last dimension we use in characterizing object designs is the collaborators of an object. We name as collaborators objects which will send or be sent messages in the course of satisfying responsibilities. Collaboration is not necessarily a symmetric relation.
La parte iniziale è un concetto fondamentale: gli oggetti vanno considerati in relazione degli oggetti con cui collaborano e non come entità singole.
Purtroppo l'ambiente di sviluppo non aiuta in questo senso perchè visualizzando il sorgente di una classe per volta rendo difficile la visualizzazione degli oggetti con cui collabora.
Cercherò di chiarire questo concetto con una metafora: è come se volessi insegnare la geografia senza una cartina. Ovviamente posso scrivere che l'Italia confina con la Francia, L'Austria, ecc., ma senza una cartina non potrò mai dire di conoscere la geografia.
La domanda a questo punto sorge spontanea: negli oggetti qual è la cartina?
Come nella geografia ne esistono di diversi tipi. Quella che rende meglio l'idea di un oggetto che collabora con gli altri oggetti è il communication diagram introdotto in UML 2. Il communication diagram fa parte degli interaction diagram tra cui è ben più famoso il sequence diagram. Per approfondire l'argomento consiglio la lettura di questo pdf, tratto dal libro di Larman Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development.
Ne riporto un esempio:
L'idea che sta alla base del communication diagram è simile a quella che ebbe originariamente Alan Kay uno dei padri della programmazione ad ogggeti. In sintesi gli oggetti comunicano scambiandosi messaggi, nel caso di c# il messaggio è una chiamata ad un metodo.
Nel diagramma in figura il Controller collabora con il ListinoPrezzi, il Counter e il Display scambiandosi i messaggi GetPrice, IncrementBy, ecc. Come potete notare la collaborazione tra gli oggetti è evidente in questa schematizzazione.
Consiglio vivamente di usare i communication diagram per il design della propria architettura perchè aiuta a ragionare ad oggetti e non in modo procedurale.
Leggere sul monitor del PC a lungo mi stanca la vista allora ho deciso di acquistare un e-book reader con tecnologia e-ink. Ho deciso di scartare l'ipotesi IPad perchè ha lo schermo retroillumanto e quindi avrei lo stesso problema di lettura che sul video del PC.
La mia scelta è caduta sul Kindle DX graphite per la dimensione dello schermo poco più piccola di 10 pollici. In questo modo si riesce a leggere agevolmente un PDF senza bisogno di zoom.
Un'altro aspetto che mi ha fatto propendere per il Kindle è stato la connessione 3G gratuita con la quale si può accedere a wikipedia in inglese ed al sito di Amazon su cui si possono acquistare gli e-book.
Lo schermo è perfetto per la lettura, l'ho usato per diverse ore e non ho notato differenze rispetto alla carta stampata. Se il formato lo consente si possono ingrandire i caratteri a piacimento, mentre per i PDF lo zoom avviene per l'intera pagina e poi bisogna scollare.
Con mia sopresa non supporta il formato epub comunque con un software tipo calibre è possibile convertire in diversi formati tra cui anche quello del kindle (AZW). L'ho provato con The Early History of Smalltalk un libro in formato html e il risultato è stato buono.
Per copiare i libri sul lettore ci sono due possibilità: tramite USB oppure inviandolo al proprio indirizzo @kindle, nel secondo caso il servizio non è gratuito per l'Italia e si appoggia alla rete WhisperNet. Si hanno a disposizione circa 4 gb per i propri e-book.
Durante la lettura selezionando una parola viene visualizzato il suo significato con il dizionario Oxford in inglese.
Il modello graphite ha la funzionalità auto rotation, ma l'ho dovuta disabilitare perchè troppo sensibile e a volte si attivava senza che avessi girato lo schermo magari solo inclinandolo leggermente.
Se lo acquistate ricordatevi di prendere la presa europea, perchè all'interno della confezione viene fornito un cavo microusb per caricare la batteria direttamente dal pc e un adattatore americano. Infine non viene fornita nessuna custodia per cui conviene acquistarla sempre sul sito di amazon io ho preso la Belkin Neoprene. Il tutto mi è costato all'incirca 400 euro compreso di tasse di importazione e spese di spedizione.
In sintesi sono soddisfatto dell'acquisto era quello che volevo e a parte i difetti che ho descritto i pregi li superano di gran lunga.