Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Documenti analoghi
Oggetti Lezione 3. aspetti generali e definizione di classi I

Programmazione con Java

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione I - corso B a.a prof. Viviana Bono

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

14 - Metodi e Costruttori

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe

Programmazione a Oggetti Lezione 11. Eccezioni e Packages

Gli oggetti. Ogni oggetto ha un interfaccia e ogni oggetto ha un tipo. Incapsulamento. Oggetti. Contatore. Invio di Messaggi

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010.

Funzioni, Stack e Visibilità delle Variabili in C

Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Oggetti. Definizioni di Classi II

Il linguaggio C. Puntatori e dintorni

Gestione della memoria in Java. Emilio Di Giacomo e Walter Didimo

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Programmazione a oggetti

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Programmazione Orientata agli Oggetti in Linguaggio Java

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

LABORATORIO DI INFORMATICA. Prof.ssa Patrizia Tarantino

Progettazione Object-Oriented

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria

Le basi del linguaggio Java

Bank account. private double balance; 11/2/2011

Programmazione ad oggetti

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

Concetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object

Java. Java: compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

I numeri razionali. Specifica: la sintassi. Specifica: la semantica

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Il linguaggio Java è un linguaggio di programmazione ad alto livello

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

Overloading - Overriding

Ereditarietà: concetti di base

Concetto di Funzione e Procedura METODI in Java

Paradigmi della PO. Incapsulamento. Ereditarietà. Polimorfismo. Software per TLC - AA 2008/2009 1

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard

Ereditarietà (ultima)

Ereditarietà (ultima)

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free

Java: un linguaggio per applicazioni di rete

Programmazione ad oggetti

Java: Definire Classi e Creare Oggetti

Capitolo 7 Un primo sguardo agli oggetti Schema e valori Elementi di classe e d istanza

Inizializzare oggetti

Lezione 9 programmazione in Java Classi come contenitori

Programmazione Orientata agli Oggetti in Linguaggio Java

Marco Faella Introduzione al corso

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

Gerarchia di classi Java 1

Variabili riferimento

Uguaglianza e copia di oggetti

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Object-Oriented Technology. Giuliano Armano 1

Gestione dinamica della memoria

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di programmazione

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Corso sul linguaggio Java

Programmazione Java Variabili membro, Metodi La parola chiave final

Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1

Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011.

Corso di Fondamenti di Informatica

Corso di Informatica

Programmazione (imperativa)

Programmazione II. Lezione 9. Daniele Sgandurra 16/11/2010.

Programmazione orientata agli oggetti. Ivan Lanese

Definizione di classi. Walter Didimo

Linguaggi di Programmazione: Paradigmi di Programmazione

La Gestione della Memoria. Carla Binucci e Walter Didimo

Programmazione Java Avanzata Programmazione Object- Oriented in Java

