OOAD - Paradigma orientato agli oggetti

Una breve storia

Il paradigma orientato agli oggetti ha preso forma dal concetto iniziale di un nuovo approccio di programmazione, mentre l'interesse per i metodi di progettazione e analisi è venuto molto più tardi.

  • Il primo linguaggio orientato agli oggetti è stato Simula (simulazione di sistemi reali), sviluppato nel 1960 dai ricercatori del Norwegian Computing Center.

  • Nel 1970, Alan Kay e il suo gruppo di ricerca presso Xerox PARK hanno creato un personal computer denominato Dynabook e il primo linguaggio di programmazione orientato agli oggetti (OOPL) puro - Smalltalk, per la programmazione del Dynabook.

  • Negli anni '80, Grady Booch pubblicò un documento intitolato Object Oriented Design che presentava principalmente un design per il linguaggio di programmazione Ada. Nelle edizioni successive, ha esteso le sue idee a un metodo di progettazione orientato agli oggetti completo.

  • Negli anni '90, Coad ha incorporato idee comportamentali in metodi orientati agli oggetti.

Le altre innovazioni significative sono state Object Modeling Techniques (OMT) di James Rumbaugh e Object-Oriented Software Engineering (OOSE) di Ivar Jacobson.

Analisi orientata agli oggetti

Object-Oriented Analysis (OOA) è la procedura per identificare i requisiti di ingegneria del software e sviluppare le specifiche del software in termini di modello a oggetti di un sistema software, che comprende oggetti interagenti.

La principale differenza tra l'analisi orientata agli oggetti e altre forme di analisi è che nell'approccio orientato agli oggetti, i requisiti sono organizzati attorno agli oggetti, che integrano sia dati che funzioni. Sono modellati su oggetti del mondo reale con cui il sistema interagisce. Nelle metodologie di analisi tradizionali, i due aspetti - funzioni e dati - sono considerati separatamente.

Grady Booch ha definito OOA come: "L'analisi orientata agli oggetti è un metodo di analisi che esamina i requisiti dalla prospettiva delle classi e degli oggetti trovati nel vocabolario del dominio del problema" .

I compiti principali nell'analisi orientata agli oggetti (OOA) sono:

  • Identificazione degli oggetti
  • Organizzare gli oggetti creando un diagramma del modello a oggetti
  • Definizione degli interni degli oggetti o attributi degli oggetti
  • Definizione del comportamento degli oggetti, cioè azioni dell'oggetto
  • Descrivere come interagiscono gli oggetti

I modelli comuni utilizzati in OOA sono casi d'uso e modelli a oggetti.

Design orientato agli oggetti

Object-Oriented Design (OOD) implica l'implementazione del modello concettuale prodotto durante l'analisi orientata agli oggetti. In OOD, i concetti nel modello di analisi, che sono indipendenti dalla tecnologia, vengono mappati su classi di implementazione, vengono identificati i vincoli e vengono progettate le interfacce, risultando in un modello per il dominio della soluzione, ovvero una descrizione dettagliata di come il sistema deve essere costruito su tecnologie concrete.

I dettagli di implementazione generalmente includono:

  • Ristrutturare i dati della classe (se necessario),
  • Implementazione di metodi, ovvero strutture di dati interni e algoritmi,
  • Implementazione del controllo e
  • Attuazione delle associazioni.

Grady Booch ha definito il design orientato agli oggetti come "un metodo di progettazione che comprende il processo di decomposizione orientato agli oggetti e una notazione per rappresentare modelli logici e fisici, nonché statici e dinamici del sistema in fase di progettazione" .

Programmazione orientata agli oggetti

La programmazione orientata agli oggetti (OOP) è un paradigma di programmazione basato su oggetti (con dati e metodi) che mira a incorporare i vantaggi della modularità e della riusabilità. Gli oggetti, che di solito sono istanze di classi, vengono utilizzati per interagire tra loro per progettare applicazioni e programmi per computer.

Le caratteristiche importanti della programmazione orientata agli oggetti sono:

  • Approccio bottom-up nella progettazione del programma
  • Programmi organizzati attorno a oggetti, raggruppati in classi
  • Concentrati sui dati con metodi per operare sui dati dell'oggetto
  • Interazione tra oggetti tramite funzioni
  • Riusabilità del design attraverso la creazione di nuove classi aggiungendo funzionalità alle classi esistenti

Alcuni esempi di linguaggi di programmazione orientati agli oggetti sono C ++, Java, Smalltalk, Delphi, C #, Perl, Python, Ruby e PHP.

Grady Booch ha definito la programmazione orientata agli oggetti come "un metodo di implementazione in cui i programmi sono organizzati come raccolte cooperative di oggetti, ognuno dei quali rappresenta un'istanza di una certa classe e le cui classi sono tutte membri di una gerarchia di classi unite tramite relazioni di ereditarietà " .