Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - La classe this e super sono fondamentali per qualsiasi linguaggio?
Forum - Java - La classe this e super sono fondamentali per qualsiasi linguaggio?

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
popp109 (Normal User)
Rookie


Messaggi: 27
Iscritto: 27/11/2010

Segnala al moderatore
Postato alle 12:50
Venerdì, 17/12/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

  1. public class pluto
  2. {
  3.   public pluto()
  4.   {
  5.   }
  6. }
  7.  
  8. public class pippo
  9. {
  10.     public pippo()
  11.     {
  12.         this(new pluto());
  13.     }
  14.     public pippo(pluto var)
  15.    {
  16.      
  17.    }
  18. }



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

  1. public class pippo
  2. {
  3.     public pippo()
  4.     {
  5.         this(new pluto());
  6.     }
  7.     public pippo(pluto var)
  8.    {
  9.      
  10.    }
  11. }



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

Codice sorgente - presumibilmente Java

  1. public class pippo
  2. {
  3.    private pluto = new pluto();
  4.     public pippo()
  5.     {
  6.         this(pluto);
  7.     }
  8.     public pippo(pluto var)
  9.    {
  10.      
  11.    }
  12. }



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
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 13:44
Venerdì, 17/12/2010
imo lascia perdere, il tuo progetto non ha nè futuro nè utilità.

Ultima modifica effettuata da HeDo il 17/12/2010 alle 13:45
PM Quote
Avatar
popp109 (Normal User)
Rookie


Messaggi: 27
Iscritto: 27/11/2010

Segnala al moderatore
Postato alle 13:59
Venerdì, 17/12/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.

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 15:50
Venerdì, 17/12/2010
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.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:57
Venerdì, 17/12/2010
Testo quotato


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.

Testo quotato


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

  1. Stream getStreamReader(){
  2.    return new StreamReader(this);
  3. }



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: https://piero.dev
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 0:45
Sabato, 18/12/2010
Testo quotato

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à :)

PM Quote
Avatar
popp109 (Normal User)
Rookie


Messaggi: 27
Iscritto: 27/11/2010

Segnala al moderatore
Postato alle 3:30
Sabato, 18/12/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.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 10:07
Sabato, 18/12/2010
Testo quotato

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...

PM Quote
Avatar
popp109 (Normal User)
Rookie


Messaggi: 27
Iscritto: 27/11/2010

Segnala al moderatore
Postato alle 12:00
Sabato, 18/12/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.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo