Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-01-2010, 21:19   #1
BlackAuron
Member
 
Iscritto dal: May 2006
Messaggi: 86
[Java] Array di Oggetti

Ciao a tutti ... sto cercando di muovere i primi passi con java dopo diverso tempo dedicato al javascript e al c.
Non avendo mai toccato l'idea di classe, o qualche problema a livello "concettuale", ma qua credo che il problema sia un altro, e penso sia dovuto alla dichiarazione dell'Array, ma qualcosa mi sfugge.
Idee?

Codice:
package Test;

import java.util.*;

public class Contatti {
    Contatto Elenco[] = new Contatto[10];
    Elenco[0] = new Contatto();
}

class Contatto {
    Contatto(){
        System.out.println("Costruttore Richiamato");
    }
    
    private String name = new String();

    public void setName(String s){
        name = s;
        System.out.println("Name Set");
    }
}
--- come non detto, risolto ... era una noobbata

Ultima modifica di BlackAuron : 02-01-2010 alle 21:47.
BlackAuron è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2010, 21:38   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Codice:
public class Contatti {
    Contatto Elenco[] = new Contatto[10];

    public Contatti() {
        Elenco[0] = new Contatto();
    }
}
Il corpo di una classe può contenere solo dichiarazioni di variabili (o metodi o costruttori o inizializzatori... o un sacco di cose ma non espressioni a meno che non sia parte di un'inizializzazione contestuale alla dichiarazione).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2010, 23:00   #3
sprik
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 27
Quote:
Originariamente inviato da BlackAuron Guarda i messaggi
Codice:
    private String name = new String();
Dato che stai cominciando, è buona norma che le inizializzazione di eventuali attributi vadano nel costruttore della classe e non nella dichiarazione.
sprik è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 11:39   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Perchè?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 15:23   #5
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
infatti, perchè?
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 15:38   #6
sprik
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 27
Ma perchè secondo voi il costruttore a che serve?
Per definizione, il costruttore è un metodo che serve per inizializzare gli attributi di una classe, ecc.

L'inizializzazione degli attributi nella loro dichiarazione è una cosa stile paradigma imperativo, invece, in quello ad oggetti è buona norma inizializzarlo nel costruttore. Poi ognuno lo fa come gli piace, nessuno si lamenta, nemmeno il compilatore!
sprik è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 15:45   #7
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Il costruttore serve ad inizializzare a valori specifici i campi, ma se questi sono comuni per tutti i tipi di istanze creabili, è bene inizializzarli in fase di dichiarazione. Per di più, java, utilizza le inizializzazione di default ed inserisce il costruttore vuoto, in assenza di altre dichiarazioni.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 16:13   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Le "buone norme" possono essere suggestive ma sono pericolose perchè generalmente non hanno un riscontro obiettivo.

Uno usa o non usa una caratteristica del linguaggio secondo l'aderenza dei suoi presupposti e dei suoi effetti al risultato che vuole ottenere.

Per Java, riguardo all'inizializzazione dei campi, vale quanto segue:

1. se il valore iniziale del campo deve essere quello predefinito -> dichiarazione senza inizializzazione.

2. se il valore iniziale del campo è diverso da quello predefinito e dipende da espressioni computabili a partire dal valore iniziale di campi precedenti o di costanti -> dichiarazione con inizializzazione.

3. se l'espressione di inizializzazione di cui al punto 2 richiede la dichiarazione di variabili computabili a partire da costanti o da valori di altri campi e quelle variabili non sono a loro volta campi -> inizializzazione in un blocco di inizializzazione.

4. se il valore iniziale del campo dipende da valori esterni alla classe dell'istanza inizializzata -> inizializzazione nel costruttore.

La 4 vale anche nel caso in cui la procedura di inizializzazione possa essere decidibile da un sottotipo tramite l'invocazione di supercostruttore alternativo.

E', se vogliamo, un esercizio di sintesi: ripeto, uno scrive quanto è strettamente necessario all'effetto che vuole ottenere.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 19:27   #9
sprik
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 27
Alt, voi parlate strettamente di Java...dovreste pensare nell'ottica generale di programmazione ad oggetti.
E' normale che se parlate di java dite "vabbè questo lo posso evitare tanto ci pensa lui, bla, bla, ecc" ma se parlate in un contesto generale, teoria vera e propria di programmazione ad oggetti la cosa cambia.
Se parlate di C++, beh...li l'inizializzazione di quel tipo nn ci sta un po' malino? del resto sfogliando il libro trovate "in C++ è possibile inizializzare una variabile nella sua dichiarazione", e qui di nuovo alt, si parla di variabile, non di attributi.
Per quanto possano essere simili, variabili ed attributi sono cose totalmente diverse.
Poi vabbè, in qualsiasi libro di Java, compresi i miei, trovate le assegnazioni di default, ecc...ma se prendete un libro di teoria di programmazione ad oggetti? beh, le cose cambiano...perciò stiamo attenti a distinguere cosa fa Java e cosa è realmente la programmazione ad oggetti.
sprik è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 20:03   #10
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
In un topic su Java si suppone che si dia una risposta su Java. Da un punto di vista orientato agli oggetti la questione è irrilevante.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 20:17   #11
sprik
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 27
Certo, si dice così per ogni linguaggio.
sprik è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2010, 20:37   #12
khelidan1980
Senior Member
 
L'Avatar di khelidan1980
 
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
mah a dire il vero la tendenza ormai è di usare getter e setter,e poi tu dici di fare riferimento alla teoria generale e poi fai esempi con il C++
__________________
Khelidan
khelidan1980 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2010, 00:03   #13
sprik
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 27
Con getter e setter tu ti riferisci al name masking che è tutta un'altra cosa, con scopi diversi, che già esisteva prima ancora della programmazione ad oggetti...solo che adesso va di moda.
sprik è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Opera: la VPN gratuita si accende in aut...
Giochi capaci di costruirsi in tempo rea...
Giochi DX11 su Intel Arc e Proton: le ot...
Bentley Torcal ufficiale: 876cv e ricari...
Counter-Strike 2: con poche modifiche, V...
Silent Hill potrebbe tornare al cinema c...
L'integrazione di ChatGPT su Siri è stat...
ASML: 'Non vendiamo assolutamente nulla ...
Anthropic limita Claude Opus 5.5 nello s...
Microsoft 365, l'Antitrust respinge le p...
SAP NOW AI Tour Milan: una giornata con ...
Quake Champions dice addio al free-to-pl...
Anker AeroClip 2, li indossi e dopo un p...
Notebook ASUS da gaming per il Back to S...
Auto elettriche UE al 21,7%: sorpasso si...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:08.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v