Sto cercando di capire il modo giusto per incapsulare informazioni grafiche sugli oggetti matematici. Non è semplice Ad esempio, una matrice può includere parentesi quadre attorno alle sue voci, oppure no. Alcune cose portano a oggetti secondari - ad esempio, una matrice potrebbe tracciare la dimensione del font da utilizzare per le sue voci. Allo stesso modo, il colore del carattere e il colore dello sfondo porterebbero alle voci. Altre cose non vanno giù. Ad esempio, le voci della matrice non hanno bisogno di sapere se la matrice ha o meno quelle parentesi quadre.
Sulla base di tutto quanto sopra, ho bisogno di calcolare le dimensioni per tutto, quindi i frame. Tutto ciò può dipendere dalle proprietà memorizzate sopra. La dimensione di una matrice dipende dalle dimensioni delle sue voci e anche dal fatto che abbia o meno le parentesi.
Ciò di cui sto facendo fatica non sono i singoli modi per calcolare frame sensibili per questo o quello. È la struttura organizzativa complessiva dell'intera cosa. Come posso tenere traccia di tutto senza impazzire.
Un particolare ostacolo è degno di nota - per ragioni per cui non voglio entrare qui, ho bisogno di calcolare le dimensioni e le cornici per ogni cosa prima di istanziare qualsiasi vista reale. Quindi, ad esempio, se ho un oggetto Matrix, devo calcolare la sua dimensione prima di creare un MatrixView. Se ho un'equazione, devo calcolare la dimensione della vista per l'equazione prima di creare la vista effettiva. Quindi ho chiaramente bisogno di oggetti separati per quei calcoli. Ma non riesco a capire una struttura di classe sensata per quegli oggetti. Se li metto tutti in una singola classe, ottengo alcuni vantaggi perché la copia diventa facile. Ma finisco anche con una classe gonfia che contiene informazioni che sono irrilevanti per alcuni oggetti, ad esempio se includere o meno parentesi attorno alla matrice. Ma se uso molte classi diverse, copiare le proprietà diventa un vero dolore.
Se è importante, questo è tutto nell'obiettivo C, per un ambiente iOS. Qualsiasi suggerimento sarebbe molto apprezzato.
EDIT: per chiarire: ho oggetti modello che contengono informazioni matematiche e posso calcolare il testo che verrà visualizzato. Anch'io penso avrà senso avere degli oggetti di stile che conosceranno la dimensione del carattere. Pertanto, tra i due, posso calcolare tutto. Ciò lascia ancora il problema di come tenere traccia delle informazioni risultanti. Non voglio chiamare i metodi "compute-your-size" più del necessario in quanto costosi. Quindi devo memorizzare alcune cose. Ma dove? E come gestisco il caching?