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


Programmazione ad oggetti Java, Schemi e mappe concettuali di Programmazione Java

Java questions and answer italiano

Tipologia: Schemi e mappe concettuali

2020/2021

Caricato il 17/01/2023

Maktia
Maktia 🇮🇹

4

(1)

5 documenti

1 / 13

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
- differenza jdk, jre, jvm
JDK = Il Java Development Kit, abbreviato in JDK, è l'insieme del software e degli
strumenti necessari per compilare, eseguire e testare applicazioni
JRE = Un ambiente di runtime Java™ (JRE) è costituito dai componenti minimi necessari
per creare ed eseguire un'applicazione Java, e fa parte del Java Development Kit (JDK).
JVM = La Java Virtual Machine (JVM) è una macchina virtuale che consente a un
computer di eseguire un programma Java. JVM imita un vero processore Java,
permettendo di svolgere su qualsiasi processore, indipendentemente dal sistema
operativo, l'operazione di interpretazione del bytecode Java e conversione in linguaggio
macchina.
- perché java non è 100% orientato agli oggetti
- differenza equals() e ==
InJava, l'operatore== confronta i due oggetti per vedere se puntano alla stessa posizione di memoria;
mentre il metodo .equals() confronta effettivamente i due oggetti per vedere se hanno lo stesso valore
dell'oggetto.
- spiega public static void main(String[] args)
Il modificatore+public rende il metodo richiamabile dal codice Java esterno alla classe;
Il modificatore+static permette di richiamare un metodo di una classe senza dover
prima creare un oggetto della classe.+
Il parametro+String[] args del metodo+main() serve a passare dei parametri al
programma al momento della richiesta di esecuzione, definisce un array di stringhe.
- cosa sta alla base della portabilità di java
nel senso che una generica applicazione Java può venire eseguita dalla maggior parte
delle macchine.
Compilazione e interpretazione = Il codice sorgente di un’applicazione Java risiede in+file
con estensione .java.
l’azione di compilazione ad opera del compilatore Java, genera un
secondo file .class con lo stesso nome dell’originale, ma con estensione diversa.
questo è+ l’applicazione +vera e propria e come talepuò essere eseguita da una
macchina.
.java contiene le istruzioni Java scritte dal programmatore, aprendo il file .class con un
editor di testo, vedremo una serie di simboli a noi incomprensibili che sarebbero le
istruzioni in bytecode interpretabile solo dalla JVM che attua l’interpretazione.
Quindi diciamo che Java è un linguaggio portabile perché la medesima applicazione
Java, con estensione .class, è eseguibile su un qualsiasi sistema che contenga una JVM.
- spiega principi alla base della programmazione OOP
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Anteprima parziale del testo

Scarica Programmazione ad oggetti Java e più Schemi e mappe concettuali in PDF di Programmazione Java solo su Docsity!

- differenza jdk, jre, jvm JDK = Il Java Development Kit, abbreviato in JDK, è l'insieme del software e degli strumenti necessari per compilare, eseguire e testare applicazioni

JRE = Un ambiente di runtime Java™ (JRE) è costituito dai componenti minimi necessari

per creare ed eseguire un'applicazione Java, e fa parte del Java Development Kit (JDK).

JVM = La Java Virtual Machine (JVM) è una macchina virtuale che consente a un

computer di eseguire un programma Java. JVM imita un vero processore Java, permettendo di svolgere su qualsiasi processore, indipendentemente dal sistema operativo, l'operazione di interpretazione del bytecode Java e conversione in linguaggio macchina.

- perché java non è 100% orientato agli oggetti - differenza equals() e == In Java, l'operatore == confronta i due oggetti per vedere se puntano alla stessa posizione di memoria; mentre il metodo. equals() confronta effettivamente i due oggetti per vedere se hanno lo stesso valore dell'oggetto. - spiega public static void main(String[] args)

Il modificatore public rende il metodo richiamabile dal codice Java esterno alla classe;

Il modificatore static permette di richiamare un metodo di una classe senza dover