public class Counter2 extends Counter { public void dec() { val--; }

Programmazione Orientata agli Oggetti in Linguaggio Java

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo

RETI DI CALCOLATORI Linguaggio Java: Ereditarietà

Ingegneria del software

Concetti base. Java - package 2

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.

Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti

Lezione 11 programmazione in Java. Anteprima. Gestione della memoria

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

Transcript:

Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali

Sommario

Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile errori e crash di sistema (no pointer) Sicurezza: Evitare programmi maliziosi (tipi, no pointer) Semplicità: Accessibile a programmatori medi. Più semplice di C++. Efficienza: importante, ma secondaria

Obiettivi di JAVA Semplicità: - quasi tutto è un oggetto; - no puntatori, no coercions automatiche, no funzioni, no ereditarietà multipla, no goto. Portabilità: - codice mobile nella rete; - bytecode interpreter. Affidabilità e Sicurezza - Sistema dei tipi più forte rispetto a C e C++ - controlli run time di tipo e accessi a memoria - no puntatori espliciti (garbage collection)

JAVA: caratteristiche Sintassi: simile a C/C++. Oggetti: - formati da campi e metodi; - allocati sull heap, no run-time stack; - accessibili via puntatori (assegnamento di puntatori) Dynamic Lookup: - comportamento simile a Smalltalk - Tipaggio statico fi più efficiente di Smalltalk - Linkaggio dinamico, interfacce fi meno efficiente di C++

JAVA: definizione di classi Definire una classe implica: - definire una collezione di campi con relativo tipo (instance variables) - definire una collezione di metodi (instance methods) I campi descrivono lo stato di ciascun oggetto della classe I metodi possono modificare lo stato e/o ritornare un valore

Esempio: definizione di classe class Punto { private int xcoord; Modificatori di visibilità Definizione di campi } protected void setx (int val) {xcoord=val;} Definizione di metodi public int getx(){return xcoord;} public void move(int dx) {xcoord=xcoord+dx;} costruttore Punto(int val) {xcoord=val;}

private Una classe genera uno scope (ossia una porzione di programma che può accedere ad un set di nomi) Un campo (o un metodo) dichiarato privato è accessibile solo all interno della classe. L unità di programma che stabilisce lo scope è la classe, quindi può accedere ai campi/metodi privati di qualsiasi oggetto di quella classe (non solo di this).

public Campi e metodi pubblici sono accessibili da qualunque contesto che abbia un riferimento ad un oggetto di una classe. Campi e metodi pubblici stabiliscono l interfaccia degli oggetti, ossia i servizi che forniscono. Buona abitudine: campi SEMPRE privati, un sottoinsieme piccoli di metodi pubblici (metodi ausiliari andrebbero dichiarati private o protected)

Protected & Package Le classi vengono organizzate in packages (vedremo meglio) Campi e metodi protected sono accessibili nella classe e nelle sue sottoclassi (segreti di famiglia). E dalle classi dello stesso package Visibilità package(default): una campo/metodo è accessibile da tutte le classi dello stesso package, ma non da sottoclassi fuori dal package.

JAVA: istanziazione di Oggetti Punto mypoint = new Punto(3); Dichiara una variabile punto e richiede esplicitamente la creazione una nuova istanza con coordinata 3. Alla creazione viene eseguito il codice del metodo costruttore.

Java: tipi Una definizione di classe introduce un nuovo tipo (tipo definito dall utente). Una volta definita una classe, il suo nome può essere utilizzato come un normale tipo per definire variabili: Punto mypoint; Un tipo è identificato unicamente dal nome: classi strutturalmente uguali ma con nomi diversi generano tipi diversi!

Equivalenza di tipi Nome: Due tipi sono equivalenti se hanno lo stesso nome - più astrazione - usando nomi diversi per la stessa struttura dati si indicano dati logicamente distinti - controllo contro usi impropri Struttura: Due tipi sono equivalenti se hanno la stessa struttura - più flessibilità

Esempio: classe Point class Point { private int xcoord; protected void setx (int val) {xcoord=val;} public int getx(){return xcoord;} public void move(int dx) {xcoord=xcoord+dx;} } Point(int val) {xcoord=val;} Identica alla definizione di Punto, ma: Punto miopunto; Point mypoint; mypoint = miopunto; Genera un errore di tipo!

JAVA: variabili e Oggetti Una variabile con un tipo classe contiene un riferimento ad un oggetto istanziato da quella classe. Punto mypoint = new Punto(3) : Punto Esattamente come in Smalltalk

Assegnamento Assegnare una variabile significa assegnare un riferimento a un oggetto. mypoint mypoint = anotherpoint; : Punto : Punto anotherpoint Esattamente come in Smalltalk

Invocazione di metodi Avendo un riferimento a un oggetto, è possibile invocare un metodo (o accedere a un campo) via dot notation: Purché: - il riferimento non sia nullo - il metodo invocato sia visibile nel contesto in cui viene effettuata la chiamata. Point mypoint = new Point(3); mypoint.move(2); mypoint.xcoord += 2; /*illegale */

Passaggio di Parametri Sempre per VALORE (come in C). Non ci sono modi espliciti di (de)referenziare le variabili (operatori * e &) TUTTAVIA, passando il riferimento ad un oggetto, il valore che state passando è un puntatore (modifiche a quell oggetto saranno visibili dal chiamante) Sono oggetti (vedremo) anche gli array e altri tipi predefiniti (non i numeri).

Uguaglianza,identità e pointer null: è il valore di default dato ad una variabile di tipo classe Eventuali invocazioni di metodi su un oggetto null, genera una eccezione (nullpointerexception) ==: confronta due riferimenti (identità dell oggetto) Per avere l uguaglianza occorre (ri)definire un metodo equals().