HeaderBlog
LaConoscenza.NET
I metodi convenzionali considerano i dati e le procedure in modo separato, per cui è compito del programmatore garantire il corretto uso dei tipi. Il programmatore attiva una funzione e trasferisce ad essa i dati da elaborare, mentre nella programmazione object oriented Introduzione alle Metodologie Object Oriented
Visualizza l'intero eBook Metodologie Object Oriented  

I metodi convenzionali considerano i dati e le procedure in modo separato

  • E’ compito del programmatore garantire il corretto uso dei tipi
  • Il programmatore attiva una funzione e trasferisce ad essa i dati da elaborare
    • Tipicamente vi sono diverse funzioni per ogni tipo di dati

Il fondamento su cui si basa il C++ è la programmazione orientata agli oggetti. Quindi è indispensabile dimenticarsi della programmazione strutturata e funzionale, tipica dei programmi scritti utilizzando il linguaggio C.
In generale un programma può essere organizzato

  • Intorno al suo codice (cioè, il codice agisce sui dati)
  • Intorno ai suoi dati (cioè, i dati controllano l’accesso al codice)

Nella metodologia object oriented si definiscono i dati e i metodi che sono autorizzati ad agire su quei dati. Il tipo dei dati definisce, con precisione, quale operazione può essere eseguita su quei dati

  • Le metodologie object oriented consentono di rappresentare concetti come un insieme di objects
  • Consentono di identificare e organizzare i concetti strettamente connessi al dominio applicativo
  • Specifica ciò che un object è, ma non come deve essere usato
  • La difficoltà di un progetto è nella sua essenza e non nel modo con cui viene realizzato

Le metodologie object oriented enfatizzano la strutturazione dei dati

  • Un programmatore non scrive procedure, ma definisce classi
  • Progetta la struttura dei dati di una classe di objects (Data Model)
  • Definisce e scrive i metodi che tale struttura rende disponibile
  • Descrive il sistema mediante una gerarchia di classi

L’utente di una classe deve solo conoscere l’interfaccia esterna e il suo significato

  • Può creare istanze della classe ed inviare loro gli opportuni messaggi, senza curarsi della loro realizzazione interna.
Data Inserimento Post 20/03/2009 6.34.20  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
L’abstract data type, rappresenta un modello che comprende un tipo, cioè una concreta rappresentazione di un concetto o di una idea e un associato set di operazioni, che caratterizzano l’aspetto dei tipi dipendenti. Gli elementi associati ad un abstract data type sono: le classi e gli oggettiAbstract Data types
Visualizza l'intero eBook Metodologie Object Oriented  

Il Modello
Le metodologie object oriented enfatizzano il concetto di modello e di astrazione.

  • Un modello è un’astrazione di ciò che si vuole realizzare
  • Consente di ignorare gli elementi non essenziali
  • Evidenzia quelli rilevanti
  • Esalta la potenzialità più interessante dell’individuo: l’astrazione

Il modello deve solo essere un’astrazione di ciò che il sistema deve fare, non deve definire come deve essere fatto; quindi devono essere concetti del dominio applicativo e non implementazioni

  • Il modello non deve contenere qualsiasi decisione implementativa
  • Un oggetto deve essere descritto solo in funzione dei suoi attributi e non in termini di operazioni
  • Un modello può non essere corretto, ma deve essere sempre adeguato allo scopo
  • Un modello che evidenzia dettagli non necessari, limita le scelte e distoglie l’attenzione dalle reali necessità

Astrazione
L’astrazione è la capacità umana che meglio consente l’esame selettivo di un problema

  • Obiettivo dell’astrazione è di limitare l’orizzonte del problema, in quanto ciò che produce è una incompleta descrizione del mondo reale
  • Isola gli elementi rilevanti, rispetto a quelli irrilevanti
  • E’ sempre finalizzata ad uno scopo, i n quanto è lo scopo che determina ciò che è importante

L’astrazione quindi, consente alle metodologie object oriented di generalizzare, inoltre le definizioni comune sono memorizzate una sola volta per classe e non ad ogni istanza della classe

  • L’astrazione consente di focalizzare l’essenziale e non le proprietà casuali
  • Consente di individuare ciò che l’oggetto è, non come deve essere realizzato
  • Non obbliga a prendere prematuramente decisioni sui dettagli

L’abstract data type
L’abstract data type, rappresenta un modello che comprende un tipo, cioè una concreta rappresentazione di un concetto o di una idea e un associato set di operazioni, che caratterizzano l’aspetto dei tipi dipendenti. Gli elementi associati ad un abstract data type sono: le classi e gli oggetti

