Introduzione all OOP!

Documenti analoghi
Introduzione agli Abstract Data Type (ADT)

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

Linguaggio Java e il paradigma della programmazione ad oggetti

Il calcolatore. Architettura di un calcolatore (Hardware)

E una notazione per descrivere gli algoritmi.

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Java: Compilatore e Interprete

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

Abstract Data Type (ADT)

Ingegneria del Software

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

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

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Introduzione al Linguaggio C ed all IDE DEV-C++

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI

FONDAMENTI DI INFORMATICA

Object Oriented Software Design

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Introduzione a I LINGUAGGI DI PROGRAMMAZIONE

Nomi e Ambiente. Nicola Fanizzi. Linguaggi di Programmazione [010194] 20 apr, Dipartimento di Informatica Università degli Studi di Bari

Programmazione Orientata agli Oggetti in Linguaggio Java

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

Introduciamo l'uso della programmazione ad oggetti in PHP...perchè si può fare!

Corso di Programmazione ad Oggetti

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Esercizi della lezione 5 di Java

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

FONDAMENTI DI INFORMATICA II

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Java Native Interface Appunti

Linguaggio C: introduzione

Programmazione Orientata agli Oggetti

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

UML Diagrammi delle classi. UML Diagramma classi 1

Prefazione. Capitolo 1 Sistemi di elaborazione 1

Algoritmi e Linguaggi

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Fondamenti di Informatica

Programmazione a Oggetti Lezione 10. Ereditarieta

Capitolo 5: Algol 60, Pascal e C

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare

Corso di Informatica

Fondamenti di Programmazione

Elementi di programmazione Algoritmi Flow Chart, Fasi della programmazione Linguaggi Elementi di programmazione ad oggetti

Esercizio: gestione di un conto corrente

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

Livelli di astrazione

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A.

Corso sul linguaggio Java

Uso di metodi statici. Walter Didimo

Object Oriented Programming

Introduzione alla Programmazione ad. Oggetti (OOP)

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Introduzione alla Programmazione ad Oggetti in C++

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

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

VISUAL BASIC FOR APPLICATION

Linguaggi di Programmazione

INFORMATICA E COMPUTER : INTRODUZIONE

Breve Storia del Computer

linguaggio di programmazione e programma

PROGRAMMAZIONE E ALGORITMI

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

PROGRAMMAZIONE II Corso B Introduzione al corso

Introduzione alla Modellazione Solida

Funzioni in C. Violetta Lonati

Programmazione ad Oggetti

Architettura dei calcolatori e Software di sistema

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Principi di Progettazione del Software a.a " Introduzione al corso! Prof. Luca Mainetti! Università del Salento!

Introduzione alla programmazione

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

LINGUAGGI DI PROGRAMMAZIONE

Fondamenti VBA. Che cos è VBA

FONDAMENTI DI INFORMATICA

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

