PROGRAMMARE AD OGGETTI Un libro di Alessandro Stella
La programmazione orientata agli oggetti
Tutti noi abbiamo ben chiaro in testa il concetto di casa:
muri, porte, finestre, eccetera. Se siamo un architetto la sappiamo
progettare e se siamo un muratore la sappiamo costruire.
Ma se architetti e muratori non avessero il concetto di casa,
cosa potrebbero mai fare? Per poter progettare e costruire una casa serve
innanzitutto avere in testa il concetto di casa.
Lo stesso identico discorso vale con la programmazione ad oggetti:
se non abbiamo in testa i concetti su cui si basa la programmazione
ad oggetti non riusciremo mai a progettare né a implementare un software che stia in piedi.
Scorri il Tablet virtuale e leggi l'introduzione adesso!
ANTEPRIMA PDF LO VOGLIO!PROGRAMMAZIONE ORIENTATA AGLI OGGETTI
Classi, oggetti, interfacce, ereditarietà,
polimorfismo, incapsulamento
Sinossi
La programmazione ad oggetti è una filosofia.
È un modo di pensare prima di scrivere il codice; un'idea del software
da avere prima di decidere quale linguaggio di programmazione usare per trasportare in bit quell'idea.
Conoscere la filosofia della programmazione ad oggetti è un preciso
dovere di ogni programmatore nato dopo il 1970.
Capire come pensare il codice, prima di scriverlo,
garantisce di riuscire a programmare in pochi giorni in
qualsivoglia linguaggio di programmazione ad oggetti poiché
tutti i moderni linguaggi di programmazione sono orientati
agli oggetti e quindi tutti sono sottomessi a tale filosofia.
Ecco perché è assolutamente fondamentale, prima di scegliere un
linguaggio di programmazione, conoscere le regole che lo governano.
Tutti noi abbiamo ben chiaro in testa il concetto di casa:
muri, porte, finestre, eccetera. Se siamo un architetto la
sappiamo progettare e se siamo un muratore la sappiamo costruire.
Ma se architetti e muratori non avessero il concetto di casa,
cosa potrebbero mai fare? Niente! Per poter progettare e costruire
una casa serve innanzitutto avere in testa il concetto di casa.
Lo stesso identico discorso vale con la programmazione ad oggetti:
se non abbiamo in testa i concetti su cui si basa tale metodologia
non riusciremo mai a progettare né a implementare un software che stia in piedi.
Questo libro parla quindi dei concetti su cui si basano i progettisti
software per progettare un'applicazione; gli stessi concetti che poi
vengono usati dai programmatori per tradurre in codice il progetto.
Qui si narra la storia di un pensiero utile e saggio, un modo per
usare la propria mente al fine di scrivere un programma usando
leggi universali, evitando di scrivere codice che andrà a far
parte della sterminata e infetta razza dei “basta che funzioni”!
Gli oggetti e le classi sono i pilastri fondamentali su cui si fonda
la base concettuale della programmazione ad oggetti.
Partiremo quindi proprio dagli oggetti e, passando per le classi,
costruiremo tutta la piramide che su tali concetti si erge:
ereditarietà, polimorfismo, classi astratte, interfacce e oltre.
Insomma, è quasi un dovere leggere questo libro
(o un altro che prepari la mente alla filosofia della programmazione ad oggetti)
prima di iniziare a progettare o scrivere codice.
Introduzione
Non è mai stato particolarmente chiaro il motivo,
ma ciò che è certo è che quando si inizia la strada
della programmazione e si deve affrontare lo scoglio
della programmazione orientata agli oggetti, ci si sente
come di fronte ad una montagna alta, dalla vegetazione fitta e scura.
Non è così!
La programmazione orientata agli oggetti, in inglese OOP
(Object Oriented Programming), è la cosa più naturale che ci sia.
È stata, infatti, pensata e realizzata proprio per avvicinare
la programmazione al mondo che conosciamo, in modo che fosse
più semplice programmare. Eppure ha questa nomea di “cosa oscura”.
Le pagine che seguiranno tenteranno di abbattere questa diceria.
La programmazione ad oggetti, almeno nei concetti di base,
è davvero banale perché rispecchia il mondo che ci circonda
e di cui noi sappiamo già tutto. Possiamo forse negare
di conoscere un'automobile o una persona o una penna?
La programmazione ad oggetti si basa su oggetti quasi
sempre reali e quindi banali, ma di questo parleremo tra poco.
Ora invece cerchiamo di rispondere ad una importante domanda:
perché è importante conoscere la programmazione ad oggetti?
È importante perché tutti i moderni linguaggi di programmazione
ad alto livello usano la filosofia della programmazione ad oggetti.
Quindi conoscere la programmazione ad oggetti significa saper programmare
in java, c#, ruby, perl, php, python, ecc. Qualcuno potrebbe non essere
d'accordo con tale affermazione, ma imparare un linguaggio di programmazione
diventa molto semplice una volta che si conoscono le regole a cui è sottomesso.
A tal proposito si può fare un paragone con i numeri e le addizioni.
Se noi sappiamo solo che 2+2=4 ci troviamo in difficoltà nel
momento in cui ci viene richiesto quanto vale 3+2.
Ma se invece conosciamo il concetto di numero e il
significato dell'operazione "+", allora siamo in grado
di effettuare tutte le addizioni possibili.
Per i linguaggi di programmazione vale lo stesso discorso:
le regole su cui tutti si basano sono le regole della
programmazione ad oggetti e pertanto tutti le devono
rispettare Tutti infatti dovranno usare un modo per creare
una classe, tutti dovranno usare un modo per istanziare
un oggetto da tale classe e così via. Ecco perché conoscere
la filosofia della programmazione ad oggetti significa,
in qualche modo, saper programmare in un qualunque linguaggio
che si basi su tale filosofia. Più avanti in questo testo scriveremo
codice in diversi linguaggi di programmazione e ci accorgeremo,
in quel contesto, quanto sia vera la precedente affermazione.
Per essere precisi, si ritiene errato imparare
un linguaggio di programmazione orientato agli oggetti
senza prima aver appreso nel profondo la filosofia della programmazione ad oggetti.
Obiettivi e platea del libro
Questo testo è rivolto specificatamente a:
- Chi si avvicina per la prima volta al mondo della programmazione ad oggetti
- Chi ci ha già provato in passato, ma senza ottenere buoni risultati.
Non è un libro per chi già conosce i concetti della programmazione
ad oggetti e neanche per chi vuole imparare la sintassi di un
linguaggio di programmazione. Se vogliamo imparare la sintassi
di java, c#, php o altro, stiamo sbagliando clamorosamente testo.
Questo libro insegna le regole alle quali qualunque linguaggio
di programmazione (orientato agli oggetti) deve sottostare.
CHAPTER DETAIL
Breviario dei capitoli che compongono il libro

