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!

copertina

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI

Classi, oggetti, interfacce, ereditarietà,
polimorfismo, incapsulamento

indice

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.

MI PIACE, LO VOGLIO!

CHAPTER DETAIL

Breviario dei capitoli che compongono il libro

Icona del capitolo

CLASSI E OGGETTI

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

Icona del capitolo

INCAPSULAMENTO

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

Icona del capitolo

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é...

Icona del capitolo

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...

Icona del capitolo

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...

Icona del capitolo

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...

Icona del capitolo

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!...

Icona del capitolo

LE INTERFACCE

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

Icona del capitolo

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...

Icona del capitolo

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
voto voto voto voto voto

"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
voto voto voto voto voto

"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
voto voto voto voto voto

Alessandro Stella

CONOSCI L'AUTORE

Quattro parole su di me. Ma se vuoi approfondire...

Ciao,
sono Alessandro Stella e mi occupo di informatica dal 1994...
Durante gli anni ho imparato molte cose e ho acquisito due lauree, la prima in informatica, conseguita presso l'Università degli Studi di Bari, e la seconda in Editoria, conseguita presso l'Università degli Studi di Udine.

Dal 2012 mi interesso di editoria digitale.
Ho scritto e pubblicato diversi libri mediamente apprezzati e ne sto ultimando altri due.

LEGGI LA MIA STORIA...

GLI ALTRI MIEI LIBRI

Elenco dei libri da me scritti e pubblicati

  • copertina ebook creare un e-book

    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.

    APPROFONDISCI...

  • copertina libro html5, css3, javascript

    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.

    APPROFONDISCI...

  • copertina libro user experience

    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.

    APPROFONDISCI...

  • copertina libro html5, css3, javascript

    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.

    APPROFONDISCI...