(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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

Corso di Esercitazioni di Programmazione

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1

Mini-Corso di Informatica

Transcript:

Introduzione all OOP! Introdurre l evoluzione dei linguaggi di programmazione e la loro classificazione Introdurre l OOP (astrazione, incapsulamento, ereditarietà) Dal C a Java un primo esempio 1

LINGUAGGI DI ALTO LIVELLO! Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 2

Un po di storia sui linguaggi 1957 John Backus e colleghi della IBM rilasciano la prima versione del compilatore per il linguaggio di programmazione FORTRAN (Formula Translator) alla Westinghouse. 1959 Si forma il Comitato per i linguaggi di sistemi di dati e nasce il COBOL (Common Business Oriented Language). 1959 John McCarthy sviluppa il linguaggio LISP (List Processing) per le applicazioni di Intelligenza Artificiale. 1964 Nasce il linguaggio BASIC (Beginner's Allpurpose Symbolic Instruction Code). E' sviluppato a Dartmouth da John Kemeny e Thomas Kurtz. Ne deriveranno molte varianti. 3

Un po di storia sui linguaggi 1967 Ole-Johan Dahl e Kristen Nygaard del Centro Computer Norvegese, completano una versione general-purpose del linguaggio SIMULA, il primo linguaggio object-oriented. 1972 Dennis Ritchie sviluppa il linguaggio "C" ai laboratori Bell. Così chiamato semplicemente perchè il suo predecessore era stato battezzato "B". 1995 Nasce il linguaggio di programmazione Java, piattaforma indipendente per sviluppo di applicazioni. 4

EVOLUZIONE DEI LINGUAGGI ADA C++ VISICALC PROLOG SMALLTALK FORTRAN77 LISP PASCAL SIMULA67 LISP ALGOL APL COBOL LISP ALGOL LISP FORTRAN C PlanKalcul 1945 Linguaggi-macchina 1950 1960 1970 1980 1990 2000 5

LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C Modula-2 Algol Ada Lisp Smalltalk Simula67 Scheme Java C++ Prolog ML 6

LINGUAGGI DI ALTO LIVELLO Barriera di astrazione IMPERATIVI C Fortran Modula-2 Cobol Basic Algol Ada Pascal Python Smalltalk Simula67 Scheme Lisp FUNZIONALI Java C++ Prolog ML A OGGETTI DICHIARATIVI 7

EVOLUZIONE DEI LINGUAGGI FORTRAN BASIC ALGOL60 PASCAL SIMULA67 ADA C++ SMALLTALK 8

Quali astrazioni? Sui dati: da indirizzi fisici a nomi simbolici per le variabili (Assembler) Sul controllo (programmazione strutturata, Pascal, C): sequenza (;), blocco, if else, while do, etc. { int p=1; for (i=1 ; i <= n ; ++i) p = p*x; }... 9

Astrazioni funzionali Sulle operazioni (funzioni): long potenza(int x, int n) /* par. formali */ { int i; long p = 1; /* var. locali */ } for (i=1 ; i <= n ; ++i) p *= x; return p; long Y; Y=potenza(X,10); 10

Encapsulation Coniugare l astrazione su dati e operazioni (astrazioni di dato, tipi di dato astratto, classi e oggetti) Incapsulamento (dati e operazioni) Protezione Coesione Riuso (Ereditarietà) 11

Astrazioni di dato! Il componente ha dati locali (nascosti) e rende visibili all esterno i prototipi delle operazioni invocabili (procedure e funzioni) su questi dati locali, ma non gli identificatori dei dati. Attraverso una di queste operazioni si può assegnare un valore iniziale ai dati locali nascosti.! Interfaccia Operazioni Dati Corpo 12 12

Esempio: il contatore! 1. file header contatore.h" void reset(void); void inc(void); void stampa(void); Definisce cosa si può fare con il contatore! 2. file di implementazione contatore.c" Incapsula il contatore c (IL dato) e specifica il codice delle funzioni con cui si agisce sul contatore! #include "contatore.h" static int c; void reset(void){ c=0; } void inc(void){ c++; } void stampa(void) { printf( %d, c); } 13 13

Tipo di dato astratto! (Abstract Data Type ADT)! Il componente esporta un identificatore di tipo T ed i prototipi delle operazioni eseguibili su dati dichiarati di questo tipo. I clienti del componente dichiarano e controllano quindi il tempo di vita delle variabili di tipo T.! Interfaccia Id_tipo Operazioni Def. Tipo di Dato Corpo 14 14

Esempio: ADT counter! 1. file header counter.h" typedef int counter; void reset(counter*); void inc(counter*); Definisce in astratto che cos è un counter e che cosa si può fare con esso! 2. file di implementazione counter.c" #include "counter.h" void reset(counter *c){ *c=0; } void inc(counter* c){ (*c)++; } Specifica come funziona (quale è l implementazione) di counter! 15 15

ADT counter: un cliente! Per usare un counter :! #include "counter.h" int main(){ counter c1, c2; reset(&c1); reset(&c2); inc(&c1); inc(&c2); inc(&c2); c1++; } 16 16

Programmazione Orientata agli Oggetti (OOP) Astrazione: separazione fra interfaccia e implementazione Incapsulamento: insieme di meccanismi che consentono di proteggere lo stato di un oggetto e in generale di nascondere gli aspetti che non si vogliono rendere pubblici Linguaggi object-based 17

OOP e Java l ADT Counter public class Counter { private int x; } public void reset() { x = 0; } public void inc() { x++; } public int getvalue() { return x;} Counter Y; Y = new Counter(); Y.reset(); Y.inc(); 18

OOP e Java public class Counter { private int x; } public void reset() { x = 0; } public void inc() { x++; } public int getvalue() { return x;} Counter Y; Y = new Counter(); Y.reset(); Y.inc(); 19

Programmazione Orientata agli Oggetti (OOP) Astrazione: separazione fra interfaccia e implementazione Incapsulamento: insieme di meccanismi che consentono di proteggere lo stato di un oggetto e in generale di nascondere gli aspetti che non si vogliono rendere pubblici Linguaggi object-based Ereditarietà: consente di creare un componente (classe) che riusa metodi e attributi di un componente (classe) già esistente Linguaggi object-oriented public class BiCounter extends Counter { public void dec() { x--; } } 20

Ereditarietà public class Counter { private int x; public void reset() { x = 0; } public void inc() { x++; } public int getvalue() { return x;} } public class BiCounter extends Counter { public void dec() { x--; } } BiCounter Y; Y = new BiCounter(); Y.reset(); Y.inc(); Y.dec(); 21