popp109 (Normal User)
Rookie
Messaggi: 27
Iscritto: 27/11/2010
|
Salve sto realizzando un linguaggio di programmazione in c++ ma apro questa discussione in questo forum perchè il mio linguaggio prende alcuni concetti in java.
Allora il mio problema è questo, prendiamo prima in esame queste due classi in java come esempio
Codice sorgente - presumibilmente Java |
public class pluto { public pluto() { } } public class pippo { public pippo() { this(new pluto()); } public pippo(pluto var) { } }
|
Come potete vedere nel costruttore pippo() , ho utilizzato this(new pluto()) per richiamare il secondo costruttore instanziando la classe pluto direttamente nel parametro.
Il mio linguaggio non permette di inizializzare classi all'interno dei parametri e non permette di inizializzare classi al di fuori dei costruttori e dei metodi, quindi visto che this(new pluto()) deve essere utilizzato all'inizio del costruttore in questo caso non posso inizializzare la classe.
Secondo voi devo dare la possibilità di
inizializzare la classe direttamente nel parametro
Codice sorgente - presumibilmente Java |
public class pippo { public pippo() { this(new pluto()); } public pippo(pluto var) { } }
|
o devo permettere l'inizializzazione al di fuori del costruttore?
Codice sorgente - presumibilmente Java |
public class pippo { private pluto = new pluto(); public pippo() { this(pluto); } public pippo(pluto var) { } }
|
o secondo voi this o super possono essere del tutto tralasciati nel mio linguaggio o non sono fondamentali? Ultima modifica effettuata da popp109 il 17/12/2010 alle 12:53 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
imo lascia perdere, il tuo progetto non ha nè futuro nè utilità.
Ultima modifica effettuata da HeDo il 17/12/2010 alle 13:45 |
|
popp109 (Normal User)
Rookie
Messaggi: 27
Iscritto: 27/11/2010
|
È un anno che ci lavoro e ho quasi terminato il compilatore e tu mi dici di lasciare perdere?
Il mio progetto comprende altri 40 sottoprogetti e ho deciso di intraprendere questa strada perchè sono sicuro dei miei mezzi.Guai se non lo facessi.Tutto il codice funziona e solo che è nato questo problema con this e super che ripeto potrei aggirare subito aggiungendo del codice ma la mia era una domanda di discussione.
Aggiungo che non ha niente a che vedere con java e altri linguaggi.
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
secondo me è una domanda del tutto inutile.
per il tuo compilatore non dovrebbe fare nessuna differenza usare la "new nomeclasse" in un modo o nell'altro. Comunque deve generare un'istanza della classe. Dove dovrà essere messa non c'entra.
In un caso la metti in una variabile, in un altro la passi come parametro. Di fatto non cambia nulla.
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
devo permettere l'inizializzazione al di fuori del costruttore?
|
Tutto è possibile permettere, in mia preferenza non dovresti permetterlo; solo gli scalari potrebbero essere permessi, e solo se dichiarati costanti. Il resto va inizializzato nel costruttore.
secondo voi this o super possono essere del tutto tralasciati nel mio linguaggio o non sono fondamentali?
|
Se è un linguaggio OOP quello che stai costruendo, devi avere un modo per fare riferimento all'istanza della classe base. Quindi direi che super è fondamentale. This fa riferimento all'istanza corrente e non includerlo non sarebbe la fine del mondo, ma una grande limitazione. Certi codici come:
Codice sorgente - presumibilmente Java |
Stream getStreamReader(){ return new StreamReader(this); }
|
Non sarebbero possibili.
Mi dissocio dal commento di HeDo, penso sia un progetto interessante dal punto di vista didattico. Mi piacerebbe visionarlo quando è finito.
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da pierotofy:
Mi dissocio dal commento di HeDo, penso sia un progetto interessante dal punto di vista didattico. Mi piacerebbe visionarlo quando è finito. |
chi vivrà vedrà |
|
popp109 (Normal User)
Rookie
Messaggi: 27
Iscritto: 27/11/2010
|
Per PieroTofy:
Grazie per la risposta.
Quindi l'unica mossa che potrei fare, sarebbe quella di usare il new nel parametro
perchè altrimenti se mi dovesse capitare di chiamare un costruttore con parametro (classe) che poi non posso inizializzare,non servirebbe a niente.
Mentre su this.variabile e this.metodo() o super.variabile e super.metodo() non ho problemi e funziona benissimo.
Il linguaggio che sto realizzando è simile a java ma non ha nulla a che vedere con il progetto della Sun.Per il momento gira su windows e linux e lo sto testando anche su android,symbian e più avanti lo testerò sul mac e Iphone.
per HeDo
È vero se dovessi morire sicuramente vinceresti la scommessa però è dall'età di 7 anni(1986) che ho sempre sognato di realizzare un linguaggio tutto mio.Nel bene o nel male prima di morire terminerò tutto, anche se non dovesse servire a nessuno.
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da popp109:
È vero se dovessi morire sicuramente vinceresti la scommessa però è dall'età di 7 anni(1986) che ho sempre sognato di realizzare un linguaggio tutto mio.Nel bene o nel male prima di morire terminerò tutto, anche se non dovesse servire a nessuno. |
ognuno è libero di sprecare il proprio tempo come meglio crede, personalmente penso che al giorno d'oggi quello che serve veramente è il tempo, di strumenti ne abbiamo fin troppi. Invece tu che fai? Investi tempo a realizzare uno strumento che non userà mai nessuno... vai a capire... |
|
popp109 (Normal User)
Rookie
Messaggi: 27
Iscritto: 27/11/2010
|
Comunque fai bene ad essere critico perchè su molti forum ho trovato persone che promettevano di dover progettare cose assurde e poi non hanno mai fatto niente.
A me manca poco per chiudere il cerchio del compilatore e passare al progetto del runtime che farà più o meno quello che fa adesso il compilatore eliminado tutti i controlli che in run time non servono.
Comunque quando sarò pronto contatterò PieroTofy per aprire un furum a riguardo.
|
|