prima creare un oggetto della classe.

Il parametro String[] args del metodo main() serve a passare dei parametri al

programma al momento della richiesta di esecuzione, definisce un array di stringhe.

- cosa sta alla base della portabilità di java nel senso che una generica applicazione Java può venire eseguita dalla maggior parte delle macchine.

Compilazione e interpretazione = Il codice sorgente di un’applicazione Java risiede in file

con estensione .java. l’azione di compilazione ad opera del compilatore Java, genera un secondo file .class con lo stesso nome dell’originale, ma con estensione diversa. questo è l’applicazione vera e propria e come tale può essere eseguita da una macchina. .java contiene le istruzioni Java scritte dal programmatore, aprendo il file .class con un editor di testo, vedremo una serie di simboli a noi incomprensibili che sarebbero le istruzioni in bytecode interpretabile solo dalla JVM che attua l’interpretazione. Quindi diciamo che Java è un linguaggio portabile perché la medesima applicazione Java, con estensione .class, è eseguibile su un qualsiasi sistema che contenga una JVM.

- spiega principi alla base della programmazione OOP

Ereditarieta = Si tratta di gerarchia, la possibilità di rendere una classe superclasse ad un altra e

viceversa. → Ereditarietà singola e non multipla!

- A eredita da B sia il suo stato che il suo behavior (comportamento)

  • quindi un’istanza della classe A è utilizzabile in ogni parte del codice in cui sia possibile utilizzare una istanza della classe B. l'ereditarietà è un meccanismo fondamentale sia per il riutilizzo del codice che per lo sviluppo incrementale di programmi. Questo meccanismo permette infatti di estendere e potenziare classi già esistenti, senza ridefinire variabili e metodi d'istanza già presenti.

Incapsulamento = L'incapsulamento è un meccanismo che consiste nel raccogliere i dati e i

metodi all'interno di una struttura nascondendo l'implementazione dell'oggetto, cioè impedendo l'accesso ai dati con altri mezzi. Una classe in Java è un classico esempio di incapsulamento poiché racchiude i dati e i metodi in una singola unità.

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. Prendiamo in considerazione l’overloading e l’override.

- cos'è il classloader Java Class Loader è una parte di Java Runtime Environment che carica dinamicamente le classi Java nella Java Virtual Machine. Di solito le classi vengono caricate solo su richiesta. Il sistema runtime Java non ha bisogno di conoscere file e file system poiché questo è delegato al caricatore di classi. - cos'è un costruttore Il costruttore è quel metodo di una classe il cui compito è proprio quello di creare nuove istanze, oltre ad essere il punto del programma in cui una nuova entità viene creata e resa disponibile. - costruttore può essere final Quando imposti un metodo come FINAL significa: "Non voglio che nessuna classe lo sovrascriva" e non avrebbe senso per il costruttore. - costruttore torna un valore

No

- perché main è statico Il metodo main() è statico perché quando si avvia il programma non esiste ancora alcun oggetto, pertanto il primo metodo del programma deve essere statico. - differenza static final/

Static = possibilità di richiamare un qualcosa statico senza istanziare una classe

Final = Rendere un attributo o qualcosa costante, cioe che non varia nel tempo

- cosa è this

- cos'è l'ereditarietà e perché viene utilizzata

Ereditarieta = Si tratta di gerarchia, la possibilità di rendere una classe superclasse ad un altra e

viceversa. → Ereditarietà singola e non multipla!

- A eredita da B sia il suo stato che il suo behavior (comportamento) - quindi un’istanza della classe A è utilizzabile in ogni parte del codice in cui sia possibile utilizzare una istanza della classe B. l'ereditarietà è un meccanismo fondamentale sia per il riutilizzo del codice che per lo sviluppo incrementale di programmi. Questo meccanismo permette infatti di estendere e potenziare classi già esistenti, senza ridefinire variabili e metodi d'istanza già presenti. - differenza variabile, metodo e classe final

Variabili = le variabili sono spazi di memoria usati per memorizzare dei valori numerici,

alfanumerici o booleani.

