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


Ripasso informatica ereditarietà, compilatore e interprete, overloading e molto altro, Schemi e mappe concettuali di Informatica

Riassunto formato in prima parte da domande e risposte e poi da uno schema dei seguenti argomenti: -ereditarietà -orientamento ad oggetti -sottoclassi e superclassi -differenza compilatore e interprete -differenza overloading e overriding -polimorfismo -tipi di eccezioni -throws e throw -gestione input output predefinito -casting

Tipologia: Schemi e mappe concettuali

2021/2022

In vendita dal 13/04/2022

martijna
martijna 🇮🇹

5

(3)

20 documenti

1 / 5

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
DOMANDE PRIMA VERIFICA
L'acronimo OOP significa Object Oriented Programming
I metodi possono essere costruttori, modificatori, visualizzatori
Quale tra i seguenti NON è un concetto OOP? Automatismo
Quale tra le seguenti affermazioni è errata? i metodi corrispondono ai programmi
L'incapsulamento consiste nel fare in modo che i dettagli restino invisibili all'esterno
La classe è un insieme di oggetti FALSO
L'oggetto è un'istanza di una classe VERO
Nella OOP le variabili corrispondono agli attributi VERO
L'interfaccia serve per interagire con un oggetto VERO
Nella OOP l'information hiding viene realizzato mediante l'eredità FALSO
L'ereditarietà permette di propagare automaticamente attributi comuni VERO
La visibilità degli attributi può essere public, private.
Quale di queste affermazioni riferite agli oggetti della stessa classe è falsa? ogni oggetto compie azioni personalizzate
La descrizione dei metodi (implementazione dei metodi) è contenuta all'interno della classe VERO
La descrizione degli attributi (l'elenco degli attributi) è contenuta all'interno degli oggetti FALSO
Due oggetti della stessa classe hanno il medesimo comportamento VERO
Due oggetti della stessa classe possono avere attributi diversi FALSO
Lo stato di un oggetto viene definito dai suoi attributi VERO
La classe rappresenta la parte statica della OOP, l'oggetto la parte dinamica VERO
In un progetto si possono avere due classi diverse con lo stesso nome FALSO
Due classi sono uguali se non ha senso avere due classi uguali
Per definire una classe è necessario definire i tipi di dati, definire tutte le operazioni applicabili agli oggetti, garantire che
l'utente possa manipolare gli oggetti
Un oggetto è un'istanza di una classe
Il processo di astrazione crea una classe in funzione delle esigenze specifiche
In una classe possono esserci più costruttori con diversa segnatura (firma)
L'overloading consiste nell'avere metodi con lo stesso nome
I metodi possono essere costruttori e modificatori
I diritti d'accesso public permettono di definire la visibilità degli attributi VERO
I diritti d'accesso public permettono di definire la visibilità dei metodi VERO
La parte pubblica di una classe è costituita dall'insieme dei metodi e degli attributi private FALSO
La parte privata di una classe definisce come la classe lavora VERO
I metodi pubblici costituiscono l'interfaccia della classe (cioè una modalità per richiamare le funzionalità di un oggetto)
VERO
L'incapsulamento viene realizzato mascherando i metodi FALSO
Il termine overloading indica la possibilità di avere metodi/funzioni con lo stesso risultato FALSO
Per rimuovere la classe dalla memoria si usa il distruttore FALSO
Un metodo è costituito necessariamente da uno specificatore di accesso (public – private), il tipo di dati restituito dal
metodo, il nome del metodo, un elenco di parametri di ingresso
L'overloading consiste nessuna delle precedenti (nel ridefinire i costruttori della classe, nell'aggiungere attributi, nel
ridefinire i metodi, nel ridefinire gli attributi)
L'ereditarietà è un meccanismo per definire classi specializzate
L’aggregazione è una relazione non forte dove le singole parti esistono anche senza il tutto
Indicare l'affermazione errata : la sottoclasse eredita gli oggetti della sua superclasse
Con l'ereditarietà si specializza le classi figlie
La relazione IS-A è la relazione tra una superclasse (classe padre) e una sottoclasse (classe figlia)
La sottoclasse non può eliminare attributi o metodi della superclasse
La relazione di aggregazione e di composizione sono: speciali forme di associazione che specificano una relazione
whole-part (tutto-parte) tra l’aggregato (contenitore) e le parti componenti.
L'ereditarietà permette di raggruppare classi se sono correlate
L'overriding consiste nel ridefinire i metodi
L'ereditarietà permette di riusare il codice
La composizione è una relazione forte: le “classi parte” hanno un reale significato solo se sono legate alla “classe tutto”
quindi gli oggetti componenti vengono creati all’interno della “classe composta” e se il composto viene distrutto anche le
sue parti vengono distrutte.
Rispetto all'ereditarietà, il linguaggio Java permette l'implementazione dell'ereditarietà singola
La classificazione gerarchica è un elemento fondamentale nella costruzione delle classi VERO
La riusabilità del codice si ottiene con l'eredità VERO
Ogni istanza di una sottoclasse è (IS-A) un'istanza della sua superclasse VERO
La classe derivata può eliminare campi dati o metodi della superclasse FALSO
Nell'overriding il nuovo metodo ha la stessa semantica (firma) di quello ridefinito VERO
Nell'overloading il nuovo metodo ha la stessa semantica (firma) di quello ridefinito FALSO
Un linguaggio di programmazione è un insieme di regole che definiscono una notazione formale per implementare
algoritmi in modo tale da poter essere eseguiti da una macchina.
Quali delle seguenti affermazioni sono corrette? Un compilatore traduce in un’unica soluzione tutto un programma, Un
interprete traduce ed esegue un programma una istruzione alla volta, Un linker può unire programmi oggetto e librerie
anche a run-time.
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Ripasso informatica ereditarietà, compilatore e interprete, overloading e molto altro e più Schemi e mappe concettuali in PDF di Informatica solo su Docsity!

