Varie domande su java

di il
5 risposte

Varie domande su java

Salve, sono Cristian faccio 4° superiore, sono stato rimandando in informatica, sto facendo una simulazione di domande in java data dalla mia professoressa.
me ha date 16 domande in cui non ho risposto 2 domande.
Scrivo tutte le domande + le mie risposte(se c'è da migliorare una risposta accetto molto volentieri, cosi capisco dove ho sbagliato)

1)Come si ottiene un riferimento ad un oggetto? è una variabile che punta all'indirizzo di memoria dove si trova il valore dell'oggetto
2)Quali membri di una classe si dichiarano privati e perchè? le variabili che vengono dichiarate nella classe sono attributi, perchè gli attributi non possono essere richiamati dall'esterni della classe
3)Qual è il significato del modificatore final per un attributo? quando dichiariamo final a un attributo diventa una costante, quindi è solo visibile nella stessa classe
4)Quando un attributo si dichiara final e in tal caso qual è la visibilità più idonea? quando dichiariamo final a un attributo diventa una costante quindi è solo visibile nella stessa classe
5)Come si definiscono gli attributi condivisibili da tutte le istanze della stessa classe?campi/attributi/variabili statici (o di classe). Li roconosci perché hanno tutti la parola chiave static davanti e sono condivisi da tutte le istanze di una classe (i campi non statici invece hanno un valore che dipende dalla singola istanza, ossia dal singolo oggetto che crei)
6)è necessario il metodo costruttore in una classe? Si, è necessario il metodo costruttore di una classe, in cui il compito è proprio quello di creare nuove istanze(Oggetti)
7)Quando necessita l'utilizzo della parola chiave static?
8)Descrivere la differenza tra variabili di stanza e variabili di classe? La variabile istanziati vengono create quando si crea l'oggetto e continuano esistere finche si può accedere all'oggetto; La variabile di classe viene memorizzato un unico valore che è comune a tutti gli oggetti della classe
9)Qual è il valore assunto da un puntatore ad un oggetto dichiarato ma non allocato? se dichiari un oggetto e basta (cioè NON fai una new, oppure non lo assegni ad altro oggetto della stessa classe) non viene allocata memoria per l'oggetto, quindi l'oggetto ha valore null; il valore null è inizializzato direttamente dal compilatore ed indica che non si riferisce a nulla (non "punta" a niente).
10)Descrivere la differenza tra dichiarazione e allocazioni di un oggetto
11)Gli oggetti dove sono allocati e da cosa dipende la quantità di spazio occupato? Gli oggetti sono stati allocati indirizzi di memoria, dipende quanti attributi hai istanziati
12)Quale componente di java allocata gli oggetti in memoria e quali li elimina? <Penso che è "gaber collection"> //Non ho risposto
13)Tutte le classi di un applicazione contengono il metodo main ()? no, non necessariamente
il metodo main non deve essere definito per forza in tutte le classi; chiaramente se vuoi far partire il programma ce ne deve essere almeno uno in una classe pubblica
14)Perchè il file in cui è salvata la classe che contiene il metodo main () deve avere lo stesso nome della classe?è una richiesta specifica del linguaggio: in Java se definisci una classe in un file, il nome del file deve coincidere col nome della classe;
se definisci più classi in un file, solo una può essere public e il file assume il nome della classe pubblica
15)Perchè il metodo main () è statico "Static"? il metodo main () è statico perchè quando avvia un programma non esiste ancora alcun oggetto
16)Cos'è this, e quando si utilizza? This in italiano vuol dire "Questo" si riferisce davanti a un oggetto o un attributo per evitare errori logici
Grazie a tutti voi per la vostra attenzione