Metodi = Operazioni ad alto livello che permettono la gestione e manipolazione dei dati

Classe final = Una classe non modificabile una volta creata.

- differenza tra classe astratta ed interfaccia Una classe astratta può avere al suo interno modificatori di accesso dei suoi metodi, proprietà, ecc. Un'interfaccia non può utilizzare modificatori di accesso per metodi, proprietà, ecc.

L’interfaccia dichiara cosa fa una classe (normale) mentre la classe implementa i metodi

dichiarati.

- è possibile fare l'override di un metodo statico Un metodo statico non è associato a nessuna istanza di una classe, quindi il concetto non è applicabile. - Che funzione ha il Garbage Collector? si intende una modalità automatica di gestione della memoria, mediante la quale vengono liberate porzioni di memoria non più utilizzate dalle applicazioni. - A cosa serve l'istruzione Break?

Semplicemente per uscire dal ciclo

- A cosa serve l'istruzione RETURN?

Per far ritornare valori ecc ecc….

- si può istanziare classe astratta

No

- può una classe essere final

Si, lo è ad esempio la classe String, classe Boolean .. ecc

- è possibile dichiarare protected per variabili nelle interfacce

Non avrebbe senso, si utilizza una classe astratta a questo punto.

- si può definire un metodo statico nelle interfacce

Si, si definiscono statici i metodi dato che un interfaccia non può essere istanziata.

- cos'è un package Nel linguaggio Java il package è un pacchetto contenente gruppi di classi e interfacce. Ogni package è finalizzato a svolgere determinati compiti. - cos'è static import

Possibilità di importare una libreria ad esempio ed essendo specifici poi possiamo non scrivere il

nome della libreria dato che la abbiamo nell importanti

- qual è la base class per Error e Exception

Throwable

- cos'è un blocco finally

Blocco utilizzato nella gestione delle eccezioni, viene sempre eseguito a meno che non si

evochino metodi o procedure da non farlo eseguire ad esempio System.exit()

- un blocco finally può essere usato senza catch

Si ma …. l finallyblocco viene utilizzato per il codice che deve sempre essere

eseguito, indipendentemente dal fatto che si sia verificata una condizione di errore (eccezione).

Il codice nel finallyblocco viene eseguito dopo il trycompletamento del blocco e, se

si è verificata un'eccezione rilevata, dopo il catchcompletamento del blocco

corrispondente. Viene sempre eseguito, anche se si è verificata un'eccezione non

rilevata nel blocco tryo catch.

Il finallyblocco viene in genere utilizzato per la chiusura di file, connessioni di rete,

ecc. Che sono stati aperti nel tryblocco.

- Cosa significa propagare un eccezione?

- cosa s'intende per reflection in java reflection è un‘infrastruttura che permette ispezionare un oggetto a runtime, al fine di scoprire la classe di appartenenza, la sua composizione in termini di metodi, campi, interfacce implementate, i modificatori utilizzati - cos'è la synchronization La sincronizzazione in Java è la capacità di controllare l'accesso di più thread a qualsiasi risorsa condivisa. Nel concetto di multithreading, più thread tentano di accedere alle risorse condivise alla volta per produrre risultati incoerenti. La sincronizzazione è necessaria per una comunicazione affidabile tra i thread. - cos'è deadlock il Deadlock è una situazione in cui due (o più) task si bloccano a vicenda aspettando che uno esegua una certa azione - elenca i principali tipi di input/output streams

INPUT STREAM = un array di byte; • un oggetto String; • un file

OUTPUT STREAM = Tabella

- cos'è una socket

Un socket è un oggetto software che permette l'invio e la ricezione di dati tramite il modello

Input/Output su file

- differenza list e set La differenza è che Set è memorizzato in modo non ordinato e non consente valori duplicati. List è usato per memorizzare elementi in modo ordinato e consente valori duplicati. Gli elementi Set non sono accessibili da una posizione di indice e gli elementi List sono accessibili con una posizione di indice. - differenza map e set

