Programmazione Ad Oggetti (OOP Object-Oriented-Programming)

La Programmazione Orientata agli Oggetti (OOP) è la programmazione focalizzata primariamente sui dati, mentre i dati ed il comportamento sono stati indissolubilmente legati. Dati e comportamento insieme costituiscono una classe, mentre gli oggetti sono istanze della classe.

I componenti dell' approccio object-oriented sono:

L' OOP considera il calcolo come la modellazione del comportamento. L'elemento modellato è l'oggetto rappresentato da astrazioni computazionali. Supponiamo di voler scrivere il noto gioco "Tetris". Per fare questo, dobbiamo imparare a modellare l'apparenza di forme casuali composte da quattro quadrati uniti tra loro da bordi. Inoltre abbiamo bisogno di regolare la velocità di caduta delle forme, definire le operazioni di rotazione e lo spostamento delle forme. Lo spostamento delle forme sullo schermo è limitato da confini del 'pozzo', tale requisito deve anch'essere modellato. Oltre a ciò, le righe riempite di cubi devono essere distrutte ed i punti conseguiti devono essere contati.

Così, questo gioco di-facile-comprensione richiede la creazione di vari modelli - modello delle forme, modello del pozzo, il modello del movimento della forma e così via. Tutti questi modelli sono astrazioni, rappresentate dai calcoli del computer. Per descrivere questi modelli, viene usato il concetto di Tipo di Dati Astratti, ADT (o tipo di dati complessi). Strettamente parlando, il modello del movimento delle "forme" nel DOM non è un tipo di dati, ma è un insieme di operazioni sul tipo di dati "forma", utilizzando le restrizioni del tipo di dati "pozzo".

Gli oggetti sono variabili classe. La programmazione orientata agli oggetti permette di creare e utilizzare facilmente ADT. La programmazione orientata agli oggetti utilizza il meccanismo dell' ereditarietà. Il vantaggio dell' ereditarietà è nel fatto che essa consente di ottenere tipi derivati ​​da tipi di dati già definiti dall'utente.

Ad esempio, per creare le forme del Tetris, è conveniente creare prima una classe base Shape. Le altre classi che rappresentano tutti i tipi di sette forme possibili si può ottenere sulla sua base. Il comportamento delle forme è definito nella classe base, mentre l'attuazione del comportamento di ogni forma separata è definito nelle classi derivate.

Nella programmazione orientata agli oggetti, essi sono responsabili per il loro comportamento. Lo sviluppatore ADT dovrebbe includere un codice per descrivere qualsiasi comportamento che normalmente ci si aspetterebbe dagli oggetti corrispondenti. Il fatto che l'oggetto stesso è responsabile per il suo comportamento, semplifica notevolmente il compito di programmazione per l'utente di questo oggetto.

Se vogliamo disegnare una forma sullo schermo, abbiamo bisogno di sapere dove sarà il centro e come disegnarlo. Se una forma separata sa come disegnare se stessa, il programmatore deve inviare un messaggio di "disegna" quando si utilizza tale forma.

Il linguaggio MQL5 è come il C++ , e ha anche il meccanismo dell' incapsulamento per l'implementazione dell' ADT. Da un lato l'incapsulamento combina i dettagli interni di attuazione di un particolare tipo, e dall'altro combina funzioni accessibili esternamente che possono influenzare oggetti di questo tipo. I dettagli dell'implementazione possono essere inaccessibili per un programma che utilizza questo tipo.

 

Il concetto di OOP ha un insieme di concetti, tra cui:

  • Simulazione di azioni dal mondo reale
  • Tipi di dato, dall'utente definiti
  • Nascondere i dettagli di implementazione
  • Possibilità di riutilizzo del codice attraverso l'ereditarietà
  • Interpretazione delle chiamate di funzione durante l'esecuzione

Alcuni di questi concetti sono piuttosto vaghi, alcuni sono astratti, altri sono generali.