Le classi. Costituiscono un tipo di dati definiti dall’utente che contengono una specifica dei dati necessari per rappresentare l’object e un set di operazioni (i metodi) necessari per manipolare l’oggetto. Una classe è essenzialmente un’astrazione

  • Descrivere le proprietà più importanti e definisce il comportamento del tipo che rappresenta
  • Definisce l’interfaccia per tutte le operazioni che possono essere effettuate sull’associato tipo
  • Specifica le strutture dei dati che sono accessibili solo nella classe
  • Determina la visibilità, definendo gli elementi che devono essere posti nella sezione privata o pubblica della classe. Gli elementi dichiarati nella sezione privata, non sono accessibili fuori dalla classe
  • Solo i metodi della classe possono accedere ai dati o agli altri metodi dichiarati nella sezione privata, mentre gli elementi dichiarati nella sezione pubblica della classe sono accessibili, anche fuori dalla classe
  • Una classe può comprendere due speciali metodi denominati costruttore e distruttore. Sono usati per inizializzare e per distruggere gli elementi della classe

Una delle caratteristiche più interessanti delle classi è costituito dal processo di derivazione, il cui fine è di derivare un nuovo tipo mediante il riferimento ad un tipo esistente. La nuova classe eredita tutte le prprietà della classe da cui deriva.

L'object. Rappresenta l’instanza di una classe.  Contiene i dati dichiarati nella classe da cui viene instanziato e può invocare i metodi associati con la classe. Vengono  manipolati mediante l’invio di messaggi. Un messaggio è una richiesta che viene inviata ad un oggetto al fine di attivare un’operazione sull’oggetto

  • L’operazione si realizza mediante un metodo, cioè una funzione o L’invio di un messaggio corrisponde all’attivazione di una funzione
  • I messaggi che possono essere inviati ad un oggetto sono quelli specificati durante la fase di definizione della classe a cui l’oggetto appartiene
  • Possono essere concreti: un file, in un file system, oppure  concettuali: metodo di scheduling di un sistema multiprocessing
Data Inserimento Post 22/03/2009 9.21.13  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Le proprietà più importanti di un oggetto sono: identità, classificazione,Incapsulamento, Polimorfismo, Ereditarietà Proprietà degli Objects
Visualizza l'intero eBook Metodologie Object Oriented  

Le proprietà più importanti di un oggetto sono: identità, classificazione, Incapsulamento, Polimorfismo e Ereditarietà

Identità. Un oggetto ha una sua inerente identità. Infatti, due oggetti sono distinti anche se tutti gli attributi sono identici. Viene identificato dal suo identificatore, che concettualmente è un handler. I riferimenti sono uniformi e indipendenti dai contenuti degli oggetti

Classificazione. Tutti gli oggetti che hanno gli stessi attributi e gli stessi metodi vengono raggruppati in una classe. Ciasuna classe descrivere un infinito insieme di oggetti individuali. Un oggetto possiede valori per ciascun attributo, ma condivide con gli altri oggetti della classe nomi e operazioni

Incapsulamento (o Data Hiding) è un meccanismo che lega insieme codice e dati, al fine di garantire i dati da abusi o interferenze esterne. E’ l’esistenza di questo legame che consente di esprimersi in termini di oggetto. Conseguenza di questa caratteristica è che:

  • i dati e il codice, in uno oggetto, possono essere privati o pubblici.  In genere gli elementi pubblici costituiscono l’intefaccia all’oggetto.
  • L’unità di base dell’incapsulamento è la classe, il cui fine è di definire la forma dell’oggetto, cioè specifica un particolare set di dati e di codice. La classe è quindi un’idea su come costruire un oggetto, mentre gli oggetti sono istanze della classe.
  • I metodi e i dati, definiti in una classe, sono detti membri della classe.

Polimorfismo (cioè “molte forme”) . Nei tradizionali linguaggi di programmazione due procedure non possono avere lo stesso nome. Tuttavia, in diversi casi, le procedure devono essere polimorfiche, cioè devono, per esempio, elaborare argomenti di tipo diverso. Una soluzione convenzionale consiste nel passare alla procedura un ulteriore parametro. Questo approccio non è modulare.
Il Polimorfismo è quindi una qualità che consente di realizzare una interfaccia per accedere a una classe generale di azioni. Spesso viene espresso dalla frase “interfaccia con più metodi”. Ciò significa che è possibile progettare un’interfaccia generica, per un gruppo di attività collegate. Il polimorfismo aiuta a ridurre la complessità, in quanto consente di realizzare la medesima interfaccia per una classe di azioni, delegando al compilatore di selezionare la specifica azione

