Oppure

Loading
17/12/10 11:50
popp109
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

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

public class pippo
{
    public pippo()
    {
        this(new pluto());
    }
    public pippo(pluto var)
   {
     
   }
}


o devo permettere l'inizializzazione al di fuori del costruttore?

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 17/12/10 11:53
aaa
17/12/10 12:44
HeDo
imo lascia perdere, il tuo progetto non ha nè futuro nè utilità.
Ultima modifica effettuata da HeDo 17/12/10 12:45
aaa
17/12/10 12:59
popp109
È 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.
aaa
17/12/10 14:50
lorenzo
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.
aaa
17/12/10 16:57
pierotofy
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:

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.
Il mio blog: piero.dev
17/12/10 23:45
HeDo
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à :)
aaa
18/12/10 2:30
popp109
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.
aaa
18/12/10 9:07
HeDo
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...
aaa