Newsgroup: it.comp.java
Titolo: tipi unsigned!!!

ho bisogno di utilizzare dei tipi di dato UNSIGNED.... come posso fare, non
ne esistono di predefiniti!!
Grazie a chiunque volesse aiutarmi!

 
ti fai delle classi che estendono dai wrapper gia` definiti e metti i
controlli nel costruttore.
Ad esempio per gli interi non negativi:
// classe per gli interi da 0 a Integer.MAX_VALUE
public class Natural extends Integer {
   public static int MIN_VALUE = 0;
   public Natural( int n ) {
      super( (n < 0)? 0 : n );
   }
   public Natural( String s ) throws NumberFormatException {
      this( Integer.parseInt( s ) );
   }
}
...non sara` il massimo, ma se non trovi altre soluzioni...
-- 
Ciao,  |  I play Russian roulette everyday, a man's sport,
Matteo |  With a bullet called life, yeah called life (SUGAR)

...non sara` il massimo, ma se non trovi altre soluzioni...
ALERT!  Ricorda che Integer, Long, Float et similia sono dichiarate
final, il che significa che non possono essere derivate. Meglio creare
una classe nuova per lo scopo (che estenda Number possibilmente), o al
limite utilizzare il contenimento (ma è meno efficiente), cioé creare
una classe UnsignedInteger che contenga un Integer e fornisca un
remapping dei metodi.
Ad ogni modo penso che il quesito originale mirasse a modificare il
comportamento dei tipi primitivi int in modo da rendere automatico il
controllo sul segno, il ché non è purtroppo fattibile (anch'io a volte
sento la mancanza di costrutti del C++ come template, overloading
degli operatori, presenza di tipi unsigned, .. , ma d'altra parte si
tratta pur sempre di comodità non necessarie per portare avanti una
buona implementazione).
Ciao, Max.

 Ciao, Max.



Io credo che presto avremo i template in Java (magari 1.4?), uno
strumento sicuramente potente: ho letto tempo fa un articolo molto
interessante a questo proposito, anche se, come al solito, non mi
ricordo dove... (jdj? javaworld? jdc? Java Report?). L'overloading degli
operatori invece non credo sia una grossa mancanza, anche se sarebbe
stato molto facile da implementare in Java, più che in C++.
-- 
Ugo
__________________________________________________________________________
"La perfezione si ottiene non quando non c'è nient'altro da aggiungere, 
 bensì quando non c'è più niente da togliere." Antoine de Saint-Exupéry
__________________________________________________________________________
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Enterprise Java Consulting
@mail: Ugo.L...@Flashnet.it
Home Page: 
http://www.ugolandini.net
Mentoring: 
http://www.projectoo.com
Work Phone: 06/5814740
Fax Phone: 06/233207542 
Cell Phone: 0347/6310749 - 0347/4783580
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 ricordo dove... (jdj? javaworld? jdc? Java Report?).
se ritrovi l'articolo postami l'url per favore, che mi interessa.
thnx!
-- 
Ciao,  |  I play Russian roulette everyday, a man's sport,
Matteo |  With a bullet called life, yeah called life, (SUGAR)

 se ritrovi l'articolo postami l'url per favore, che mi interessa.
Ecco qua la URL del Pizza Project: 
http://lampwww.epfl.ch/gj/
 , dove
puoi trovare cosa già c'è, qui un estratto dal sito che fa riferimento
alla prossima (speriamo molto prossima) implementazione del tutto nello
standard:
"Sun has put forward a proposal to Add Generic Types To The Java
Programming Language as part of the Java Community Process. GJ is one of
the leading proposals being considered. The process is spearheaded by
Gilad Bracha, one of the GJ designers. Sun maintains a Bug Parade where
users can vote to give feedback on which shortcomings in Java they would
like to see fixed. A request to add generics to Java is bug number
4064105, and is in The Top Twenty-five Requests for Enhancements."
ciao



speriamo! Intanto grazie per il link! :)


stato molto facile da implementare in Java, più che in C++.
Il problema coi template e' che senza overloading degli operatori diventano 
molto meno utili che in C++; questo perche' l'op.ovl. e' in sostanza un modo di 
fare overloading del tipo di ritorno, oltre che dei parametri. Prendi ad 
esempio,
template <typename T>
class Pippo {
 T metodo(T a, T b) {
    return a+b;
 } 
}
Ora, in C++ per usare questo template e' sufficiente aver definito operator+ 
sul tipo T. Ad esempio, il tipo <int> e' sufficentemente potente per questo 
template.
Ora, supponi di non avere l'op.ovl.; quello che puoi fare, a prima vista, e' 
definire 
 T metodo(T a, T b) {
    return Helper.sum(a,b);
 } 
(usando, per chiarezza, un metodo statico di una utility class "Helper")
Ma qual'e' la signature di sum()? Questa dipende ovviamente da T, *compreso il 
tipo di ritorno*. E un metodo "normale" non puo' fare overloading sul tipo di 
ritorno: tutto quello che si puo' fare e' definire "sumInt", "sumLong", etc - 
ma quale invocare dipende da T - il che lascia il template a piedi. 
Resta, ovviamente, l'idea di evitare di riscrivere piu' volte lo stesso codice 
per tipi *parametro* diversi.. ma qui l'uso delle interfacce a-la-java (che non 
a caso sono un di piu' rispetto a C++) + Object sono piu' che sufficienti per 
la maggioranza delle situazioni.
Che poi i template (le classi template) siano profondamente utili.. dipende. :) 
Certamente lo sono per le performance: si possono fare, coi template, cose che 
senza non si possono, tipo "srotolare" cicli a compile time per gudagnare 
velocita' mantenendo una parvenza di leggibilita' nel codice.
Ma per cose piu' terra terra, personalmente non ne ho mai sentito 
particolarmente la mancanza, in Java: C++ *non* ha una radice unica per la 
gerarchia di classi, ma Java ce l'ha, e questo risolve un sacco di situazioni 
in cui in C++ non si puo' fare a meno dei template (con, ovviamente, diverso 
approccio, non-generico, e quindi a prezzo di qualche downcast in piu'... ma 
e' Java :). Inoltre, in Java si scrivono mediamente molto meno strutture dati 
di base di quanto si facesse, prima di STL, in C++, ma si tende a comporre 
quelle gia' disponibili. La pragmatica del linguaggio e' diversa (quest'ultima 
cosa, s'intende, a mia esperienza personale con programmatori C++ e Java) e 
questo ha un'impatto sull'uso effettivo dei template: in C++, mi trovo ad 
usarli spessissimo, in Java non ne sento la mancanza.
Terzo, ho i miei dubbi sull'effetto a medio/lungo termine dei template sulla 
manutenibilita' e robustezza del codice - che e' uno dei punti forti di Java 
rispetto a C++. I template a-la-C++ sono una bella idea a prima vista.. pero' 
il fatto che la risoluzione sia a tempo di istanziazione e i vincoli di 
applicabilita' impliciti e non espliciti mi ha da sempre lasciato perplesso (se 
ragiono da designer OO. Se ragiono da programmatore C++, sono contentissimo di 
dover scrivere di meno :).
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun