Client - Interfaccia - Implementazione

Documenti analoghi
Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Heap e code di priorità

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

INDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5.

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Architettura degli elaboratori Docente:

Linguaggio C: introduzione

Lezione 3 Progettazione di siti

INTRODUZIONE ALLE BASI DATI RELAZIONALI

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

Il generatore di numeri casuali

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Programmazione Orientata agli Oggetti

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Uso di metodi statici. Walter Didimo

Il calcolatore. Architettura di un calcolatore (Hardware)

Le aree dell informatica

Array multidimensionali e stringhe

ARCHITETTURA FISICA DEL SISTEMA

Architetture di rete. 4. Le applicazioni di rete

FONDAMENTI DI INFORMATICA II

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Files in C++ Fondamenti di Informatica. R. Basili. a.a

Ingegneria del Software

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Progettazione logica

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

Rotary International Distretto 2040 Ge.Ro. - Gestionale Rotary

Introduzione alle macchine a stati (non definitivo)

I database. Introduzione alla teoria delle basi di dati

Esercizio 1: archivio CD e DVD

Progettazione di Algoritmi

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Valutazione del personale

Fondamenti VBA. Che cos è VBA

testo Saveris Web Access Software Istruzioni per l'uso

Modulo 2 Data Base - Modello Relazionale

Compilazione on-line del Piano di Studio

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

La codifica. dell informazione

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Fondamenti di Programmazione

Le sue caratteristiche:

Aggiorna. La Funzione Aggiorna Listino Aggiornare Listino Pr7 / Le connessioni / Listino METEL. Aggiorna Lis no. Aggiornamento del listino

Steel&Graphics srl Via Cà Nova Zampieri 4/E San Giovanni Lupatoto VR Tel. 045/ Fax. 045/

Quick Print. Quick Print. Guida Utente. Copyright 2013 Hyperbolic Software.

Layout Editor e Stampa

UNIVERSITÀ DEGLI STUDI DI SALERNO Ufficio Pianificazione e Sviluppo

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

Manuale utente Soggetto Promotore Erogatore Politiche Attive

Internet (- working). Le basi.

FUNZIONI DI BASE PANNELLO SMS

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

Matematica e-learning - Corso Zero di Matematica. Gli Insiemi. Prof. Erasmo Modica A.A.

Note_Batch_Application 04/02/2011

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Introduzione a MapGuide Author 6.5

PROCEDIMENTO DI COMPILAZIONE DELLA SCIA E DELL EVENTUALE INTERCALARE REQUISITI PER L AVVIO DELL ATTIVITA DI AGENTE E/O RAPPRESENTANTE DI COMMERCIO

Navigare in Internet Laboratorio di approfondimento la creazione di siti web e/o blog. Marco Torciani. (Seconda lezione) Unitre Pavia a.a.

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -

Guida Utente. Come utilizzare lo strumento e-learning e fruire dei corsi on line

Autodesk Map parte I digitalizzazione e importazione dati

Giovanni Franza - AICA. Certificazioni informatiche avanzate

4 GLI ARRAY E LE STRINGHE

Formattare il testo con gli stili

Si considerino le seguenti specifiche per la realizzazione di un sito web per la gestione di abbonamenti a riviste di vario genere..

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Esercitazione n o 3 per il corso di Ricerca Operativa

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Lezione 6 Le pile. Informatica. 28 Aprile 2016

Analisi Curve di Carico

3. Terza esercitazione autoguidata: progetto gestione voli

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

M n a u n a u l a e l e o p o e p r e a r t a i t v i o v o Ver /12/2014

La segreteria didattica dovrà eseguire semplici operazioni per effettuare lo scrutinio:

Capitolo 9. Esercizio 9.1. Esercizio 9.2

Come usare la piattaforma StartUp

Manuale Pubblicazione esito di gara/affidamento diretto svolti al di fuori del sistema SICP

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Proteggere la rete I FIREWALL (seconda parte)

DEMATERIALIZZAZIONE DEI DOCUMENTI, DEI PROCESSI E DELLE RELAZIONI

Transcript:

Client - Interfaccia - Implementazione Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Client - Interfaccia - Implementazione 1/11

Paradigma Client - Interfaccia - Implementazione Quando si progetta un programma di grandi dimensioni, può essere utile vederlo come un insieme di più componenti o moduli indipendenti. Ciascun modulo fornisce del servizi ad altre parti del programma, che per questo vengono chiamate client. Ogni modulo ha un interfaccia che descrive i servizi che mette a disposizione. I dettagli relativi al modulo (incluso il codice che realizza i servizi stessi) ne definiscono l implementazione. Esempio Nella realizzazione del progetto FacciaLibro, si potrebbe pensare ad un modulo per la gestione di un grafo: l interfaccia definisce quali operazioni si possono fare sul grafo, il client può usare queste funzioni ad esempio per stabilire quali amicizie suggerire. Violetta Lonati Client - Interfaccia - Implementazione 2/11