Set è una raccolta di dati che proviene da HashSet, non ammette duplicati e non è ordinata.

Map è una mappa chiave - valore

- differenza collection e collections

Collection = L'interfaccia di base per implementare le raccolte in Java

Collections = Collections è una classe di utilità presente in java.util.package. Definisce

diversi metodi di utilità come l'ordinamento e la ricerca utilizzati per operare sulla raccolta. Ha tutti i metodi statici.

- cos'è JDBC, e un driver jdbc

è il provider attraverso cui è possibile fornire connettività tra un'applicazione Java ed un database.

- quali sono i passi per connettersi ed eseguire una query a DB

  • Scaricare il driver di connessione al db
  • Ad esempio creare una classe di connessione dove configuriamo il nome e password per entrare

nel database, la porta di accesso e la url di connessione.

  • Aprire la connessione tramite ad esempio DriverManager
  • Esecuzione della query attraverso lo statement
  • Se la query è di selezione ed estrazione dati ad esempio fornire un resultSet allo statement - differenza tra statement e prepared-statement Uno Statement rappresenta una query semplice con tutti i dati specificati all'atto della creazione. Un preparedStatement permette di sviluppare uno schema di query (con parametri) che può essere utilizzato più volte con valori differenti. - quando si usa javabean JavaBeans sono componenti software riutilizzabili per Java. In pratica, sono classi scritte nel linguaggio di programmazione Java conforme al particolare tipo di convenzione del linguaggio con proprietà private e metodi pubblici getter e setter. - cosa s'intende per MVC

E’ un design pattern utilizzato fortemente per lo sviluppo di web application che richiedono

diversi livelli di interazione.

  • Model → classe che incapsula I dati e le loro funzionalità
    • View ---> si occpua della presentazioni dei dati (ce ne possono essere diverse in una

applicazione)

  • Controller --> elabora l'input dell'utente e le richieste provenienti dal model per produrre

nuove view.

- a cosa serve file di properties Le properties sono file utilizzati mantenere informazioni circa la configurazione di una applicazione - perché si fa override del metodo equals()?

Per modificare l’uguaglianza di oggetti in base alle necessarietà. Ad esempio se vogliamo che

due oggetti siano uguali se hanno lo stesso id possiamo implementarlo in questo modo.

Per impostazione predefinita se il metodo equals restituisce true, il sistema andrà oltre e

verificherà il valore del codice hash.

Se anche il codice hash dei 2 oggetti è lo stesso, gli oggetti saranno considerati uguali. Pertanto, se si sovrascrive solo il metodo equals, anche se il metodo egual override indica che 2 oggetti sono uguali, l'hashcode definito dal sistema potrebbe non indicare che i 2 oggetti sono uguali. Quindi dobbiamo anche sovrascrivere il codice hash.

E' una classe Java che permette di effettuare il forward di request/response ad una risorsa.

- cos'è un contesto In programmazione il contesto è l'insieme di tutte le informazioni che in qualche modo possono condizionare l'unità di lavoro corrente. Ad esempio l'ambiente di esecuzione utilizzato, le variabili di ambiente, le variabili di istanza, le variabili locali, lo stato di altre classi, lo stato dell'ambiente corrente, ecc. - cos'è un ORM e che vantaggi ha L’Object-Relational Mapping (ORM) è una tecnica di programmazione utilizzata per memorizzare, richiamare, aggiornare ed eliminare dati da un database all’interno di programmi object-oriented In particolare l’ORM si applica in maniera specifica ai database relazionali e si occupa di convertire e tradurre quei dati che non potrebbero altrimenti coesistere tra questi database e i linguaggi OOP.

Vantaggi → Manipolazione di dati e oggetti, codici piu piccoli, scrittura ottimizzata delle query,

protezione da code injection grazie al suo filtraggio dati

Svantaggi --→ Complessità e apprendimento lento.

DESIGN PATTERN

Factory = Definisce un’interfaccia per la creazione di oggetti, ma lascia che le sottoclassi

decidano quale classe istanziare

