Mostra notizie nelle discussioni
  • Avatar
    ☺
    Scritto da
    altg
    utente che non utiene
    il 2014-10-09 22:34:24.0 alle 2014-10-09 22:34:24.0
    Trollate totali: 11540
    Abemus anche interfacce
    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:

    Immagine postata dall'utente

    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:

    Immagine postata dall'utente

    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:

    Immagine postata dall'utente

    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? Geek
    • Avatar
      Scritto da
      Non Autenticato
      il 2014-10-09 22:40:29.0 alle 2014-10-09 22:40:29.0
      Re: Abemus anche interfacce
      Scritto 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:
      >
      > Immagine postata dall'utente
      >
      > 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:
      >
      > Immagine postata dall'utente
      >
      > 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:
      >
      > Immagine postata dall'utente
      >
      > 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? Geek

      Hai già chiesto a quelli di anynowhere cosa ne pensano?
<softv>

Pagina generata in 88 millisecondi

Utenti attivi: 11 nell'ultimo minuto, 23 negli ultimi cinque minuti, 47 negli ultimi 15 minuti