Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
Abbiamo provato per diverse settimane il nuovo Magic V5 di HONOR, uno smartphone pieghevole che ci ha davvero stupito. Il device è il più sottile (solo 4.1mm) ma non gli manca praticamente nulla. Potenza garantita dallo Snapdragon 8 Elite, fotocamere di ottima qualità e batteria in silicio-carbonio che garantisce un'ottima autonomia. E il Prezzo? Vi diciamo tutto nella nostra recensione completa.
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Google Pixel 10 Pro XL è il top di gamma della serie Pixel, presentando un ampio display Super Actua da 6.8 pollici insieme alle novità della serie, fra cui la ricarica wireless magnetica Pixelsnap e le nuove funzionalità AI avanzate. Il comparto fotografico include un sistema a tripla fotocamera con zoom Pro Res fino a 100x, mentre il processore Tensor G5 con 16GB di RAM garantisce prestazioni percepite molto elevate su Android.
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Forte della piattaforma Qualcomm Snapdragon X, il notebook Lenovo IdeaPad Slim 3 riesce a coniugare caratteristiche tecniche interessanti ad uno chassis robusto, con autonomia di funzionamento a batteria che va ben oltre la tipica giornata di lavoro. Un notebook dal costo accessibile pensato per l'utilizzo domestico o in ufficio, soprattutto con applicazioni native per architettura ARM
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-06-2004, 10:26   #1
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Realizzare un'Agendina Telefonica senza usare le Collections [Java]

Allora per esercitarmi ho deciso di realizzare un'agendina, però senza appoggiarmi sulle Collections fornitemi da Java.

dato che è il mio primo programmino un po' più complesso che sviluppo, posto sul forum in modo da poter avere una guida...

Sottolineo in primis che non sto cercando qualcuno che la faccia al posto mio.. quindi i consigli sono bene accetti, ma evitate di postarmi praticamente tutto il codice..

Voglio provare, sbagliare e riprovare.. perchè così credo di assorbire davvero gli errori che commetto e quindi di imparare davvero qualcosa!

Per adesso vi espongo un po' il proggetto che ho in mente

Vorrei realizzare una classe astratta agendina, in modo che poi la si possa implementare costruendo un'agendina basata su che cosa si vuole... per adesso penso di volerla implementare con un'array di stringhe!

Ogni singola stringa dovrà contenere un Oggetto Nominativo, che racchiude in se nome cognome prefisso e numero di telefono.

i metodi che vorrei metterci sono:
un metodo che consenta di inserire un nominativo.
uno che consenta di eliminarlo.
un altro metodo che consente la ricerca di un nominativo dal numero di telefono.
un altro ancora che consente la ricerca di un numero di telefono da nome e cognome.

così potrebbe andare secondo voi?

Comincio subito con la costruzione della classe astratta... così poi ve la posto...

ah grazie dell'attenzione e dei consigli!
__________________

Ultima modifica di luxorl : 13-07-2004 alle 09:55.
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2004, 11:49   #2
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Codice:
package agenda;
import java.io.*;

public abstract class Agenda{
	protected int size;
	public abstract void aggiungi(Nominativo n);
	public abstract void rimuovi(String cog, String nom);
	public abstract Nominativo cercanomedi(String prefisso, String telefono);
	public abstract Nominativo carcanumerodi(String cog, String nom);
}
L'importanzione di java.io in questo caso serve?
avrei potuto dichiararmi i metodi astratti "protected" invece di "public"?

come potete vedere ho pensato di dichiararmi una variabile "protected" size per tenere la dimensione dell'agenda!

ho fatto bene a dichiararla protected? o sarebbe stato meglio public?
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2004, 12:38   #3
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
- L'importanzione di java.io in questo caso serve?

se non ci sono classi di quel package e' inutile che lo importi.


- avrei potuto dichiararmi i metodi astratti "protected" invece di "public"?

certo, ma senza motivo. Una classe astratta e' concettualemente simile interfaccia e in un interfaccia tu dichiari il comportamento di una classe, che e' definito dai suoi metodi pubblici


- come potete vedere ho pensato di dichiararmi una variabile "protected" size per tenere la dimensione dell'agenda!

corretto.


- ho fatto bene a dichiararla protected? o sarebbe stato meglio public?

va bene protected, nel caso decida che l'informazione serva anche all'esterno metti un metodo "getter" pubblico
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2004, 13:25   #4
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Quote:
Originariamente inviato da kingv
- L'importanzione di java.io in questo caso serve?

se non ci sono classi di quel package e' inutile che lo importi.
potresti spiegarmi meglio questo! Grazie
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2004, 13:27   #5
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Adesso passo alla costruzione di una classe Nominativo per costruirmi l'oggetto Nominativo... no?

la metto nello stesso package?
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2004, 15:40   #6
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da luxorl
potresti spiegarmi meglio questo! Grazie


se utilizzi (ovvero istanzi, conservi un riferimento, estendi, in poche parolo nomini ) una classe del package java.io (ad es. File) devi importare o quella classe o in maniera sintetica tutte le classi che fanno parte di quel package (per non appesantire troppo il sorgente).

nella tua classe non vedo alcun riferimento a Classi del package java.io, quindi non e' necessario lo statement di import.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2004, 15:41   #7
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da luxorl

la metto nello stesso package?


penso sia la cosa migliore, visto che logicamente sono legati
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2004, 11:23   #8
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Codice:
package agenda;
import java.io.*;

public class Nominativo implements Comparable{
protected String nome, cognome, prefisso, telefono;

//costruttore

public Nominativo(String nome, String cognome, String prefisso, String telefono){
	this.cognome=cognome;
	this.nome=nome;
	this.prefisso=prefisso;
	this.telefono=telefono;
}

/* public Nominativo(String nome, String cognome){
	this.cognome=cognome;
	this.nome=nome;
} */

//metodi accessori

public String getNome(){return nome;}
public String getCognome(){return cognome;}
public String getPrefisso(){return prefisso;}
public String getNumero(){return telefono;}

//metodi accessori per comparare

public boolean equals(Object x){
	if (!(x instanceof Nominativo)) return false;
	Nominativo n=(Nominativo)x;
	return (this.nome.equals(n.nome) && this.cognome.equals(n.cognome));

   }

public int compareTo (Object x){
	Nominativo n=(Nominativo)x;
	if (this.cognome.compareTo(n.cognome)<0) return -1;
	if (this.cognome.equals(n.cognome) && this.nome.compareTo(n.nome)<0) return -1;
	if (this.equals(n)) return 0;
	return +1;
}

public String toString(){
	return cognome+" "+nome+" "+prefisso+"/"+telefono;
}
}
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2004, 11:27   #9
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Come potete vedere c'è questo costruttore:

/* public Nominativo(String nome, String cognome){
this.cognome=cognome;
this.nome=nome;
} */

che l'ho messo commentato perchè io avrei costruito questa classe senza mettercelo, poi sbirciando da alcuni esempi a lezione ho visto che lì c'era!

chi mi aiuta a capire bene a che serve? e se è essenziale?

il primo costruttore cioè questo:

public Nominativo(String nome, String cognome, String prefisso, String telefono){
this.cognome=cognome;
this.nome=nome;
this.prefisso=prefisso;
this.telefono=telefono;
}

"incastona" le variabili nell'oggetto, giusto?
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2004, 12:28   #10
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
1.
Il costruttore riflette l'idea del minimo necessario affinchè possa dirsi "esistente" l'oggetto costruito.

Nel tuo caso sembra ragionevole che il minimo per un oggetto che rappresenti l'idea di "Nominativo" per un'agenda richieda almeno un nome ed un cognome.

All'atto pratico poi, può capitare che Tizio disponga delle generalità del contatto che vuole inserire ma ancora non abbia tutti i dati.

In genere i costruttori sovraccaricati tendono a richiamare una versione "standard" per poi specializzarsi in date procedure di inizializzazione.

Nel tuo caso potrebbe essere più appropriata una forma di questo tipo:

Codice:
public Nominativo(String nome, String cognome){
        this(nome, cognome, null, null);
}
Il rinvio ti consente un controllo maggiore sull'integrità dell'inizializzazione. Non sempre è possibile. A volte costruttori diversi richiamano procedure del tutto differenti, ma sono casi limite.

2.

Incastonare è un bel termine, rende l'idea di ciò che fa un costruttore con i parametri che gli passi nel tuo caso.

Occhio a non farti trarre in inganno dal "this.qualcosa". E' questione formale. La classe possiede dei campi il cui nome è identico a quello usato per la lista dei parametri del costruttore.

Si fa e si può fare: assurdo arrovellarsi nel cercare improbabili sinomini per nomi significativi.

La palla passa allora al fenomeno chiamato "shadowing" (adombramento in italiano ma l'inglese rende meglio la distinzione con altre evenienze affini).

Quando dichiari un [tipo | campo | parametro | variabile] dandogli un nome N, dal punto della dichiarazione fino al termine dell'abito di validità (scope) del [tipo | campo | parametro | variabile] tutte le dichiarazioni di [tipo | campo | parametro | variabile] aventi lo stesso nome N che occorrono in un sotto ambito di validità (sub-scope) si dicono "shadowed" (adombrate).

Quando una dichiarazione è adombrata non hai modi di riferirti al suo contenuto, perchè esiste "qualcos'altro" con lo stesso nome N che "prevale" su ciò che hai dichiarato prima, salvo che la dichiarazione si riferisca ad un "membro di classe" (campi, metodi, ecc.). In quest'ultimo caso, puoi accedere alla dichiarazione adombrata passando attraverso il riferimento all'istanza corrente della classe (parola chiave "this").

Nel costruttore di cui parliamo, i quattro parametri adombrano i quattro campi di classe aventi lo stesso nome.

this.nome = nome;

significa: prendi il campo dell'oggetto che sarà creato a partire dal modello che stò scrivendo adesso ed assegnagli il valore del parametro che è stato passato al costruttore.

Ciao.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2004, 15:28   #11
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Quote:
Originariamente inviato da PGI
1.
Il costruttore riflette l'idea del minimo necessario affinchè possa dirsi "esistente" l'oggetto costruito.

Nel tuo caso sembra ragionevole che il minimo per un oggetto che rappresenti l'idea di "Nominativo" per un'agenda richieda almeno un nome ed un cognome.

All'atto pratico poi, può capitare che Tizio disponga delle generalità del contatto che vuole inserire ma ancora non abbia tutti i dati.

In genere i costruttori sovraccaricati tendono a richiamare una versione "standard" per poi specializzarsi in date procedure di inizializzazione.

Nel tuo caso potrebbe essere più appropriata una forma di questo tipo:

Codice:
public Nominativo(String nome, String cognome){
        this(nome, cognome, null, null);
}
Il rinvio ti consente un controllo maggiore sull'integrità dell'inizializzazione. Non sempre è possibile. A volte costruttori diversi richiamano procedure del tutto differenti, ma sono casi limite.
quindi inserire il costruttore da me commentato sopra, nn è essenziale, ma è buona norma... in quanto un oggetto nominativo potrebbe essere formato solo dal nome e cognome.. ho capito bene?

poi:

Codice:
public Nominativo(String nome, String cognome){
        this(nome, cognome, null, null);
}
questo tuo modo di scrivere mi è nuovo, è equivalente al costruttore che io sopra ho messo come commento? solo che lascia due "spazi" liberi nell'oggetto e li inizializza null?
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2004, 15:39   #12
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da luxorl

questo tuo modo di scrivere mi è nuovo, è equivalente al costruttore che io sopra ho messo come commento? solo che lascia due "spazi" liberi nell'oggetto e li inizializza null?
no, vuol dire "chiama la versione a 4 parametri passando nome, cognome e null per i parametri rimanenti".
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2004, 20:21   #13
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
k
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 09:56   #14
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Adesso dovrei costruirmi una classe "AgendinaSuArray"...
la devo far ereditare da Agenda o no?
e se eredita da quest'ultima è inutile che mi ridichiaro una variabile size, visto che l'ho fatto nella classe astratta..

praticamente potrei passare alla costruzione di una classe (AgendinaSuArray)

in cui implemento i metodi dichiarati nella classe astratta!

o sto sbagliando TUTTO?
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 10:00   #15
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da luxorl

o sto sbagliando TUTTO?


io non riesco a capire perche' agenda e' astratta.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 10:05   #16
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
perchè dopo che ho costruito AgendaSuArray, vorrei rifarla con altri mezzi.. per esempio con una lista concatenata.. oppure usando le collections.. oppure usando una mappa!

allora mi sono creato, come dire...mmmm

lo scheletro dell'agenda.. utilizzando quella classe astratta! che poi implemento con che mezzo voglio!
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 10:14   #17
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da luxorl
perchè dopo che ho costruito AgendaSuArray, vorrei rifarla con altri mezzi.. per esempio con una lista concatenata.. oppure usando le collections.. oppure usando una mappa!

allora mi sono creato, come dire...mmmm

lo scheletro dell'agenda.. utilizzando quella classe astratta! che poi implemento con che mezzo voglio!


ok, chiaro.

crea un'implementazione, come hai già detto le variabili le erediti dalla classe padre
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2004, 16:45   #18
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Scusate se non sto continuando questo progetto... ma sono completamente immerso in Fisica (appello il 22) e Calcolo (appello il 28) ...HELP!
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2004, 09:53   #19
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
Rieccomi!!
mamma che stress!! proprio ieri sera sono uscito per festeggiare un esame (stressantissimo per colpa del prof, 1:30 di ritardo e poi ci ha dato meno tempo per il compito gggrrrrrr) di Assembler.. adesso mi alzo ancora un po' rincogli*nito dalla birra e devo pensare al prox esame.. programmazione orientata agli oggetti il 22!

nn ho portato avanti qst thread per un po' perchè mi sono dovuto dare: fisica, calcolo2 e architettura dei calcolatori!!

beh vediamo che stavo combinando.. (nella mia testa ho il vuoto per quanto riguarda java )
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli Recensione OnePlus Watch 3 43mm: lo smartwatch c...
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura BOOX Note Air4 C è uno spettacolo: il tab...
3 minuti: è il tempo per vedere l...
Gli Amazfit sono ora gli smartwatch più ...
Rowenta alza la posta: scopa elettrica s...
6 robot per le pulizie completi in offer...
Friggitrice ad aria Cecofry Full InoxBla...
iPhone 16 Pro Max a 10€ in più del minim...
Una chiavetta USB, ma SanDisk Ultra Slid...
La bolla dell'AI: perché l'econom...
Lo smartphone dovrebbe essere usato solo...
SpaceX: i video e le foto dello spettaco...
Anche a Pescara si passa ai fatti: e-bik...
La One UI 8 è pronta: Samsung con...
Xiaomi annuncia l'arrivo in Italia dei R...
La Cina stupisce ancora: test per la tur...
L'iconico iMac G3 diventerà un set LEGO?...
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: 15:01.


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