Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Teoria di programmazione Java, Appunti di Elementi di Informatica

Definizione di terminologie utilizzate in Java e nella Programmazione a oggetti

Tipologia: Appunti

2020/2021

Caricato il 11/05/2021

marcogi98
marcogi98 🇮🇹

4.5

(4)

7 documenti

1 / 5

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Polimorfismo: si riferisce in generale alla possibilità data ad una determinata espressione di assumere
valori diversi in relazione ai tipi di dato a cui viene applicata.
Signature: è il nome del metodo e l'elenco dei parametri (esempio: setMax (int, int) ).
Metodo: Un metodo raggruppa un insieme di istruzioni assegnando loro un nome. L’insieme di istruzioni di
un metodo può essere eseguito ogni volta che è necessario semplicemente riferendosi ad esso attraverso il
nome. Nei linguaggi orientati a oggetti esistono due tipi di metodi: metodi di istanza e metodi di classe (o
statici).
Metodo (Altra definizione): Un metodo raggruppa una sequenza di istruzioni che realizzano una
funzionalità del programma e assegna loro un nome. Ogni qualvolta è necessario eseguire quella
funzionalità, è sufficiente richiamarla attraverso il nome. Un metodo è quindi una porzione di codice
riusabile. Quando si usa un metodo, si dice che si invoca o chiama il metodo. Java ha due tipi di metodi:
quelli che restituiscono un valore, e quelli che eseguono delle istruzioni ma non restituiscono alcun valore.
Classi: Gli oggetti di un programma possono rappresentare oggetti del mondo reale (come automobili o
case) oppure astrazioni (come colori, forme o parole). Una classe è la definizione di un tipo di oggetto. Un
oggetto viene assegnato a variabili di tipo classe. Gli oggetti hanno associati dei dati e possono effettuare
delle azioni. Queste azioni sono definite da metodi. Si possono creare, o meglio istanziare, più oggetti della
stessa classe.
Hiding: Information hiding letteralmente vuol dire nascondere le informazioni. In un programma, la
possibilità dì nascondere alcune informazioni viene vista come una qualità del linguaggio che semplifica il
lavoro dei programmatori e rende più comprensibile il codice sviluppato. Una variabile di istanza viene resa
privata usando la parola chiave private al posto della parola chiave public. Le parole chiave public e private
sono esempi di modificatori d’accesso o modificatori di visibilità.
Incapsulation:
L’incapsulamento consiste nel nascondere tutti i dettagli della definizione di una classe che non sono
necessari per usare le istanze create da quella classe. L’incapsulamento è la chiave della programmazione
orientata agli oggetti. Una qualsiasi classe è essenzialmente costituita da dati e metodi. La filosofia
dell’incapsulamento è semplice. Essa si basa sull’accesso controllato ai dati mediante metodi che possono
prevenirne l’usura e la non correttezza dei dati stessi. A livello di implementazione, ciò si traduce nel
dichiarare privati i membri di una classe e quindi inaccessibili al di fuori della classe stessa (a tale scopo
esiste il modificatore private). Allora, l’accesso ai dati, potrà essere fornito da un’interfaccia pubblica
costituita da metodi dichiarati public, e quindi accessibili da altre classi. In questo modo, tali metodi
potrebbero ad esempio permettere di realizzare controlli prima di confermare l’accesso ai dati privati.
Perché variabili private? Tutte le variabili di istanza di una classe dovrebbero essere dichiarare come
private. In questo modo si costringe un programmatore che debba usare la classe ad accedere alla variabile
di istanza solo attraverso i metodi della classe. Questo permette alla classe di controllare tutte le attività di
lettura e scrittura dei valori delle variabili di istanza.
Overloading: Quando si assegna lo stesso nome a due o più metodi all’interno di una stessa classe si dice
che si sta effettuando overloading del nome del metodo, letteralmente si sta “sovraccaricando” di significati
il metodo. Per compiere questa operazione è necessario che le definizioni dei diversi metodi presentino
differenze nell’elenco di parametri che ricevono. Se si effettua \overloading di un nome di metodo, cioè se
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Teoria di programmazione Java e più Appunti in PDF di Elementi di Informatica solo su Docsity!

