Ho letto sui modelli di oggetti su Wikipedia, ma è troppo astratto per avere davvero molto senso per me. Qualcuno può spiegare che cos'è un modello di oggetto in inglese semplice?
Ho letto sui modelli di oggetti su Wikipedia, ma è troppo astratto per avere davvero molto senso per me. Qualcuno può spiegare che cos'è un modello di oggetto in inglese semplice?
Per i nostri scopi un oggetto è una cosa o concetto e un modello è una rappresentazione delle parti a cui devi fare riferimento nel tuo disegno / codice.
Un'interfaccia è una descrizione di cosa di ciò che dobbiamo sapere / fare nel nostro design / codice.
Ad esempio: un modello oggetto Vehicle
potrebbe essere un'interfaccia che richiede: -
Proprietà per rappresentare lo stato dell'oggetto (capacità, velocità, direzione)
Metodi che influiscono su tali proprietà (carica / scarica, vai più veloce / più lento, gira)
Eccezioni che rappresentano errori che possono verificarsi (collisione, guasti, assenza di carburante)
Tale interfaccia viene quindi implementata come una classe e il codice potrebbe differire per un Hovercraft
rispetto a un Car
ma per il codice che deve operare il veicolo, non dovrebbe essere necessario sapere di quelle cose.
Esistono due tipi di modelli di oggetti:
per un linguaggio di programmazione, sono le caratteristiche degli oggetti in quella lingua. Tre esempi di queste caratteristiche, ce ne sono altri:
esiste una nozione di ereditarietà multipla (se presente, ci sono più domande a cui rispondere, è limitata a qualcosa di simile all'interfaccia o più generale come in C ++, cosa succede in caso di apparente ambiguità: errore come in C ++ o un algoritmo di risoluzione come in Common Lisp, anche l'algoritmo di risoluzione è importante)
la validità del metodo è controllata staticamente (come? con un meccanismo di ereditarietà o qualcos'altro) o dinamicamente (cosa succede se non esiste un metodo con quel nome? un errore? l'inoltro è possibile?)
sono quelle caratteristiche ad hoc o hanno una base teorica? Quale? (Il calcolo degli oggetti di Cardelli? Qualcos'altro?)
Il modello a oggetti è in qualche modo indipendente dal linguaggio di programmazione. Le lingue che hanno come target il CLR di Microsoft tendono ad avere modelli di oggetti più simili rispetto ad altri in quanto le classi sono progettate pensando a un modello. Potresti persino avere lingue con diversi modelli di oggetti. C ++ / CLI ne ha due, uno C ++ e uno CLR. Objective C ++ è un altro linguaggio con due modelli di oggetti: il C ++ e l'Objective C uno (che è più vicino a quello di SmallTalk)
un insieme (più o meno standardizzato) di classi che rappresentano qualcosa (documenti, telescopio, ...). Non scriverò altro su questo, è solo una modellazione basata su classi e oggetti.
Leggi altre domande sui tag object-oriented