CLASSI E OGGETTI
La programmazione ad oggetti si basa sui concetti di "classe" e "oggetto". Questo capitolo prende in esame proprio tali concetti...

INCAPSULAMENTO
L'accesso alle proprietà del singolo oggetto dovrebbero essere gestite seguendo le specifiche dell'incapsulamento. Questo capitolo ne spiega le ragioni...

EREDITARIETÀ
Ci sono molte situazioni in cui è comodo capire se due o più classi ne possono avere una comunce da cui ereditare proprietà e metodi. Tuttavia costruire una superclasse deve seguire delle regole precise. Questo capitolo spiega come scegliere una eventuale superclasse e perché...

POLIMORFISMO
Probabilmente questo è il cuore della programmazione ad oggetti. Comprendere il polimorfismo e applicarlo correttamente nella progettazione di un software, può aiutare la manutenibilità e l'evoluzione di un progetto...

RELAZIONI TRA CLASSI
Le classi hanno spesso bisogno di usarsi vicendevolmente per raggiungere lo scopo di una funzionalità o di una componente. Ma mettere in relaziione due classi deve essere fatto nei modi opportuni. Qui vengono presi in esame...

ALTA COESIONE, BASSO ACCOPPIAMENTO
Alta coesione: una classe deve rappresentare un oggetto ben preciso e avere funzioni ben chiare e delimitate. Basso accoppiamento: bisogna ridurre i collegamenti diretti tra le clssi per ottenere un software più duttile...

LE CLASSI ASTRATTE
Una classe astratta è una classe che non può essere istanziata e potrebbe apparire priva di senso. Invece il senso ce l'ha, eccome!...

LE INTERFACCE
Un'interfaccia dovrebbe principalmente essere utilizzata per implementare una funzionalità comune in classi senza alcun rapporto tra loro...

