In che modo OOA / OOD è un concetto piuttosto complesso?

4

Sono un novizio di Object-Oriented Designing e ho letto alcuni libri OOD & tutorial di recente. Ora sto pianificando di implementare un lettore video (basato su API multimediali esistenti, AVFoundation o MediaPlayer ecc. per mettere in pratica ciò che ho imparato.

L'idea è che, dato un file video, aprirlo attraverso alcuni media api, e poi alimentare ogni frame in OpenGL per applicare alcune trasformazioni di warping e infine renderlo tramite OpenGL.

Cambiare ogni fotogramma è l'obiettivo principale della scrittura di questo video player, dal momento che posso applicare solo trasformazioni lineari a un livello / superficie di visualizzazione predefinito con l'api esistente (la deformazione è una trasformazione non lineare)

Ma sono bloccato all'inizio, lo scenario dei casi d'uso è relativamente semplice:

  1. L'utente richiede di aprire un file video
  2. L'utente riproduce il video

Secondo il libro Applying UML and Patterns , dovrei estrarre i modelli di dominio dal caso d'uso e quei modelli di dominio ispireranno la progettazione di modelli software (classi). Ma posso vedere solo due modelli di dominio dal caso d'uso VideoPlayer e VideoFile . E la loro associazione potrebbe assomigliare a questo:

,-------------.     plays     ,----------.
| VideoPlayer | ------------> | VideoFile|
'-------------'               '----------'

Ma il design attuale di VideoPlayer è molto più complesso per istinto, e non riesco a vedere alcun indizio del precedente lavoro di scrittura di casi d'uso ed estrazione di modelli di dominio.

Penso che il problema più probabile sia che ho scritto il caso d'uso in modo errato: troppo generico. Ma non posso davvero pensare a qualsiasi cosa a grana fine che dovrebbe essere nel caso d'uso e nel frattempo conferma la percentuale di guida Write use cases from the user's perspective .

    
posta Nandiin Bao 15.12.2016 - 17:50
fonte

2 risposte

2

think the most probable problem is that I've written the use case incorrectly -- too generic.

Penso che il problema sia l'idea che tutti i tuoi oggetti dovrebbero esistere nel tuo Use Case. I casi d'uso sono solo una guida per assicurarsi che si stia progettando un sistema basato su ciò che l'utente effettivamente desidera / richiede. Ma non tutti gli oggetti saranno presenti nel caso d'uso.

Probabilmente potresti espandere il tuo caso d'uso, ma dovrai anche esaminare gli oggetti che escono dal caso di studio d'uso (ad esempio VideoFile ) e poi pensare a quali oggetti utilizzerà quell'oggetto per implementare il suo comportamento.

    
risposta data 15.12.2016 - 18:16
fonte
2

Se la "determinata API" non può fare il warp perché è una trasformazione non lineare, a che serve l'API?

Quello che devi veramente fare è decomporre il problema di fronte a te.

Per questo il principio del bacio è un buon da seguire. Forniamo alcune funzionalità.

Partendo dal presupposto che il warp non è qualcosa che puoi applicare direttamente a un flusso video non decodificato:

Hai la possibilità di applicare una distorsione ad un'immagine fissa?

Hai la possibilità di rompere un file video in un set di immagini fisse (decodifica)?

Hai la possibilità di mettere un set di immagini fisse in un file video (codifica)?

Qualunque di questi può essere un ostacolo per te. Un tentativo di fare uno qualsiasi di loro porterebbe a una domanda più mirata. Continua a scomporre fino a quando non inizi a chiedersi come dovresti organizzare tutto questo lavoro. Questo è quando OOD inizia ad aiutare.

    
risposta data 15.12.2016 - 18:23
fonte