DOMANDE PRIMA VERIFICA

L'acronimo OOP significa Object Oriented Programming I metodi possono essere costruttori, modificatori, visualizzatori Quale tra i seguenti NON è un concetto OOP? Automatismo Quale tra le seguenti affermazioni è errata? i metodi corrispondono ai programmi L'incapsulamento consiste nel fare in modo che i dettagli restino invisibili all'esterno La classe è un insieme di oggetti FALSO L'oggetto è un'istanza di una classe VERO Nella OOP le variabili corrispondono agli attributi VERO L'interfaccia serve per interagire con un oggetto VERO Nella OOP l'information hiding viene realizzato mediante l'eredità FALSO L'ereditarietà permette di propagare automaticamente attributi comuni VERO La visibilità degli attributi può essere public, private. Quale di queste affermazioni riferite agli oggetti della stessa classe è falsa? ogni oggetto compie azioni personalizzate La descrizione dei metodi (implementazione dei metodi) è contenuta all'interno della classe VERO La descrizione degli attributi (l'elenco degli attributi) è contenuta all'interno degli oggetti FALSO Due oggetti della stessa classe hanno il medesimo comportamento VERO Due oggetti della stessa classe possono avere attributi diversi FALSO Lo stato di un oggetto viene definito dai suoi attributi VERO La classe rappresenta la parte statica della OOP, l'oggetto la parte dinamica VERO In un progetto si possono avere due classi diverse con lo stesso nome FALSO Due classi sono uguali se non ha senso avere due classi uguali Per definire una classe è necessario definire i tipi di dati, definire tutte le operazioni applicabili agli oggetti, garantire che l'utente possa manipolare gli oggetti Un oggetto è un'istanza di una classe Il processo di astrazione crea una classe in funzione delle esigenze specifiche In una classe possono esserci più costruttori con diversa segnatura (firma) L'overloading consiste nell'avere metodi con lo stesso nome I metodi possono essere costruttori e modificatori I diritti d'accesso public permettono di definire la visibilità degli attributi VERO I diritti d'accesso public permettono di definire la visibilità dei metodi VERO La parte pubblica di una classe è costituita dall'insieme dei metodi e degli attributi private FALSO La parte privata di una classe definisce come la classe lavora VERO I metodi pubblici costituiscono l'interfaccia della classe (cioè una modalità per richiamare le funzionalità di un oggetto) VERO L'incapsulamento viene realizzato mascherando i metodi FALSO Il termine overloading indica la possibilità di avere metodi/funzioni con lo stesso risultato FALSO Per rimuovere la classe dalla memoria si usa il distruttore FALSO Un metodo è costituito necessariamente da uno specificatore di accesso (public – private), il tipo di dati restituito dal metodo, il nome del metodo, un elenco di parametri di ingresso L'overloading consiste nessuna delle precedenti (nel ridefinire i costruttori della classe, nell'aggiungere attributi, nel ridefinire i metodi, nel ridefinire gli attributi) L'ereditarietà è un meccanismo per definire classi specializzate L’aggregazione è una relazione non forte dove le singole parti esistono anche senza il tutto Indicare l'affermazione errata : la sottoclasse eredita gli oggetti della sua superclasse Con l'ereditarietà si specializza le classi figlie La relazione IS-A è la relazione tra una superclasse (classe padre) e una sottoclasse (classe figlia) La sottoclasse non può eliminare attributi o metodi della superclasse La relazione di aggregazione e di composizione sono: speciali forme di associazione che specificano una relazione whole-part (tutto-parte) tra l’aggregato (contenitore) e le parti componenti. L'ereditarietà permette di raggruppare classi se sono correlate L'overriding consiste nel ridefinire i metodi L'ereditarietà permette di riusare il codice La composizione è una relazione forte: le “classi parte” hanno un reale significato solo se sono legate alla “classe tutto” quindi gli oggetti componenti vengono creati all’interno della “classe composta” e se il composto viene distrutto anche le sue parti vengono distrutte. Rispetto all'ereditarietà, il linguaggio Java permette l'implementazione dell'ereditarietà singola La classificazione gerarchica è un elemento fondamentale nella costruzione delle classi VERO La riusabilità del codice si ottiene con l'eredità VERO Ogni istanza di una sottoclasse è (IS-A) un'istanza della sua superclasse VERO La classe derivata può eliminare campi dati o metodi della superclasse FALSO Nell'overriding il nuovo metodo ha la stessa semantica (firma) di quello ridefinito VERO Nell'overloading il nuovo metodo ha la stessa semantica (firma) di quello ridefinito FALSO Un linguaggio di programmazione è un insieme di regole che definiscono una notazione formale per implementare algoritmi in modo tale da poter essere eseguiti da una macchina. Quali delle seguenti affermazioni sono corrette? Un compilatore traduce in un’unica soluzione tutto un programma, Un interprete traduce ed esegue un programma una istruzione alla volta, Un linker può unire programmi oggetto e librerie anche a run-time.

Quali delle seguenti affermazioni sono corrette? A run-time, un linguaggio compilato è più veloce di uno interpretato. Un assemblatore (assembler) è un traduttore da programmi scritti in assembly simbolico a programmi in linguaggio macchina Un editor è uno strumento software per la scrittura/modifica di programmi sorgente Quali delle seguenti affermazioni sono vere a proposito della Java Virtual Machine (JVM) Ogni tipo di piattaforma hardware/software ha una specifica JVM Il motto «Compile once, run anywhere» significa che il bytecode prodotto dalla compilazione Java può essere utilizzato su qualunque piattaforma hardware/software solo se fornita di JVM Indicare l’ordine corretto delle fasi di sviluppo di un programma compilato Editing, compilazione, linking, esecuzione, debugging Un programma è un insieme di istruzioni scritte secondo le regole di un certo linguaggio di programmazione per implementare un algoritmo Un debugger è uno strumento software che permette al programmatore di eseguire passo-passo le istruzioni di un programma al fine di individuare eventuali bug Un linker è Nessuna delle precedenti affermazioni (un esecutore di programmi scritti in un linguaggio di medio livello, un traduttore da programmi scritti in un linguaggio ad alto livello a programmi in linguaggio macchina, un traduttore/esecutore da programmi scritti in un linguaggio ad alto livello a programmi in linguaggio macchina) Un programma sorgente è un insieme di istruzioni scritte dal programmatore in un certo linguaggio di programmazione. Un programma oggetto è un insieme di istruzioni in linguaggio macchina generate da un compilatore o un assemblatore Il bytecode è un codice intermedio generato dal compilatore Java che deve essere interpretato dalla JVM. La portabilità del codice Java è data dal fatto che il bytecode sviluppato su una qualsiasi piattaforma hardware/software può essere eseguito su una qualsiasi piattaforma hardware/software Il garbage-collector è strumento automatico di distruzione degli oggetti non più riferiti Una libreria di un linguaggio è un insieme di funzioni già predisposte che il programmatore può richiamare dai suoi programmi Qual è la differenza tra "compilatore" e "interprete"? Il compilatore è uno strumento software che permette la traduzione in linguaggio macchina di un programma scritto in un linguaggio di alto livello. Il processo di traduzione del programma avviene in un’unica soluzione. L’interprete è un modulo software che provvede a tradurre ed eseguire il codice sorgente. A differenza del compilatore l’interprete traduce (ed esegue) una istruzione alla volta. Un compilatore è un traduttore da programmi scritti in un linguaggio ad alto livello a programmi in linguaggio macchina. La funzione di un linker è quella di unire tra loro più programmi oggetto e le librerie del linguaggio Un interprete è un traduttore/esecutore da programmi scritti in un linguaggio ad alto livello a programmi in linguaggio macchina RIPASSO VERIFICA NUOVI ARGOMENTI

