Skillbook Logo
foto profilo

Skill Factory

Lista post > Introduzione alla logica degli oggetti - Lezione 3

Introduzione alla logica degli oggetti - Lezione 3

Gino Visciano | Skill Factory - 06/04/2018 00:17:32 | in Tutorials

In questa lezione iniziamo a descrive in modo più dettagliato l'architettura delle applicazioni software ad oggetti.

Nella lezione precedente abbiamo visto che oggi le applicazioni software sono insiemi di componenti che collaborano tra loro per per soddisfare le specifiche funzionali richieste.

Gli oggetti che compongono le applicazioni sono di tre tipi:

1) MODEL - Contengono dati (sono entità).
2) VIEW - Hanno il compito di permettere la visualizzazione oppure l'inserimento dei dati negli oggetti di tipo MODE, ad esempio in un'applicazione Web corrispondono alle Pagine HTML, mentre in un'applicazione Desktop corrispondono alle interfacce grafiche (GUI).
3) CONTROLLER, che hanno il compito di gestire il flusso logico applicativo. Un controller può svolgere anche il ruolo di servizio, mettendo a disposizione dell'applicazioni in cui è presente, funzionalità oppure azioni specifiche, che si possono richiamare attraverso i metodi dell'interfaccia esposta.

I simboli UML (Unified Modeling Language) che si usano per indicare i tre tipi di oggetti utilizzati per creare le applicazioni software, sono i seguenti:

Il diagramma UML che descrive l'architettura di un'applicazione software si chiama "Diagramma dei Componeti".

Diagramma dei componenti che descrive il processo di login di un'applicazione.


CLASSI ED OGGETTI
Le Classi  sono template creati dai programmatori, con i linguaggi di programmazione ad oggetti, servono per creare gli oggetti.
L'esempio seguente mostra una classe che definisce il template di un tipo Persona:

class Persona {
    private string nome;
    private string cognome;
    private int eta;
    public  void setNome(string nome){
            this.nome=nome;
        };
    public   void setCognome(string cognome){
            this.cognome=cognome;
        };
    public  void setEta(int eta){
            this.eta=eta;
        };
    public string getNome(){
            return nome;
        }
    public  string getCognome(){
            return cognome;
        }
    public int getEta(){
            return eta;
        }
    Persona();
    Persona(string nome, string cognome, int eta){
            this.nome=nome;
            this.cognome=cognome;
            this.eta=eta;
        }
};

Gli Oggeti sono istanze delle Classi, istanziare significa creare un oggetto in memoria utlizzando la classe corrispondente.
Con la stessa classe si possono creare tanti oggetti dello stesso tipo.

L'esempio seguente mostra come s'istanzia l'oggetto persona di tipo Persona:

Gli oggetti dopo che sono stati istanziati possono essere usati, come mostra l'esempio seguente:

persona.setNome("Mario");
persona.setCognome("Rossi");
persona.setEta(35);

Le Classi definiscono il tipo di oggetto che state usando nell'applicazione, in fase di progettazione per disegnare una classe con il linguaggio UML (Unified Modeling Language) dovete usare un "Diagramma di Classe".

L'esempio seguente mostra il diagramma di classe dell'oggetto persona:


Per convenzione i nomi delle Classi iniziano sempre con la lettera maiuscola, se sono composti da più parole, devono iniziare tutte con la lettera maiuscola.
I nomi degli Oggetti  sono sempre scritti in minuscolo, se sono composti da più parole, le altre parole devono iniziare con la lettera maiuscola.

Gli Oggetti sono  Componenti  che contengono i seguenti elementi:

- attributi
- metodi
- costruttori

I programmatori per capire come sono fatti i componenti di un'applicazione e qual è il loro stato, devono leggere rispettivamente il  "Diagrammi di Classe" e il "Diagrammi degli Oggetti".

Nell'esempio seguente, il "Diagramma di componete" a sinistra, indica che il componete applicativo persona è un MODEL.
Il "Diagramma di Classe" al centro ne descrive la struttura  ed il tipo, infatti corrisponde alla classe Persona.
Il "Diagramma di Oggetto" a destra ne descrive lo stato in memoria dopo che è stato istanziato (creato), il Titolo del diagramma: persona:Persona indica rispettivamente il nome dell'oggetto e la classe corrispondente, cioè il tipo.

 

ATTRIBUTI
Gli Attributi sono variabili che contengono informazioni, si possono definire le proprietà dell'oggetto. Ad esempio nei MODEL, gli attributi si usano per memorizzare i dati delle entità corrispondenti, come mostra l'esempio seguente:


persona.nome="Mario";
persona.cognome="Rossi";
persona.eta=30;

persona -> oggetto;
nome -> attributo.

Gli Attributi si possono gestire direttamente, come nell'esempio, solo se sono pubblici (+), se gli Attributi sono privati (-) non sono visibili.
L'unico modo per gestire gli  Attributi privati è quello di usare i Metodi ed i Costruttori dell'oggetto.

METODI
I Metodi sono funzioni che eseguono operazioni, le azioni dei Metodi determinano il comportamento ed il ruolo dell'oggetto.
I linguaggi di programmazione ad oggetti, permettono di scrivere le istruzioni necessarie per implementare la logica delle applicazioni, unicamente all'interno dei Metodi.
I Metodi se sono pubblici possono essere eseguiti anche dai Metodi di altri oggetti, se sono privati possono essere eseguiti solo dai Metodi dello stesso oggetto.
I  Metodi che hanno il nome che inizia con i prefissi get e set si usano per assegnare o leggere i valori degli Attributi privati dell'oggetto a cui appartengono. 
Ad esempio,  dato che gli  Attributi dell'oggetto  persona sono privati, per gestirli sono stati creati i seguenti Metodi pubblici:

- setNome
- getNome
- setCognome
- getCognome
- setEta
- getEta 

Nell'esempio seguente vediamo come si assegnano i valori agli  Attributi privati dell'oggetto  persona usando i  Metodi  set corrispondenti:

persona.setNome("Mario");
persona.setCognome("Rossi");
persona.setEta(30);

Mentre nel prossimo esempio vediamo come si possono leggere i valori degli  Attributi privati dell'oggetto  persona usando i  Metodi  get corrispondenti:

String nome = persona.getNome();
String cognome = persona.getCognome();
int eta = persona.getEta();


COSTRUTTORI
I Costruttori sono Metodi che si usano per istanziare gli oggetti, vanno sempre indicati dopo il comando new usato per creare un oggetto, come mostra l'esempio seguente:

 

 

I Costruttori servono per inizializzare gli Attributi degli oggetti creati.

Ci sono due tipi costruttori, quello di defult, senza parametri e quello parametrizzato, usato per inizializzare gli Attributi dell'oggetto con valori esterni, si riconoscono perché hanno lo stesso nome della Calsse e nella loro dichiarazione non è indicato il tipo restituito,

I Costruttori sono sempre pubblici, solo gli oggetti di tipo Singletone, particolari oggetti che possono essere istanziati una sola volta, hanno il costruttore privato.
 

INTERFACCIA
Gli elementi pubblici di un oggetto sono la sua Interfaccia. L'Interfaccia di un componente applicativo ha lo stesso ruolo dell'Interfaccia di un componente elettronico, viene usata per permettere la comunicazione con gli altri componenti attrverso lo scambio d'informazioni.

 

L'Interfaccia dell'oggetto persona è la seguente:

- setNome
- getNome
- setCognome
- getCognome
- setEta
- getEta 

I Metodi degli oggetti che devono gestire l'oggetto persona lo possono fare attraverso la sua interfaccia, come mostra Il "Diagramma dei Componeti" seguente:

Il simbolo usato in UML per rappresentare un'interfaccia è il lecca lecca (lollipop).

COLLABORAZIONE TRA COMPONENTI
I componenti di un'applicazione per collaborare tra loro devono scambiarsi informazioni e condividere operazioni (metodi), la comunicazione può avvenire solo attraverso le interfacce.
Un componente per connettersi  all'interfaccia di un altro componente deve usare il suo riferimento che corrisponde all'indirizzo di memoria dove viene istanziato con il comando new,

In pratica il riferimento è il nome dell'oggetto che espone l'interfaccia, come mostra l'immagine seguente:


Nell'esempio seguente vediamo come il componente gestioneRisorse (Controller) può gestire persone collaborando con i componenti persona (Model), inserimeto_persona (View) e visualizza_persona (View):

Il Diagramma di Classi seguente, mostra la struttura degli oggetti che compongono l'applicazione gestioneRisorse.

MAIN
Il metodo main() della classe GestionePersone ,implementa il flusso logico dell'applicazione per gestire le persone.

Per svolgere questo lavoro usa il metodo inserimentoPersona(), che ha il compito di permettere l'inserimento dei dati attraverso la maschera "Inserimento Persona" e la memorizzazione dei dati nell'oggetto persona.

persona.setNome("Mario");
persona.setCognome("Rossi");
persona.setEta(35);

 

Il metdo visualizzaPersona(persona:Persona) viene usato dal main() per visualizzare attraverso la maschera "Visualizza Persona" il contenuto dell'oggeto persona.

UML Unified Modeling Language Diagrammi di Classi Diagrammi di Componenti Diagrammi di Oggetti Model Controller View Attributi Metodi Costruttori Istanziare Classe Oggetto Classi Oggetti

Share Button
TOP