Approccio orientato agli oggetti

Nell'approccio orientato agli oggetti, l'attenzione si concentra sull'acquisizione della struttura e del comportamento dei sistemi informativi in ​​piccoli moduli che combinano sia dati che processi. L'obiettivo principale della progettazione orientata agli oggetti (OOD) è migliorare la qualità e la produttività dell'analisi e della progettazione del sistema rendendola più utilizzabile.

Nella fase di analisi, i modelli OO vengono utilizzati per colmare il divario tra problema e soluzione. Funziona bene in situazioni in cui i sistemi sono sottoposti a progettazione, adattamento e manutenzione continui. Identifica gli oggetti nel dominio del problema, classificandoli in termini di dati e comportamento.

Il modello OO è vantaggioso nei seguenti modi:

  • Facilita le modifiche al sistema a basso costo.

  • Promuove il riutilizzo dei componenti.

  • Semplifica il problema dell'integrazione dei componenti per configurare un sistema di grandi dimensioni.

  • Semplifica la progettazione di sistemi distribuiti.

Elementi di sistema orientato agli oggetti

Esaminiamo le caratteristiche del sistema OO -

  • Objects- Un oggetto è qualcosa che esiste nel dominio del problema e può essere identificato dai dati (attributo) o dal comportamento. Tutte le entità tangibili (studente, paziente) e alcune entità intangibili (conto bancario) sono modellate come oggetti.

  • Attributes - Descrivono le informazioni sull'oggetto.

  • Behavior- Specifica cosa può fare l'oggetto. Definisce l'operazione eseguita sugli oggetti.

  • Class- Una classe incapsula i dati e il suo comportamento. Oggetti con significato e scopo simili raggruppati insieme come classe.

  • Methods- I metodi determinano il comportamento di una classe. Non sono altro che un'azione che un oggetto può eseguire.

  • Message- Un messaggio è una chiamata di funzione o procedura da un oggetto a un altro. Sono informazioni inviate agli oggetti per attivare i metodi. Essenzialmente, un messaggio è una chiamata di funzione o procedura da un oggetto a un altro.

Caratteristiche del sistema orientato agli oggetti

Un sistema orientato agli oggetti viene fornito con diverse fantastiche funzionalità che vengono discusse di seguito.

Incapsulamento

L'incapsulamento è un processo di occultamento delle informazioni. È semplicemente la combinazione di processo e dati in un'unica entità. I dati di un oggetto sono nascosti al resto del sistema e disponibili solo tramite i servizi della classe. Consente il miglioramento o la modifica dei metodi utilizzati dagli oggetti senza influire su altre parti di un sistema.

Astrazione

È un processo di acquisizione o selezione del metodo e degli attributi necessari per specificare l'oggetto. Si concentra sulle caratteristiche essenziali di un oggetto rispetto alla prospettiva dell'utente.

Relazioni

Tutte le classi nel sistema sono correlate tra loro. Gli oggetti non esistono isolati, esistono in relazione con altri oggetti.

Esistono tre tipi di relazioni oggettuali:

  • Aggregation - Indica la relazione tra un intero e le sue parti.

  • Association - In questo, due classi sono correlate o connesse in qualche modo, ad esempio una classe lavora con un'altra per eseguire un compito o una classe agisce su un'altra classe.

  • Generalization- La classe figlia si basa sulla classe genitore. Indica che due classi sono simili ma presentano alcune differenze.

Eredità

L'ereditarietà è una grande caratteristica che permette di creare sottoclassi da una classe esistente ereditando gli attributi e / o le operazioni delle classi esistenti.

Polimorfismo e legame dinamico

Il polimorfismo è la capacità di assumere molte forme diverse. Si applica sia agli oggetti che alle operazioni. Un oggetto polimorfico è quello che il tipo vero si nasconde all'interno di una classe super o genitore.

