-
Abemus anche interfacceScritto daaltgutente che non utieneil 2014-10-09 22:34:24.0 alle 2014-10-09 22:34:24.0Trollate totali: 11540Magagne e ottimizzazione (piu` che altro del codice prodotto, anche se qualcosa lo fa gia`) a parte, il compilatore dovrebbe essere essenzialmente finito. Ha ereditarieta`, polimorfismo, e ora anche interfacce e metodi virtuali. A me non sembrano neanche tanto illeggibili nell'uso pratico:

E` un programmino di prova fatto per poi seguire lo sviluppo di una librerietta (dal nome nostalgico di "character generator") che scriva qualcosa con un font bitmapped. Il succo della questione dell'interfaccia e` questo qui:p as bitmap <- Create m By n Pixels q as characterGenerator <- Bind To bitmap Using Raster p
Fa il typecasting sul registro p, cioe` di che il registro p e` di tipo... bitmap, creandone un'istanza e dimensionandola a m x n pixels. E fin qui s'era gia` visto. La seconda riga crea invece l'interfaccia (la novita`). Casta q a characterGenerator, e poi lo "binda" (blinda la supercazzola prematurata eccetera eccetera), cioe` lo lega alla sua implementazione per bitmaps. Dice "Using Raster" perche` la classe astratta da cui discendono bitmap e canvas, i due tipi concreti di raster, e` appunto raster. Seguendo la prima riga del listato si arriva al file che definisce l'implementazione:
che a sua volta include il file che definisce l'interfaccia e qualcosa per fare un puntino sullo schermo per confermare che il metodo "Say" e` stato eseguito. La vera implementazione va al posto di quel puntino, ma devo ancora scriverla. Al di la` di quello, le parole chiave li` sono "implements" nella dichiarazione del nameset, e l'esportazione della tabella dei metodi virtuali, che lega la entry pSay della tabella dell'interfaccia all'indirizzo del metodo Say implementato sopra. Nel file dell'interfaccia:
che e` scarno e abbozzato (ha solo il metodo Say e nessuna informazione di stato) si vede la inlet "Bind To p" che alloca l'istanza dell'interfaccia, e poi la passa a un'utilita` che smista gli indirizzi dei metodi alle entries della tabella (la tabella e` composta solo da "count pSay"). In fondo, dopo un costruttore alternativo e un mutator tanto per dire, quello che conta e` il metodo virtuale Say, che infatti non e` implementato li` ma esegue un salto per puntatore a r.pSay.
Facile, no?
-
Re: Abemus anche interfacceMultiple inheritance ?`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
-
Re: Abemus anche interfacceScritto daaltgutente che non utieneil 2014-10-09 22:42:29.0 alle 2014-10-09 22:42:29.0Trollate totali: 11540> Multiple inheritance ?
Volendo c'e` anche quella, anche se vattelappesca se funziona.
-
-
Re: Abemus anche interfacceScritto daNon Autenticatoil 2014-10-09 22:40:29.0 alle 2014-10-09 22:40:29.0Scritto da: altg
> Magagne e ottimizzazione (piu` che altro del codice prodotto, anche se qualcosa lo fa gia`) a parte, il compilatore dovrebbe essere essenzialmente finito. Ha ereditarieta`, polimorfismo, e ora anche interfacce e metodi virtuali. A me non sembrano neanche tanto illeggibili nell'uso pratico:
>
>
>
> E` un programmino di prova fatto per poi seguire lo sviluppo di una librerietta (dal nome nostalgico di "character generator") che scriva qualcosa con un font bitmapped. Il succo della questione dell'interfaccia e` questo qui:
>
>> p as bitmap <- Create m By n Pixels > q as characterGenerator <- Bind To bitmap Using Raster p >
>
> Fa il typecasting sul registro p, cioe` di che il registro p e` di tipo... bitmap, creandone un'istanza e dimensionandola a m x n pixels. E fin qui s'era gia` visto. La seconda riga crea invece l'interfaccia (la novita`). Casta q a characterGenerator, e poi lo "binda" (blinda la supercazzola prematurata eccetera eccetera), cioe` lo lega alla sua implementazione per bitmaps. Dice "Using Raster" perche` la classe astratta da cui discendono bitmap e canvas, i due tipi concreti di raster, e` appunto raster. Seguendo la prima riga del listato si arriva al file che definisce l'implementazione:
>
>
>
> che a sua volta include il file che definisce l'interfaccia e qualcosa per fare un puntino sullo schermo per confermare che il metodo "Say" e` stato eseguito. La vera implementazione va al posto di quel puntino, ma devo ancora scriverla. Al di la` di quello, le parole chiave li` sono "implements" nella dichiarazione del nameset, e l'esportazione della tabella dei metodi virtuali, che lega la entry pSay della tabella dell'interfaccia all'indirizzo del metodo Say implementato sopra. Nel file dell'interfaccia:
>
>
>
> che e` scarno e abbozzato (ha solo il metodo Say e nessuna informazione di stato) si vede la inlet "Bind To p" che alloca l'istanza dell'interfaccia, e poi la passa a un'utilita` che smista gli indirizzi dei metodi alle entries della tabella (la tabella e` composta solo da "count pSay"). In fondo, dopo un costruttore alternativo e un mutator tanto per dire, quello che conta e` il metodo virtuale Say, che infatti non e` implementato li` ma esegue un salto per puntatore a r.pSay.
>
> Facile, no?
Hai già chiesto a quelli di anynowhere cosa ne pensano?-
Re: Abemus anche interfacceScritto daaltgutente che non utieneil 2014-10-09 22:43:55.0 alle 2014-10-09 22:43:55.0Trollate totali: 11540> Hai già chiesto a quelli di anynowhere cosa ne pensano?
No, prima lo porto in una condizione piu` o meno utilizzabile, almeno per esplorare come funziona, e scrivo uno straccio di tutorial di 4000 megabytes.-
Re: Abemus anche interfacceScritto daNon Autenticatoil 2014-10-09 22:47:14.0 alle 2014-10-09 22:47:14.0Scritto da: altg
> > Hai già chiesto a quelli di anynowhere cosa ne pensano?
>
> No, prima lo porto in una condizione piu` o meno utilizzabile, almeno per esplorare come funziona, e scrivo uno straccio di tutorial di 4000 megabytes.
Se ponessero mano ai pomodori scriveresti Linoleum 5?-
Re: Abemus anche interfacceScritto daaltgutente che non utieneil 2014-10-09 22:54:13.0 alle 2014-10-09 22:54:13.0Trollate totali: 11540> > > Hai già chiesto a quelli di anynowhere cosa ne pensano?
> >
> > No, prima lo porto in una condizione piu` o meno utilizzabile, almeno per esplorare come funziona, e scrivo uno straccio di tutorial di 4000 megabytes.
>
> Se ponessero mano ai pomodori scriveresti Linoleum 5?
No, non scrivo Linoleum perche` qualcuno lo gradisca.
Lo scrivo perche` lo gradisco io, e i pomodori li ho gia` tirati tutti al terzo.
-
-
-
-