Libro Java – Capitolo 1

Indice degli argomenti:

  1. Hardware e Software
  2. Sistema Operativo
  3. Teoria dei linguaggi di programmazione
    • Linguaggio Macchina
    • Linguaggio Assembly
    • Linguaggi ad alto livello
    • Linguaggio java e confronto con altri linguaggi ad alto livello
  4. Programmazione orientata agli oggetti introduzione
  5. Il linguaggio UML per la programmazione ad oggetti 2.0
  6. Fasi di sviluppo software
  7. Esempio di sviluppo di una classe in Java
  8. Proviamo la prima  classe Java

Introduzione
L’obiettivo di questo libro strutturato sotto forma di capitoli, è quello di introdurti alla programmazione in Java secondo la metodologia orientata ad oggetti, già per altro esposta nell’introduzione all’opera. Ritengo utile, quindi effettuare una breve introduzione a concetti fondamentali dell’informatica. Se sei un lettore che ha già un minimo di conoscenze sugli argomenti, puoi tranquillamente saltare questa prima parte e passare direttamente alla parte di introduzione “Programmazione orientata agli oggetti”. Al termine di ogni capitolo, sarà possibile verificare le conoscenze, le competenze e le abilità raggiunte attraverso test, prove strutturare e anche esercizi di codice che saranno tutti rivolti nell’appendice delle soluzioni.

Hardware e Software

Quando si parla di un computer o in generale di un calcolatore occorre terner presente, che esso è sempre formato da due parti ben distinte l’Hardware e il Software, il primo è l’insieme delle componenti elettroniche composte ad tantissimi circuiti elettronici di varia tipologia che discuteremo più avanti, il secondo è l’insieme delle istruzioni o comandi per rendere diciamo così “vivo” e “intelligente” il nostro computer. L’hardware può funzionare senza software ma lavora in linguaggio binario ovvero da sequenze lunghissime di “0” e “1” che a secondo della rappresentazione adottata dal calcolatore delle informazioni possono essere testi, valori numerici, immagini, suoni, ecc. La rappresentazione delle informazioni è una parte importante dell’informatica senza la quale tutto il sistema informatico non potrebbe funzionare in modo così perfetto. Su questo argomento, farò qualche accenno quando parleremo più avanti delle variabili e delle costanti e del loro uso in Java.
Però una causa la possiamo dire, per far si che il calcolatore possa elaborare qualsiasi tipo di informazione deve essere presente un software che sia in grado di effettuare la traduzione in binario e viceversa. Possiamo quindi affermare che quando un’informazione di varia tipologia deve essere trasformato in binario si parla di “codifica”. mentre il processo inverso si chiama “decodifica”.
Il calcolatore quindi per essere utilizzabile in modo produttivo ha bisogno di software. Ora la struttura hardware di un computer è formata da:

  • CPU acronimo di “Central Processing Unit” che è il cuore pulsante del calcolatore che ha il compito di elaborare le informazioni, di trasferire da e verso altri dispositivi e di controllare l’intero sistema di calcolo nel suo funzionamento.
  • Memoria Centrale RAM è una memoria temporanea del calcolatore ove sono memorizzati i dati e le istruzioni che di volta in volta sono lette e e scritte dalla cpu. L’acronimo RAM sta per “Random Access Memory” è sta indicare che il tempo di lettura e scrittura dei dati è indipendente dalla posizione in cui essi sono locati. La memoria RAM è organizzata in un insieme di celle contigue ciascuna delle quali è individuata da un indirizzo unico. La cpu quando deve leggere o scrivere dati verso la memoria centrale deve conoscere gli indirizzi dove svolgerà tale operaizone.
  • Dispositivi di Input/Output non si tratta di un solo dispositivo ma di una serie di dispositivi hardware. Qualli presenti sempre nel calcolatore sono la tastiera e il mouse (entrambi di input), il monitor (output) e almeno una memoria di massa (input/output) necessaria alla memorizzazione definita dei dati. Abbiamo affermato che la memoria RAM è temporanea, ovvero i dati al suo interno sono cancellati al termine dell’elaborazione o allo spegnimento del calcolatore. Occorre una memoria secondaria permanente che possa memorizzare i dati in modo definitivo, sarà solo l’utente a decidere quando questi dati eventualmente dovranno essere cancellati.