UML: CONVENZIONI ED ESEMPI DI BASE
La progettazione e il disegno di un'applicazione devono essere realizzati con regole internazionali e comuni in modo da poter essere facilmente interpretate sia da noi stessi sia da eventuali altri collaboratori. UML ci aiuta...

CONSIGLI PRATICI
Un capitolo finalizzato a mettere in pratica alcune delle regole imparate nei capitoli precedenti...
I COMMENTI DEI LETTORI
Cosa pensa chi ha letto questo libro?
"Semplice, ottimo per avere una base di programmazione oop. Consigliato per chi inizia a programmare e deve capire i concetti fondamentali."
Riccardo Mancinelli @amazon.it
"Spiega bene cosa è la programmazione orientata ad oggetti a chi ne è completamente a digiuno. È veramente di facile comprensione e non fa riferimento a nessun linguaggio di programmazione."
Laura Marchesi @villaNovaSRL
"Un ottimo libro! In poche decine di pagine spiega semplicemente e con chiarezza i principi della programmazione orientata agli oggetti. Lo consiglio a chiunque stia per approcciarsi alla programmazione."
Matteo Guidotti @biosSRL
GLI ALTRI MIEI LIBRI
Elenco dei libri da me scritti e pubblicati
-
SELF PUBLISHING | pubblicare il proprio manoscritto senza spendere un soldo e senza partita iva
Come stampare, pubblicare e distribuire un libro senza un editore?
Cosa è un EPUB? Come facciamo a crearne uno?
E le tasse? E la partita iva?
Sono domande importanti a cui bisogna dare risposte chiare e precise.
Questo libro è uno strumento prezioso che darà una risposta a tutte queste domande e a molte altre. Corredato da una serie di video guide, appositamente realizzate e fruibili sul canale YouTube dell'autore, il testo mostra come creare correttamente un e-book in formato ePub o trasformare un libro già esistente in un e-book.
Poi, con esempi concreti e una guida passo-passo, vengono esaminati i vari canali di distribuzione: Amazon KDP, Google Play Libri, Kobo, Draft2Digital.
Infine viene indicato come compilare tutti i modelli cartacei ed elettronici necessari a sbrigare le pratiche burocratiche utili allo scopo.
Insomma, questo testo cerca di affrontare tutti gli ostacoli che un SELF PUBLISHER incontra durante il percorso di avvicinamento alla produzione e alla vendita del proprio manoscritto. -
HTML5 e CSS3: i codici del WEB
Un manuale di oltre 400 pagine che, rifacendosi ai dettami del W3C e del WHATWG, costruisce le competenze teorico-pratiche necessarie a utilizzare con cognizione di causa HTML e CSS seguendo gli standard internazionali.
L'unico prerequisito necessario per leggere questo libro è quello di saper utilizzare un computer.
Corredato da codice sorgente scaricabile e visionabile online. -
User Experience: artefatti per la felicità dell'utente
Questo libro parla della user experience come se ne parlerebbe in un corso universitario, ossia facendo riferimento agli studi scientifici e ai relativi ricercatori. Si è ritenuto opportuno utilizzare un tale approccio perché la user experience è ancora un oggetto misterioso, qualcosa da confondere volentieri con l’usabilità o con il design. Ma è sufficiente collegare il concetto di UX con le emozioni per avvertirne tutta la profondità e la diversità da altri è più diffusi concetti.
Sulla UX, Desmet & Hekkert direbbero:
"The entire set of affects that is elicited by the interaction between a user and a product including the degree to which all our senses are gratified (aesthetic experience) the meanings we attach to the product (experience of meaning) and the feelings and emotions that are elicited (emotional experience).".
Utente, prodotto, interazioni ed emozioni.
Sono queste le parole chiave che potrebbero rappresentare i contenuti di questo libro. -
HTML5, CSS3, JavaScript: Programmare per il web, lato client
Programmare per il web significa scrivere almeno due applicazioni: una chiamata client e una chiamata server le quali, comunicando tra loro, producono un'applicazione web.
Programmare per il web significa quindi imparare a programmare sia un'applicazione client sia un'applicazione server.
Questo libro si occupa di insegnare le tecniche necessarie alla realizzazione di un'applicazione client e lo fa con 400 pagine esplicitamente riferite ai principianti o ai poco esperti.