5 Risposte

  • Re: Varie domande su java

    1)Come si ottiene un riferimento ad un oggetto? è una variabile che punta all'indirizzo di memoria dove si trova il valore dell'oggetto

    NO: sta' chiedendo come si ottiene non che cosa e'

    2)Quali membri di una classe si dichiarano privati e perchè?
    le variabili che vengono dichiarate nella classe sono attributi, perchè gli attributi non possono essere richiamati dall'esterni della classe

    NI: i membri di una class non sono variabili NE attributi, inoltre ne esistono di DUE tipi: metodi e field

    3)Qual è il significato del modificatore final per un attributo?
    quando dichiariamo final a un attributo diventa una costante, quindi è solo visibile nella stessa classe

    NI: il fatto di essere costante non centra nulla con la visibilita'

    4)Quando un attributo si dichiara final e in tal caso qual è la visibilità più idonea? quando dichiariamo final a un attributo diventa una costante quindi è solo visibile nella stessa classe

    NI: il fatto di essere costante non centra nulla con la visibilita'

    5)Come si definiscono gli attributi condivisibili da tutte le istanze della stessa classe?
    campi/attributi/variabili statici (o di classe). Li roconosci perché hanno tutti la parola chiave static davanti e sono condivisi da tutte le istanze di una classe (i campi non statici invece hanno un valore che dipende dalla singola istanza, ossia dal singolo oggetto che crei)

    EUREKA!

    6)è necessario il metodo costruttore in una classe? Si, è necessario il metodo costruttore di una classe, in cui il compito è proprio quello di creare nuove istanze(Oggetti)

    NI: e' utile ma non necessario. Ci sono casi specifici quando non serve dichiararlo

    7)Quando necessita l'utilizzo della parola chiave static?

    ???

    8)Descrivere la differenza tra variabili di stanza e variabili di classe? La variabile istanziati vengono create quando si crea l'oggetto e continuano esistere finche si può accedere all'oggetto; La variabile di classe viene memorizzato un unico valore che è comune a tutti gli oggetti della classe

    EUREKA

    9)Qual è il valore assunto da un puntatore ad un oggetto dichiarato ma non allocato? se dichiari un oggetto e basta (cioè NON fai una new, oppure non lo assegni ad altro oggetto della stessa classe) non viene allocata memoria per l'oggetto, quindi l'oggetto ha valore null; il valore null è inizializzato direttamente dal compilatore ed indica che non si riferisce a nulla (non "punta" a niente).

    EUREKA

    10)Descrivere la differenza tra dichiarazione e allocazioni di un oggetto

    ???

    11)Gli oggetti dove sono allocati e da cosa dipende la quantità di spazio occupato? Gli oggetti sono stati allocati indirizzi di memoria, dipende quanti attributi hai istanziati

    NI: sta' chiedendo dove, non come sono referenziati. gli attributi sono dichiarati NON istanziati

    12)Quale componente di java allocata gli oggetti in memoria e quali li elimina? <Penso che è "gaber collection"> //Non ho risposto

    ?? si chiama Garbage Collector ma ha il compito di eliminarli NON di allocarli

    13)Tutte le classi di un applicazione contengono il metodo main ()? no, non necessariamente
    il metodo main non deve essere definito per forza in tutte le classi; chiaramente se vuoi far partire il programma ce ne deve essere almeno uno in una classe pubblica

    EUREKA

    14)Perchè il file in cui è salvata la classe che contiene il metodo main () deve avere lo stesso nome della classe?è una richiesta specifica del linguaggio: in Java se definisci una classe in un file, il nome del file deve coincidere col nome della classe;
    se definisci più classi in un file, solo una può essere public e il file assume il nome della classe pubblica

    EUREKA

    15)Perchè il metodo main () è statico "Static"? il metodo main () è statico perchè quando avvia un programma non esiste ancora alcun oggetto

    NO: static non centra niente con l'avvio del programma

    16)Cos'è this, e quando si utilizza? This in italiano vuol dire "Questo" si riferisce davanti a un oggetto o un attributo per evitare errori logici

    NO: this non centra niente con gli errori logici!
    Sei grave ma non in pericolo di vita

    Ti consiglio di ristudiare dall'inizio.
    Alcuni concetti li hai capiti correttamente ma altri, MOOLTO simili, ti sfuggono, il che non ha molto senso
  • Re: Varie domande su java

    Cristian02 ha scritto:


    1)Come si ottiene un riferimento ad un oggetto? è una variabile che punta all'indirizzo di memoria dove si trova il valore dell'oggetto
    Se si intende "come", ci sono vari modi: un oggetto lo ottieni dalla creazione con new Tipo( ... ), oppure da un metodo che restituisce un reference. O da una variabile reference. Qualunque variabile reference, in generale, o vale null o fa riferimento ad un oggetto.

    Cristian02 ha scritto:


    2)Quali membri di una classe si dichiarano privati e perchè? le variabili che vengono dichiarate nella classe sono attributi, perchè gli attributi non possono essere richiamati dall'esterni della classe
    I campi ("field") "di classe" o "di istanza" e i metodi li dichiari private per non renderli accessibili dall'esterno. Tipicamente perché sono dati e comportamenti che non hanno significato/utilità all'esterno e devono quindi restare "nascosti".

    Cristian02 ha scritto:


    3)Qual è il significato del modificatore final per un attributo? quando dichiariamo final a un attributo diventa una costante, quindi è solo visibile nella stessa classe

    4)Quando un attributo si dichiara final e in tal caso qual è la visibilità più idonea? quando dichiariamo final a un attributo diventa una costante quindi è solo visibile nella stessa classe
    final rende solo il valore non modificabile (ovvero una "costante"). Non c'entra con la visibilità (un field può essere public e final).

    Cristian02 ha scritto:


    5)Come si definiscono gli attributi condivisibili da tutte le istanze della stessa classe?campi/attributi/variabili statici (o di classe). Li roconosci perché hanno tutti la parola chiave static davanti e sono condivisi da tutte le istanze di una classe (i campi non statici invece hanno un valore che dipende dalla singola istanza, ossia dal singolo oggetto che crei)
    Sì, static indica che il membro "appartiene" alla classe e non a ciascun distinto oggetto.

    Cristian02 ha scritto:


    6)è necessario il metodo costruttore in una classe? Si, è necessario il metodo costruttore di una classe, in cui il compito è proprio quello di creare nuove istanze(Oggetti)
    Tutte le classi hanno sempre almeno 1 costruttore, non può non esserci! Se non ne scrivi almeno uno esplicitamente, il compilatore inserisce quello di "default". Se/quali/quanti costruttori inserire in una classe, dipende dal design della classe e da come deve permettere la creazione delle istanze.

    Cristian02 ha scritto:


    7)Quando necessita l'utilizzo della parola chiave static?
    Tipicamente per:
    - costanti "globali"
    - metodi di "utilità" (tipo Math.random() )

    Mentre per altre variabili/metodi è più raro usare static e solo per certi design o scenari particolari.

    Cristian02 ha scritto:


    8)Descrivere la differenza tra variabili di stanza e variabili di classe? La variabile istanziati vengono create quando si crea l'oggetto e continuano esistere finche si può accedere all'oggetto; La variabile di classe viene memorizzato un unico valore che è comune a tutti gli oggetti della classe
    Detto non benissimo ma sostanzialmente ok.

    Cristian02 ha scritto:


    9)Qual è il valore assunto da un puntatore ad un oggetto dichiarato ma non allocato? se dichiari un oggetto e basta (cioè NON fai una new, oppure non lo assegni ad altro oggetto della stessa classe) non viene allocata memoria per l'oggetto, quindi l'oggetto ha valore null; il valore null è inizializzato direttamente dal compilatore ed indica che non si riferisce a nulla (non "punta" a niente).
    Dipende: le variabili locali devono essere inizializzate esplicitamente (NON hanno un valore di default). I field reference (static e non static) hanno come default null se non c'è un inizializzatore esplicito.

    Cristian02 ha scritto:


    10)Descrivere la differenza tra dichiarazione e allocazioni di un oggetto
    Detto così, molto male. Un oggetto non lo "dichiari". Si dichiara una variabile (reference), non un oggetto.

    Cristian02 ha scritto:


    11)Gli oggetti dove sono allocati e da cosa dipende la quantità di spazio occupato? Gli oggetti sono stati allocati indirizzi di memoria, dipende quanti attributi hai istanziati
    Gli oggetti sono allocati sul heap space della JVM. Lo spazio occupato da un oggetto ovviamente dipende dalle variabili "di istanza" che possiede.

    Cristian02 ha scritto:


    12)Quale componente di java allocata gli oggetti in memoria e quali li elimina? <Penso che è "gaber collection"> //Non ho risposto
    E' la JVM che alloca gli oggetti sul heap space. Ed è sempre la JVM che elimina gli oggetti non più utilizzati tramite il garbage-collector che "reclama" gli oggetti che NON sono più "raggiungibili".

    Cristian02 ha scritto:


    13)Tutte le classi di un applicazione contengono il metodo main ()? no, non necessariamente
    il metodo main non deve essere definito per forza in tutte le classi; chiaramente se vuoi far partire il programma ce ne deve essere almeno uno in una classe pubblica
    Il main è solo il "punto di ingresso" di una applicazione. Ovviamente ne serve almeno uno.

    Cristian02 ha scritto:


    14)Perchè il file in cui è salvata la classe che contiene il metodo main () deve avere lo stesso nome della classe?è una richiesta specifica del linguaggio: in Java se definisci una classe in un file, il nome del file deve coincidere col nome della classe;
    se definisci più classi in un file, solo una può essere public e il file assume il nome della classe pubblica
    È una regola di Java. Se in un sorgente c'è una classe public, il sorgente deve chiamarsi esattamente come quella classe (estensione .java a parte).

    Cristian02 ha scritto:


    15)Perchè il metodo main () è statico "Static"? il metodo main () è statico perchè quando avvia un programma non esiste ancora alcun oggetto
    Ok

    Cristian02 ha scritto:


    16)Cos'è this, e quando si utilizza? This in italiano vuol dire "Questo" si riferisce davanti a un oggetto o un attributo per evitare errori logici
    In un metodo "di istanza" (non static), il this è il riferimento all'oggetto su cui il metodo è stato invocato. Nei costruttori il this è il riferimento all'oggetto in fase di costruzione.
    Non c'entrano "errori logici". Il this generalmente può essere usato implicitamente. Va esplicitato solo in certi casi quando ad esempio c'è una situazione di shadowing, cioè una variabile locale o parametro che "nasconde" una variabile di istanza con lo stesso nome.

    ---------

    Dai dubbi risulta una situazione un po' preoccupante. Considera che le questioni che hai posto sono davvero super-super-basilari. Non so se hai già affrontato (o se affronterai) tutti i concetti più avanzati, es. eccezioni, controllo del flusso, costrutti avanzati, collection, generics, multi-threading, ecc..
    Se vorrai vedere queste cose, dovrai (RI-)studiare davvero molto bene.
  • Re: Varie domande su java

    Grazie di cuore a tutti, che mi avete aiutato a correggere le domande, mi impegnerò molto a studiare.
    Grazie ancora
  • Re: Varie domande su java

    Ma non sara' che poi i ragazzi vedranno ogni problema con il paradigna Java ?
    Gia' adesso la ggente appena appena sa aprire EXCEL lo usa per qualsiasi cosa, fosse anche scrivere una circolare (..nell'amministrazione pubblica..).
    Una volta si diceva: si puo' scrivere un programma FORTRAN in qualsiasi linguaggio, oggi questo puo' accadere con java.
    Pero' almeno FORTRAN era un linguaggio semplice e con pochi concetti basilari, con java CREDO si rischi di distorcere proprio la capacita' di ragionamento dei fanciulli.
    Il loro problema solitamente non e' la conoscenza (scarsa) del linguaggio ma la scarsa capacita' di astrazione e ragionamento, per cui io idealmente reputerei piu' utile insegnargli a ragionare in termini informatici con l'ausilio di un metalinguaggio ed insegnare magari l'utilizzo di un linguaggio piu' semplice.
    Mi sembra come se l'obiettivo sia quello di creare una moltitudine di tornitori specializzati a lavorare su uno specifico tornio avendo poca o nulla conoscenza della meccanica (magari poi quel tornio poi verra' soppiantato da uno piu' fico).
    Tra parentesi la capacita' di astrazione ed il ragionamento sono cose che servono nella vita anche se uno non scrive programmi.
  • Re: Varie domande su java

    Mettila in questo modo: meglio per quelli che sanno fare, così possono chiedere uno stipendio piu' alto
Devi accedere o registrarti per scrivere nel forum
5 risposte