La trattazione sull’hardware è molto sintetica in quanto non è l’argomento principale del nostro testo. Il software quindi a sua volta si distingue in software di base detto anche sistema operativo, e software applicativo.

Leggi tutto: Libro Java – Capitolo 1

Sistema operativo

Il sistema operativo ha tre compiti precisi:

  • Gestire la comunicazione uomo macchina mediante l’uso di un’interfaccia grafica o testuale che chiameremo “Console”
  • Gestire e risolvere eventuali malfunzionamenti dell’hardware e dei software
  • Garantire il funzionamento alle massime prestazioni dell’hardware a disposizione

Questi tre caratteristiche dei sistemi operativi sono insite nella sua definizione, il sistema operativo è però costituito da moduli software ai quali ad ognuno è assegnato un compito:

  • Modulo di gestore dei processori
    • a questo modulo è delegato il compito di allocare e gestire l’esecuzione del programmi sulla/e CPU disponibili
  • Modulo di gestione della memoria RAM
    • il suo compito è quello di gestire il caricamento di programmi in memoria RAM oltre che liberare lo spazio di memoria quando necessario
  • Modulo di gestione delle periferiche
    • le periferiche sono i dispositivi di input/output e quindi questo modulo si occupa del trasferimento dei dati da e verso la Memoria centrale RAM e queste periferiche
  • Modulo di gestione delle informazioni
    • alcune di queste periferiche possano essere dei dispositivi di memoria azione di massa quali un hard disk, una pen drive USB, ecc. e quindi il modulo possiede una serie di compiti che permettono di tradurre l’organizzazione logica dei dati in una struttura fisica idonea agli specifici dispositivi di memorizzazione. Tanto per citare un esempio i dati sui dispositivi di memoria di massa sono memorizzati sotto forma di file e possono essere a loro volta raccolti in cartelle. Queste due entità file e cartelle dovranno essere poi memorizzate secondo una schema specifico sul supporto di memoria di massa.

Teoria dei linguaggi di programmazione