Esempio: la pila Violetta Lonati Client - Interfaccia - Implementazione 3/11

Vantaggi dell uso di moduli Astrazione non è necessario sapere come sono implementati i moduli, possiamo usarli astrattamente sulla base di quanto specificato dall interfaccia. Riusabilità ogni modulo che fornisce servizi è potenzialmente riutilizzabile da programmi diversi, con scopi diversi. Manutenibilità un baco avrà effetti relativi all implementazione di un solo modulo, sarà quindi tendenzialmente più facile da individuare e correggere; una volta corretto non sarà necessario ricompilare tutto il programma ma solo l implementazione del modulo coinvolto (a patto poi di ripetere il link dell intero programma). Violetta Lonati Client - Interfaccia - Implementazione 4/11

Come progettare un modulo Un modulo deve essere: 1. coeso i suoi elementi devono essere fortemente correlati fra loro; 2. indipendente meno relazioni ha con gli altri moduli, più sarà riusabile e manutenibile. Violetta Lonati Client - Interfaccia - Implementazione 5/11

Esempi di moduli Famiglia di dati: una collezione di variabili e macro correlate (es: float.h o limits.h). Libreria: una collezione di funzioni correlate (es: string.h è l interfaccia di una libreria per la gestione di stringhe). Oggetto astratto: una collezione di moduli che operano su una struttura dati nascosta (es: la pila vista prima) Tipo di dato astratta: un tipo di dato la cui rappresentazione è nascosta. I programmi client possono usare il tipo astratto per dichiarare una variabile, e applicarvi le funzioni specificate nell interfaccia, ma non sanno come questo tipo sia implementato. Violetta Lonati Client - Interfaccia - Implementazione 6/11

Encapsulation e Information hiding Un modulo ben progettato nasconde delle informazioni ai suoi client. Questo garantisce: Sicurezza: se un client non sa come è rappresentata e memorizzata la pila, non potrà accedervi direttamente, ma soltanto attraverso le funzioni messe a disposizione dall interfaccia, funzioni che sono state scritte e testate a parte. Flessibilità: è possibile modificare l implementazione di un modulo senza che questo abbia effetti sul client (purché non venga modificata l interfaccia). Violetta Lonati Client - Interfaccia - Implementazione 7/11

Oggetti astratti e tipi di dati astratti Un oggetto astratto, come nell esempio della pila visto prima, ha uno svantaggio importante: non c è modo di avere più istanze dell oggetto. Per risolvere questo problema è necessario fare un passo ulteriore e creare un nuovo tipo astratto. Come cambia il client? Potranno essere definiti più oggetti dello stesso tipo astratto Stack s1, s2; Per il client, s1 e s2 sono astrazioni che rispondono a quanto specificato nell interfaccia. Come cambia l interfaccia? Sarà definito il nuovo tipo, es Stack. Nella lista dei parametri delle funzioni, ci sarà un nuovo argomento, che indica a quale istanza di Stack ci stiamo riferendo. Violetta Lonati Client - Interfaccia - Implementazione 8/11

Come fare tutto ciò in C? File di intestazione Con la direttiva #include del preprocessore, è possibile condividere informazioni (prototipi di funzioni, definizioni di macro, ecc). La direttiva dice al preprocessore di aprire il file specificato e di inserire il suo contenuto nel file corrente. I file inclusi in questo modo sono chiamati header file o file di intestazione. Per convenzione hanno estensione.h #include <filename> per i file della libreria standard; #include "filename" per gli altri file, compreso quelli scritti da te. Protezione dei file di intestazione Se un file sorgente include un header file più di una volta, possono verificarsi errori in fase di compilazione. Violetta Lonati Client - Interfaccia - Implementazione 9/11

Inclusione multipla di file di intestazione Violetta Lonati Client - Interfaccia - Implementazione 10/11

Protezione dei file di intestazione Per proteggere un file si può usare la direttiva del preprocessore #ifndef. Esempio: protezione del file boolean.h # ifndef BOOLEAN_ H # define BOOLEAN_ H / contenuto vero e proprio del file boolean. h / # define TRUE 1 # define FALSE 0 typedef int Bool ; / fine contenuto / # endif Violetta Lonati Client - Interfaccia - Implementazione 11/11