EREDITARIETÀ

Nel linguaggio di programmazione Java la derivazione di una classe a partire da una classe preesistente si ottene con l'uso della parola extends SUPER → riferisce agli attributi e i metodi (compreso il costruttore) della classe derivante. DEFINIZIONE di EREDITARIETÀ L'ereditarietà è un meccanismo di astrazione finalizzato alla creazione di gerarchie di classi: con essa si ha la possibilità di riutilizzare codice comune a più classi della stessa gerarchia. La classe che viene estesa e denominata superclasse e rappresenta una generalizzazione della sottoclasse derivata, che è una specializzazione della classe originaria. FINAL → questa parola, se applicata a una classe, impedisce di estenderla per ereditarietà. COSTRUITORE→ I costruttori di una classe NON sono ereditati dalle classi derivate. Queste devano necessariamente ridefinire i propri costruttori.

OVERLOADING

L’overloading è una tecnica che consente di definire più metodi (non esclusivamente i costruttori) nell'ambito della stessa classe aventi lo stesso home, a patto che differiscano nella firma per numero e tipo dei parametri specificati. La sola modifica del tipo di valore di ritorno non è sufficiente a realizzare un Overloading e non è accettata dal compilatore può aggiungere nuovi membri a quelli ereditati o ridefinirne alcuni

STACK-TRACE → messaggio generato dalla JVM se si verifica un'eccezione non gestita del codice del programma, che riporta il tipo di eccezione generata e il metodo che l'ha causata e la catena di invocazione dei metodi che hanno determinato l'eccezione stessa ECCEZIONI PIÚ COMUNI

  • Arithmetic Exception: errori aritmetici
  • NullPointer Exception: uso di riferimenti nulli non inizializzati
  • Array Index Exception: indicizzazione di un array fuori dai limiti
  • TOException: errori di I/O
  • Erroror
  • RunTimeException