Ereditarietà. E’ un processo mediante il quale una classe base passa le sue funzionalità ad una classe derivata, che eredita così tutte le proprietà e funzionalità della classe base. In questa definizione è implicito il concetto di gerarchia, che è più qualificante di una classificazione di tipo top-down, in quanto, senza l’uso di gerarchie, ogni oggetto dovrebbe definire, in modo esplicito, tutte le sue caratteristiche.
Utilizzando l’ereditarietà, un oggetto deve limitarsi a definire solo le qualità che lo rendono unico, nella sua classe. Le classi possono essere definite in modo da ereditare tutto o solo alcuni metodi della classe base. Una nuova classe può aggiungere nuovi elementi, ma non può cancellare elementi della classe base, li può solo ignorare.

Data Inserimento Post 24/03/2009 11.34.05  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
La definizione di un modello dell’oggetto consente di privilegiare la descrizione degli oggetti a discapito della loro funzionalità, in quanto una classe è sempre un concetto, una idea. Gli oggetti hanno una identità e quindi sono distinguibili. L’identità afferma che gli oggetti sono distinti in quanto esistono, non perché hanno caratteristiche comuni Object Modelling
Visualizza l'intero eBook Metodologie Object Oriented  

L’object modelling viene descritto mediante tre diversi tipi di modelli

  • Il modello dell’oggetto
  • Il modello dinamico
  • Il modello funzionale

I legami fra i diversi tipi di modelli devono essere limitati ed espliciti. Ciascun tipo di modello deve descrivere solo un aspetto del sistema, anche se può comprendere riferimenti ad elementi definiti in altri modelli. Inoltre deve descrivere solo la struttura dei dati su cui agisce il modello funzionale e quello dinamico Le operazioni nell’object modelling corrispondono: a d eventi nel modello dinamico e a funzioni nel modello funzionale

Il Modello dell’oggetto consente di individuare gli elementi più importanti, definisce la struttura degli oggetti e le loro relazioni, l'identità, gli attributi e le relazioni con gli altri oggetti.  Graficamente può essere rappresentato mediante un diagramma contenente la descrizione delle classi (per esempio UML).

Il Modello Dinamico   consente di descrivere le strutture di controllo del sistema in termini di eventi e di stati. Mostra le decisioni che dipendono dal valore degli oggetti, definisce la sequenza e l’organizzazione degli eventi, specifica il contesto degli eventi. Graficamente può essere rappresentato mediante un diagramma di stato.

Il Modello Funzionale consente di descrivere la struttura elaborativa del sistema in termini di valori e funzioni, evidenzia gli aspetti che consentono di trasformare i valori, individua ciò che il sistema fa senza considerare come o quando deve essere fatto. Graficamente può essere rappresentato mediante un diagramma di data flow, il cui fine è di evidenziare le dipendenze fra i valori.

La definizione di un modello dell’oggetto consente di privilegiare la descrizione degli oggetti a discapito della loro funzionalità, in quanto una classe è sempre un concetto, una idea. Gli oggetti hanno una identità e quindi sono distinguibili. L’identità afferma che gli oggetti sono distinti in quanto esistono, non perché hanno caratteristiche comuni. 
Il termine oggetto può indicare:

  • Una singola entità: instanza di un oggetto
  • Un insieme di elementi: classe di un oggetto

La classe descrive un insieme di oggetti che hanno comuni relazioni con gli altro oggetti: proprietà e metodi. Gli oggetti derivano le loro individualità dagli attributi e dalle relazioni con gli altri oggetti. L’attributo definisce il valore memorizzato dagli oggetti di una classe

  • Ad esempio nome, età sono attributi della classe Person

Un’operazione rappresenta una trasformazione che può essere applicata agli oggetti di una classe. Ciascuna operazione ha un object come argomento. La medesima operazione può essere applicata a classi differenti, in quanto l’operazione è polimorfica. Un’operazione in una classe viene denominata metodo. Un metodo dipende solo dalla classe dell’object Link e Relazioni.
Un link definisce una relazione concettuale fra instanze di object.  Le instanze di un’associazione sono inerentemente bidirezionali o vengono create mediante pointer fra gli oggetti. Un link non è parte degli oggetti, ma dipende da loro.

Data Inserimento Post 31/03/2009 12.01.03  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email