Un software è quindi un insieme di programmi atti allo svolgimento di un’attività anche complessa, pensiamo al software di elaborazione testi e alla sue numerose possibilità che vanno dalla redazione di documenti semplici, alla stampa di lettere e buste, alla correzione ortografica in varie in molte lingue. Per realizzare un software è necessario un approccio sistemico specifico e di questo ne parleremo quando si affronterà il discorso dell’ingegneria del software. Ora però concentriamo la nostra attenzione sul concetto di programma informatico e sulla sua realizzazione.
Un programma è una sequenza di operazioni più o meno complessa che operando su insieme di dati assolve alla risoluzione di un compito specifico.   La scrittura di un programma, prevede l’uso di un linguaggio “artificiale” che è costituito da un dizionario finito di termini, da una sintassi e semantica rigida precisa. Ora tale linguaggio “artificiale” può essere di “alto livello” o “basso livello”. Nella prima categoria rientrano il linguaggio macchina che è formato da codici binari da impartire direttamente alla CPU, e che è valido solo per qualla famiglia di CPU. Nel mondo dei calcolatori sono presenti ad esempio CPU a 32 bit e CPU a 64 bit, le prima elaborando 4 byte per volta (un byte è otto bit, il bit è una singola cifra binaria “0” o “1”), le seconde 8 byte, e questo comparato ad esempio che un programma scritto in codice macchina per una cpu a 64 nit non potrà mai essere eseguito su una CPU a 32 bit. Anche se le cpu sono a 32 bit non sono compatibili tutte fra loro, pensiamo all’architettura Intel/AMD e all’architettura ARM che sono sia a 32 bit che a 64 bit nei modelli più recenti ma di fatto non sono compatibili fra loro.
Da queste considerazioni il linguaggio macchina è dipendente completamente dallas specifica CPU: In alcuni ambiti però è opportuno scrivere ancora programmi in codice macchina, per risolvere la questione ad ogni codice binario di un’istruzione che svolge un compito specifico è stato associato un codice “mnemonico” che aiutasse il programmatore nella scrittura di questi “micro programmi”.
E’ stato così ideato il linguaggio Assembly che altro non è che la traduzione “mnemonica” dl linguaggio macchina ed è quindi anch’esso un linguaggio a basso livello.
L’uso di un linguaggio a basso livello risulta sconveniente da come abbiano visto per molteplici ragioni, sono stati così ideati i linguaggi ad alto livello ovvero che sono costituiti da regole e vocabili comprensibili all’essere umano e che sono orienati al problema. 
Dagli anni settanta, in poi da quando i computer sono entrati nelle prime grandi aziende, università e multinazionali diversi linguaggi di programmazione sono stati ideati elencarli tutti è molto difficile i più importanti sono il linguaggio C, il Basic, il Fortran, il Cobol, il Pascal, il C++, e solo nel 1991 viene definito da un gruppo di ricercatori della Sun Microsystem il linguaggio Java.
L’obiettivo del linguaggio Java era quello di prendere tutte le caratteristiche del linguaggio C++, la cui fortuna è stata appunto, l’introduzione dello sviluppo mediante la programmazione ad oggetti.
Ma facciamo un passo indetto e illustriamo alcune caratteristiche dei linguaggi di programmazione nominati prima. Il basic nasce grazie alla Microsoft come linguaggio “General Purpose” ovvero un linguaggio di programmazione che poteva essere utilizzato per ogni ambito applicativo. Il fortran e il Pascal sono dei linguaggi anch’essi molto versatili ma che hanno fatto la loro fortuna per la presenza di numerose funzionalità dedicate al calcolo scientifico complesso. Infatti questi ultimi sono stati utilizzati molto nell’ambito accademico. Il linguaggio C è stato inventato nel Bell Laborotory negli USA ed è stato definito come un linguaggio di programmazione molto versatile e utilizzato per scrivere gran parte dei moduli software di alcuni sistemi operativi come Linux/Unix. La potenza del C è la capacità di integrare al suo interno anche delle funzionalità per l’interazione con l’hardware a basso livello.
Negli anni il C poi è stato esteso ed è nato il C++, infatti il C prevede un approccio procedurale, mentre nel C++ oltre a numerose nuove funzionalità è stata introdotta la possibilità di lavorare con la metodologia ad oggetti.
Il linguaggio Java è rispetto al C++ per certi aspetti molto più potente e versatile, grazie alla presenza nel linguaggio di numerose linerie di “classe” che permettono all’utente di lavorare in modo più agevole nella scrittura di programmi e soprattutto queste “classi” sono ben documentate e validate dal gruppo di lavoro che si occupa di pubblicare ogni sei mesi le nuove versioni di Java,

Programmazione orientata agli oggetti

In questo parte vediamo alcuni fondamenti della programmazione ad oggetti, che poi verranno approfondite nei prossimi capitoli.
Lo sviluppo di applicazioni software in java avviene con la metodologia di programmazione orientata agli oggetti, una metodologia che permette di effettuare uno sviluppo di un progetto software in modo più aderente al reale da risolvere.
Per comprendere meglio tale metodologia dobbiamo definire due entità fondamentali la classe e l’oggetto.
La classe rappresenta un insieme di informazioni e delle operazioni possibili su di essa lettura e scrittura, ad esempio  è possibile definire la classe “calcolatrice” che deve permettere di svolgere le operazioni sui numeri.. In questo caso, possiamo pensare la classe composta da dei dati i numeri e dalle quattro operazioni aritmetiche fondamentali. I numeri sul quale deve lavorare la classe sono semplificando il discorso, tre e precisamente i due numeri che l’utente digita sulla calcolatrice, e il risultato che viene ottenuto con l’operazine scelta sempre dall’utente.

Per continuare a leggere questo articolo devi sottoscrivere un abbonamento
Puoi abbonarti al link al menù principale o cliccando sul link Abbonati Ora!