THROWS e THROW

  • THROW → interrompe l'esecuzione e solleva l'eccezione specificata come un nuovo oggetto. Implica la terminazione immediata del metodo e il passaggio del controllo al codice chiamante del metodo stesso.
  • THROWS → è usata nella firma di un metodo per elencare i tipi di eccezione che esso può generare. Bisogna dichiarate la generazione di un'eccezione nel blocco try-catch.

GESTIONE INPUT/OUTPUT PREDEFINITO

System.out.println("..."); System.in Input Stream Reader input = new InputStream Reader (System.in) Buffered Reader Keyboard = new Buffered Reader (input) l'invocazione del metodo readLine deve essere inserita in un blocco try-catch, perché c'è la possibilità di generare un eccezione di tipo IoException, ma dato che questa eccezione non può essere sollevata da nessun possibile input da parte dell’utente, il blocco catch è stato lasciato vuoto

METODI STATICI

I metodi di conversione delle classi Integer (parseInt) e Double (parseDouble) generano un eccezione di tipo NumberFormatException che è di tipo unchecked e quindi non deve necessariamente essere intercettata lasciandone l'eventuale gestione al codice chiamante. sono di tipo unchecked é un oggetto predefinito di classe Print Stream associato allo standard output Questa istruzione visualizza i risultati di un programma sullo standard output di sistema (finestra testuale sullo schermo) System.err solitamente viene utilizzato per la visualizzazione dei messaggi di errore (colora la scritta di rosso) dispone di metodi come:

  • println → acceta come parametro sia. una stringa sia un dato primitivo da.. visualizzare
  • print → non effettua ritorno a capo entrambi accettano un unico argomento e utilizzano

l'operatore di concatenazione +

ha la proprietà di convertire eventuali valori di tipi di dato predefiniti o di oggetti di classi che implementano i toString viene utilizzato per le operazioni di input e appartiene alla classe InputStream. La maggiore complessità delle operazioni di input rende necessario clonare l'oggetto ed incapsularlo in un oggetto di classe BufferedReader rende disponibile il metodo readLine, che consente di reggere dallo standard input un'intera riga di testo

COSTRUTTORE CLASSI DERIVATE

Il costruttore delle classi derivate deve inizializzare tutti gli attributi di un oggetto istanza della classe ha quindi un parametro per ogni attributo ereditato dalla superclasse più un parametro per ogni nuovo attributo definito nella sottoclasse. COSA SUCCEDE AGLI ATTRIBUTI?

  • attributi PRIVATE → non sono mai accessibili dal codice del metodi di una classe diversa da quella in cui sono dichiarati per risultare accessibili dal codice dei metodi di una classe derivata, gli attributi devono essere di tipo PROTECTED

CASTING

In una gerarchia di classi derivate è possibile assegnare un oggetto istanza di una classe della gerarchia a un riferimento avente come tipo una qualsiasi superclasse, ma non viceversa. Il linguaggio Java consente di trasformare il tipo degli oggetti mediante operazioni di CASTING. L'operatore di casting viene premesso al riferimento dell'oggetto e ha il seguente formato: (tipo) oggetto Le operazioni di casting di un riferimento possono essere utilizzate per trasformare il riferimento a un oggetto, in un riferimento avente come tipo una superclasse (UP-CASTING) oppure in un riferimento a una sottoclasse (DOWN-CASTING) DA COSA DIPENDE? Dalle relazioni di ereditarietà che intercorrono tra le classi di una gerarchia QUANDO NON É POSSIBILE EFFETTUARE IL CASTING? Quando le classi di riferimento non hanno tra loro alcuna relazione gerarchica di ereditarietà. nuovo tipo di oggetto in fase di esecuzione del programma (RUN-TIME), se l'oggetto del casting non è compatibile con il tipo del riferimento a cui viene assegnato, si può verificare un'eccezione di tipo ClassCastException