Changes between Version 1 and Version 2 of Documentazione


Ignore:
Timestamp:
Sep 29, 2006, 11:47:18 AM (18 years ago)
Author:
soujak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentazione

    v1 v2  
    1 = 1 =
    2 * prodotti aggiungibili a run-time come a tempo di compilazione -> (prototype factory and old factory) under template factory
    3   * unica interfaccia esposta al cliente per la creazione dei prodotti
    4 * riduzione del consumo di memoria: singleton per il factory manager (non per il prototype, cosi il cliente ...) cosiccome
    5   per l'old-factory.
    6 * facilitazione della configurazione dei prodotti al solo tempo di costruzione: ai vari metodi create e' sempre passata una
    7   lista di argomenti. Per quanto concerne la necessita' di configurare i prototipi sara' il cliente stesso a provvedere
    8   ridefinendo il metodo create della prototype factory.
     1= Variante 1 - Prodotti estendibili =
    92
    10 = 2 =
     3=== Introduzione ===
     4 * una sorta di framework per lo sviluppo di linguaggi a partire da MiniScheme
     5 * prodotti aggiungibili a run-time come a tempo di compilazione -> (prototype factory and old factory) under template factory
     6   * unica interfaccia esposta al cliente per la creazione dei prodotti
     7 * riduzione del consumo di memoria: singleton per il factory manager (non per il prototype, cosi il cliente ...) cosiccome
     8   per l'old-factory.
     9 * facilitazione della configurazione dei prodotti al solo tempo di costruzione: ai vari metodi create e' sempre passata una
     10   lista di argomenti. Per quanto concerne la necessita' di configurare i prototipi sara' il cliente stesso a provvedere
     11   ridefinendo il metodo create della prototype factory.
    1112
    12 * operazioni polimorfe e modulari sul modello -> visitor (modualrita'++ e algoritmo esterno al modello)
    13 * la visita e` gestita in maniera autonoma dal visitor, che restituisce il controllo soltanto una volta terminato per intero la visita
    14 * numero di costrutti non soggetto a cambiamenti -> abstract factory under singleton
    15 * api specifiche permettono al visitor l'attraversamneto dell'albero
    16 * iterator esterni (algoritmo esterno :))
     13= Variante 2 - Operazioni estendibili =
     14
     15=== Introduzione ===
     16 * una sorta di framework per lo sviluppo di interpreti per il linguaggio Minischeme
     17 * estendibilita' delle operazioni -> rendere indipendente il modello dalle relative operazioni (attaccare il concetto di incapsulamento fra dati e operazioni, croce e delizia del paradigma a oggetti) -> mezzi utilizzati: esternare ogni algoritmo dal modello e dove possibile, rendere le operazioni modualari
     18
     19== Modello ==
     20 * numero di costrutti non soggetto a cambiamenti -> factory under singleton
     21 * le api di manipolazione permettono al visitor l'attraversamento dell'albero
     22 * (albero eterogeneo && obiettivi di iterazione e visita polimorfica) -> aggiunta di `Entity` per permettere al cliente completa liberta' sebbene all'`Interpreter` interessino solo `Expression` (e ` Definition`?)
     23 * implementazioni di default come per `Value`
     24 * api di manipolazione generica implementate con enumerazioni invece che con index per aumentare la tipizzazione
     25
     26== Visitor ==
     27 * la visita e' gestita in maniera autonoma dal visitor, che restituisce il controllo soltanto una volta terminato per intero la visita
     28 * uso di campi interni per permettere il passaggio dell'ambiente di valutazione (un'informazione indispensabile)
     29 * metodo `visit()` overloaded in modo da demandare alla vm la selezione dei metodi nel caso si voglia trattare con `Entity`
     30
     31== Iterator ==
     32 * iterator esterni il cliente ha in mano il controllo dell'iterazione
     33 * l'algoritmo di attraversamento risiede all'interno dell'iterator e non all'interno del modello per perseguire l'estendibilita' delle operazioni richieste
     34 * modularizzato in `ModelIterator` (iteratore sull'intero modello) ed `EntityIterator` (iteratore sui figli di una entita')