Polimorfismo: si riferisce in generale alla possibilità data ad una determinata espressione di assumere valori diversi in relazione ai tipi di dato a cui viene applicata. Signature: è il nome del metodo e l'elenco dei parametri (esempio: setMax (int, int) ). Metodo: Un metodo raggruppa un insieme di istruzioni assegnando loro un nome. L’insieme di istruzioni di un metodo può essere eseguito ogni volta che è necessario semplicemente riferendosi ad esso attraverso il nome. Nei linguaggi orientati a oggetti esistono due tipi di metodi: metodi di istanza e metodi di classe (o statici). Metodo (Altra definizione): Un metodo raggruppa una sequenza di istruzioni che realizzano una funzionalità del programma e assegna loro un nome. Ogni qualvolta è necessario eseguire quella funzionalità, è sufficiente richiamarla attraverso il nome. Un metodo è quindi una porzione di codice riusabile. Quando si usa un metodo, si dice che si invoca o chiama il metodo. Java ha due tipi di metodi: quelli che restituiscono un valore, e quelli che eseguono delle istruzioni ma non restituiscono alcun valore. Classi: Gli oggetti di un programma possono rappresentare oggetti del mondo reale (come automobili o case) oppure astrazioni (come colori, forme o parole). Una classe è la definizione di un tipo di oggetto. Un oggetto viene assegnato a variabili di tipo classe. Gli oggetti hanno associati dei dati e possono effettuare delle azioni. Queste azioni sono definite da metodi. Si possono creare, o meglio istanziare, più oggetti della stessa classe. Hiding: Information hiding letteralmente vuol dire nascondere le informazioni. In un programma, la possibilità dì nascondere alcune informazioni viene vista come una qualità del linguaggio che semplifica il lavoro dei programmatori e rende più comprensibile il codice sviluppato. Una variabile di istanza viene resa privata usando la parola chiave private al posto della parola chiave public. Le parole chiave public e private sono esempi di modificatori d’accesso o modificatori di visibilità. Incapsulation: L’incapsulamento consiste nel nascondere tutti i dettagli della definizione di una classe che non sono necessari per usare le istanze create da quella classe. L’incapsulamento è la chiave della programmazione orientata agli oggetti. Una qualsiasi classe è essenzialmente costituita da dati e metodi. La filosofia dell’incapsulamento è semplice. Essa si basa sull’accesso controllato ai dati mediante metodi che possono prevenirne l’usura e la non correttezza dei dati stessi. A livello di implementazione, ciò si traduce nel dichiarare privati i membri di una classe e quindi inaccessibili al di fuori della classe stessa (a tale scopo esiste il modificatore private). Allora, l’accesso ai dati, potrà essere fornito da un’interfaccia pubblica costituita da metodi dichiarati public, e quindi accessibili da altre classi. In questo modo, tali metodi potrebbero ad esempio permettere di realizzare controlli prima di confermare l’accesso ai dati privati. Perché variabili private? Tutte le variabili di istanza di una classe dovrebbero essere dichiarare come private. In questo modo si costringe un programmatore che debba usare la classe ad accedere alla variabile di istanza solo attraverso i metodi della classe. Questo permette alla classe di controllare tutte le attività di lettura e scrittura dei valori delle variabili di istanza. Overloading: Quando si assegna lo stesso nome a due o più metodi all’interno di una stessa classe si dice che si sta effettuando overloading del nome del metodo, letteralmente si sta “sovraccaricando” di significati il metodo. Per compiere questa operazione è necessario che le definizioni dei diversi metodi presentino differenze nell’elenco di parametri che ricevono. Se si effettua \overloading di un nome di metodo, cioè se

si assegna lo stesso nome a più definizioni di metodi di una stessa classe, Java distingue i metodi sulla base del numero di parametri che ricevono e dei tipi di parametri. Se un’invocazione di metodo corrisponde alla definizione di un metodo in termini di nome, tipo del primo argomento, tipo del secondo argomento e così via, allora Java esegue quel metodo. Overriding: Se una classe derivata definisce un metodo che ha lo stesso nome, gli stessi parametri (in termini di tipo, ordine e numero) e anche lo stesso tipo di ritorno di un metodo della classe base, il metodo della classe derivata ridefinisce il metodo presente nella classe base (overriding). Overloading vs overriding: Non si deve confondere overriding di un metodo con overloading di in metodo. Quando si effettua overriding della definizione di un metodo, la nuova definizione del metodo nella classe derivata ha lo stesso nome, lo stesso tipo di ritorno e gli stessi parametri in termini di tipo, ordine e numero. Se invece il metodo nella classe derivata avesse lo stesso nome e lo stesso tipo di ritorno, ma un numero differente di parametri o anche un solo parametro di un tipo differente dal metodo nella classe base, si sarebbe di fronte a un caso di overloading. In questa situazione, la classe derivata avrebbe entrambi i metodi. Polimorfismo: Il polimorfìsmo (polymorphism) permette di modificare la definizione dei metodi nella classe derivata e far sì che questi cambiamenti siano effettivi anche per il codice della classe base. Tutto ciò avviene in modo automatico in Java. Il termine polimorfismo fa riferimento alla capacità di assegnare più significati a uno stesso nome di metodo, sfruttando il meccanismo di binding dinamico. Quindi, polimorfismo e binding dinamico fanno riferimento al medesimo concetto. Binding dinamico : Il binding dinamico fa si che l’invocazione di un metodo venga associata alla sua definizione solamente a run-time, quindi nel momento in cui l’invocazione viene effettivamente eseguita. Quando Java non usa il binding dinamico? java non utilizza il binding dinamico per i metodi privati, i metodi final e i metodi statici. Nel caso dei metodi privati e final, l’assenza di binding dinamico non rappresenta un limite, perché comunque esso non sarebbe di alcuna utilità. Al contrario, l’assenza del binding dinamico per i metodi statici può essere significativa quando il metodo statico viene invocato utilizzando un oggetto chiamante (invece che mediante il nome della classe che lo definisce), cosa che avviene più spesso di quanto si pensi. Upcasting: Assegnare un oggetto di una classe derivata a una variabile del tipo della classe base (o una qualsiasi superclasse) è spesso chiamato upcast (letteralmente “conversione verso l’alto) perché è come fare la conversione dal tipo derivato al tipo della classe base e, normalmente, i diagrammi che mostrano la relazioni di ereditarietà riportano le classi base sopra le dassi derivate. Downcasting :La conversione da una classe base a una classe derivata (o da una superclasse a una sottoclasse) viene chiamata downcast (letteralmente “conversione verso il basso*).È una responsabilità del programmatore quella di utilizzare il downcast solamente nd casi in cui ha senso farlo. Il compilatore non fa alcun controllo per verificare che il downcast sh sensato. In ogni caso, se si usa il downcast in situazioni dove non ha senso, solitamente sarà prodotto un messaggio d’errore a run-time. Classe astratta: Una classe astratta è una classe che ha alcuni metodi non completamente definiti. Non è possibile creare nuovi oggetti utilizzando il costruttore di una classe astratta, ma è possibile utilizzare una

Altra definizione: Una collezione Java è una classe che contiene oggetti. Questo concetto è reso più preciso dall’interfaccia Collection. Una collezione Java è una qualunque classe che implementi l’interfaccia Collection. L’interfaccia Collection consente di scrivere codice che può essere applicato a tutte le collezioni Java, così che non è necessario riscrivere il codice per ogni specifico tipo dì collezione. Collection costituisce l’ interfaccia più generica della libreria Java che contiene le classi per le collezioni. Questa interfaccia descrive le operazioni di base che devono essere implementate da tutte le classi di tipo collezione. Struttura dati: Una struttura dati è un costrutto, per esempio una classe o un array, all’interno di un linguaggio di programmazione. Una struttura dati le cui dimensioni aumentano o diminuiscono durante l'esecuzione del programma viene chiamata dinamica. Un tipo di struttura dinamica è basata sugli array. A titolo esemplificativo, si presenta la classe ArrayList definirà nella Java Class Library. ArrayList: L’ArrayList presenta due grandi svantaggi. Un’istanza di ArrayList è meno efficiente di un array. Un’istanza di ArrayList può memorizzare solo oggetti; non può contenere valori di un tipo primitivo, come int, double o char. Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato. Per superare questa limitazione Java mette a disposizione la classe ArrayList, contenuta nel package java.util che permette di rappresentare sequenze di oggetti di lunghezza variabile. Ciascun oggetto in un’istanza di ArrayList viene identificato da un numero intero, detto indice, che ne indica la posizione. L’ArrayList è quindi simile ad un array e le differenze principali sono due: La dimensione può variare durante l'esecuzione di un programma, gli elementi contenuti sono di un solo tipo: Object

Importante

Keyword static: La keyword static in java viene usata per definire una proprietà di oggetti e metodi che sono condivisi da più istanze di una stessa classe. Ciò significa che questo tipo di proprietà non è riferita ad una istanza della classe, ma bensi alla classe stessa. Overriding: Se una classe derivata definisce un metodo che ha lo stesso nome, gli stessi parametri (in termini di tipo, ordine e numero) e anche lo stesso tipo di ritorno di un metodo della classe base, il metodo della classe derivata ridefinisce il metodo presente nella classe base (overriding). Keyword Private: La parola chiave private è un modificatore di accesso utilizzato per attributi, metodi e costruttori, rendendoli accessibili solo all'interno della classe dichiarata. Keyword Protected :La parola chiave protected è un modificatore di accesso utilizzato per attributi, metodi e costruttori, rendendoli accessibili nello stesso pacchetto e sottoclassi. Keyword Extends: In Java, la parola chiave extends viene utilizzata per indicare che una nuova classe è derivata dalla classe di base utilizzando l'ereditarietà. Costruttore: il Costruttore è un metodo speciale di una classe che viene invocato quando un nuovo oggetto viene istanziato attraverso la keyword new.

Ereditarietà : Meccanismo per definire una nuova classe (classe derivata) come specializzazione di un’altra (classe base). La classe base modella un concetto generico e la classe derivata modella un concetto più specifico Keyword abstract class : La parola chiave abstract viene utilizzata per ottenere l'astrazione in Java. Una classe astratta è una classe che ha alcuni metodi non completamente definiti. E’ possibile utilizzare una classe astratta come classe base per la definizione di classi derivate. Keyword public: La parola chiave public è un modificatore di accesso utilizzato per classi, attributi, metodi e costruttori, rendendoli accessibili da qualsiasi altra classe. Linguaggio tipato: Un linguaggio si dice tipato se il tipo di tutte le variabili e’ determinato a tempo di compilazione Interface : Un’interfaccia Java (Java interface) è un componente di un programma che contiene le intestazioni di un certo numero di metodi. Metodo ricorsivo: Un metodo si dice ricorsivo quando all'interno della propria definizione compare una chiamata direttamente al metodo stesso.