Singleton = Assicura che venga creata una sola istanza di una classe e che fornisca un

punto di accesso globale all’oggetto. Facade = Consente attraverso un’interfaccia più semplice di accedere a sottosistemi che espongono interfacce complesse e molto diverse tra loro. MVC = Il pattern Model-View-Controller, dividere un’applicazione in tre parti interconnesse, separando la logica di presentazione dei dati e dalla logica di business.

INVERSION OF CONTROL = Con tale pattern si intende tener disaccoppiati i singoli

componenti di un sistema ed in cui le eventuali dipendenze non vengono scritte all’interno del componente stesso, ma gli vengono iniettate dall’esterno.

- nomina i differenti moduli di Spring framework

CORE = Rappresenta la parte principale di Spring e sopra di esso è

costruito l’intero framework. I moduli di Core e Beans sono responsabili delle funzionalità di Inversion Of Control (IoC) e Dependency Injection ed

hanno come compito principale la creazione, gestione e manipolazione di oggetti di qualsiasi natura che, in Spring, vengono detti beans. DATA ACCESS = Fornisce un livello di astrazione per l’accesso ai dati mediante tecnologie eterogenee tra loro come ad esempio JDBC, Hibernate. Questo modulo tende a nascondere la complessità delle API di accesso ai dati, semplificando ed uniformando quelle che sono le problematiche legate alla gestione delle connessioni, delle transazioni e delle eccezzioni. AOP = programmazzione Aspect Oriented. AOP offre un nuovo modo di programmare che porta vantaggi ad esempio nella gestione delle transazioni. WEB = questo livello mette a disposizione un’implementazione del pattern MVC realizzando lo Spring MVC Framework TESTING = un ambiente molto potente per il test delle componenti Spring, grazie anche alla sua integrazione con JUnit

- enumera le annotation più importanti in Spring

@Autowired = Questa annotazione viene applicata a campi, metodi setter e costruttori. I

l'annotazione inietta implicitamente la dipendenza dall'oggetto.

@Required = Questa annotazione viene applicata ai metodi di impostazione dei bean. Ad

esempio uno scenario in cui devi imporre una proprietà richiesta. Il l'annotazione indica che il bean interessato deve essere popolato al momento della configurazione con la proprietà richiesta.

@Configuration = E’ un annotation che fa capire a spring che la classe con questa annotazione è

una classe di configurazione del programma.

@Bean = Annotazione utilizzata a livello di metodo. viene applicato su un metodo per

specificare che restituisce un bean da gestire dal contesto Spring @Component = Annotation utilizzata a livello di classe per indicare un componente Spring in modo che venga aggiunta al contesto e container spring. @Controller = L' annotazione viene utilizzata per indicare che la classe è un controller Spring. Questa annotazione può essere utilizzata per identificare i controller per Spring MVC @Services = Annotazione a livello di classe, è simile a @Component. Viene utilizzata per dire a spring che questa classe è una classe che esegue servizi come calcoli o richiamo di API esterne @Repository = Questa annotazione viene utilizzata sulle classi Java che accedono direttamente al database. @RequestMapping = l'annotazione viene utilizzata per mappare le richieste Web su classi e metodi del gestore specifici. Quando viene utilizzato a livello di classe crea un URI di base

protocollo di trasporto, ma non è limitato nè vincolato ad esso, dal momento che può benissimo usare altri protocolli di trasporto. A differenza di HTTP, però, le specifiche di SOAP non affrontano argomenti come la sicurezza REST = REST rappresenta un sistema di trasmissione di dati su HTTP senza ulteriori livelli, quali ad esempio appunto SOAP. I sistemi REST non prevedono il concetto di sessione, ovvero sono stateless

- cosa è un container IoC Inversion of Control (o IoC ), è il principio su cui si basano i moderni framework. Contrariamente a quanto accade utilizzando una libreria , in cui è il nostro codice a richiamare gli elementi definiti nella stessa, lavorando con un framework sarà il nostro codice ad essere richiamato dai componenti del framework. il framework implementa la gran parte della logica applicativa,