Nell'operazione polimorfica, l'operazione può essere eseguita in modo diverso da diverse classi di oggetti. Ci permette di manipolare oggetti di classi differenti conoscendo solo le loro proprietà comuni.

Approccio strutturato vs. Approccio orientato agli oggetti

La tabella seguente spiega come l'approccio orientato agli oggetti differisce dal tradizionale approccio strutturato:

Approccio strutturato Approccio orientato agli oggetti
Funziona con approccio dall'alto verso il basso. Funziona con l'approccio dal basso verso l'alto.
Il programma è suddiviso in numero di sottomoduli o funzioni. Il programma è organizzato in base al numero di classi e oggetti.
Viene utilizzata la chiamata di funzione. Viene utilizzato il passaggio dei messaggi.
Il riutilizzo del software non è possibile. La riutilizzabilità è possibile.
La programmazione della progettazione strutturata di solito rimane fino alle fasi finali. Programmazione della progettazione orientata agli oggetti eseguita in concomitanza con altre fasi.
Il design strutturato è più adatto per l'offshoring. È adatto per lo sviluppo interno.
Mostra una chiara transizione dalla progettazione all'implementazione. Transizione non così chiara dalla progettazione alla realizzazione.
È adatto per sistemi in tempo reale, sistemi embedded e progetti in cui gli oggetti non sono il livello di astrazione più utile. È adatto per la maggior parte delle applicazioni aziendali, progetti di sviluppo di giochi, che dovrebbero essere personalizzati o estesi.
I diagrammi DFD e ER modellano i dati. Diagramma di classe, diagramma di sequenza, diagramma del diagramma di stato e casi d'uso contribuiscono tutti.
In questo, i progetti possono essere gestiti facilmente grazie a fasi chiaramente identificabili. In questo approccio, i progetti possono essere difficili da gestire a causa di transizioni incerte tra le fasi.

Linguaggio di modellazione unificato (UML)

UML è un linguaggio visivo che consente di modellare processi, software e sistemi per esprimere il design dell'architettura di sistema. È un linguaggio standard per la progettazione e la documentazione di un sistema in modo orientato agli oggetti che consente agli architetti tecnici di comunicare con lo sviluppatore.

È definito come un insieme di specifiche create e distribuite da Object Management Group. UML è estensibile e scalabile.

L'obiettivo di UML è fornire un vocabolario comune di termini orientati agli oggetti e tecniche di creazione di diagrammi sufficientemente ricco da modellare qualsiasi progetto di sviluppo di sistemi dall'analisi all'implementazione.

UML è composto da:

  • Diagrams - È una rappresentazione pittorica del processo, del sistema o di una parte di esso.

  • Notations - Consiste di elementi che lavorano insieme in un diagramma come connettori, simboli, note, ecc.

Esempio di notazione UML per la classe

Istanza diagramma-notazione UML

Operazioni eseguite sugli oggetti

Le seguenti operazioni vengono eseguite sugli oggetti:

  • Constructor/Destructor- Creazione di nuove istanze di una classe ed eliminazione di istanze esistenti di una classe. Ad esempio, l'aggiunta di un nuovo dipendente.

  • Query- Accedere allo stato senza modificare il valore, non ha effetti collaterali. Ad esempio, trovare l'indirizzo di un determinato dipendente.

  • Update - Modifica il valore di uno o più attributi e influisce sullo stato dell'oggetto Ad esempio, la modifica dell'indirizzo di un dipendente.

Usi di UML

UML è abbastanza utile per i seguenti scopi:

  • Modellazione del processo aziendale
  • Descrivere l'architettura del sistema
  • Mostra la struttura dell'applicazione
  • Acquisizione del comportamento del sistema
  • Modellazione della struttura dei dati
  • Costruire le specifiche dettagliate del sistema
  • Schizzo delle idee
  • Generazione del codice del programma

Modelli statici

I modelli statici mostrano le caratteristiche strutturali di un sistema, descrivono la sua struttura di sistema e sottolineano le parti che compongono il sistema.

  • Sono usati per definire nomi di classi, attributi, metodi, firme e pacchetti.

  • I diagrammi UML che rappresentano il modello statico includono diagramma delle classi, diagramma degli oggetti e diagramma dei casi d'uso.

Modelli dinamici

I modelli dinamici mostrano le caratteristiche comportamentali di un sistema, ovvero come si comporta il sistema in risposta ad eventi esterni.

  • I modelli dinamici identificano l'oggetto necessario e il modo in cui interagiscono tramite metodi e messaggi.

  • Sono utilizzati per progettare la logica e il comportamento del sistema.

  • I diagrammi UML rappresentano il modello dinamico includono diagramma di sequenza, diagramma di comunicazione, diagramma di stato, diagramma di attività.

Ciclo di vita dello sviluppo del sistema orientato agli oggetti

Consiste di tre macro processi:

  • Analisi orientata agli oggetti (OOA)
  • Progettazione orientata agli oggetti (OOD)
  • Implementazione orientata agli oggetti (OOI)

Attività di sviluppo di sistemi orientati agli oggetti

Lo sviluppo di sistemi orientati agli oggetti comprende le seguenti fasi:

  • Analisi orientata agli oggetti
  • Design orientato agli oggetti
  • Prototyping
  • Implementation
  • Test incrementali

Analisi orientata agli oggetti

Questa fase riguarda la determinazione dei requisiti di sistema e la comprensione dei requisiti di sistema build a use-case model. Un caso d'uso è uno scenario per descrivere l'interazione tra utente e sistema informatico. Questo modello rappresenta le esigenze dell'utente o la vista utente del sistema.

Comprende anche l'identificazione delle classi e delle loro relazioni con le altre classi nel dominio del problema, che costituiscono un'applicazione.

Design orientato agli oggetti

L'obiettivo di questa fase è progettare e perfezionare le classi, gli attributi, i metodi e le strutture identificati durante la fase di analisi, l'interfaccia utente e l'accesso ai dati. Questa fase identifica e definisce anche le classi o gli oggetti aggiuntivi che supportano l'implementazione del requisito.

Prototipazione

La prototipazione consente di comprendere appieno quanto sarà facile o difficile implementare alcune delle funzionalità del sistema.

Può anche dare agli utenti la possibilità di commentare l'usabilità e l'utilità del design. Può definire ulteriormente un caso d'uso e rendere la modellazione del caso d'uso molto più semplice.

Implementazione

Utilizza lo sviluppo basato su componenti (CBD) o lo sviluppo rapido di applicazioni (RAD).

Sviluppo basato su componenti (CBD)

CODD è un approccio industrializzato al processo di sviluppo del software che utilizza una vasta gamma di tecnologie come gli strumenti CASE. Lo sviluppo delle applicazioni passa dallo sviluppo personalizzato all'assemblaggio di componenti software pre-costruiti, pre-testati e riutilizzabili che funzionano tra loro. Uno sviluppatore CBD può assemblare componenti per costruire un sistema software completo.

Sviluppo rapido di applicazioni (RAD)

RAD è un insieme di strumenti e tecniche che possono essere utilizzati per creare un'applicazione più velocemente di quanto normalmente possibile con i metodi tradizionali. Non sostituisce SDLC ma lo integra, poiché si concentra maggiormente sulla descrizione del processo e può essere combinato perfettamente con l'approccio orientato agli oggetti.

Il suo compito è creare l'applicazione in modo rapido e implementare in modo incrementale la progettazione dei requisiti dell'utente attraverso strumenti come visual basic, power builder, ecc.

Test incrementali

Lo sviluppo del software e tutte le sue attività, inclusi i test, sono un processo iterativo. Pertanto, può essere un affare costoso se aspettiamo di testare un prodotto solo dopo il suo completo sviluppo. Qui entrano in gioco i test incrementali in cui il prodotto viene testato durante le varie fasi del suo sviluppo.