Programmazione ad oggetti

Documenti analoghi
Oggetti. Oggetti e classi. Utilizzo di classi. Classe

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

14 - Metodi e Costruttori

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione ad oggetti

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

Programmazione Java: Variabili membro, Metodi La parola chiave final

Capitolo 3. Realizzare classi

JAVA IL LINGUAGGIO. Ogni valore nel linguaggio ha un tipo Ogni variabile deve essere dichiarata ed associata ad un tipo:

I L IN I GU G AGG G I G O

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

Lezione 5 Namespace e JavaDoc

Programmazione orientata agli oggetti. Ivan Lanese

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

PROGRAMMAZIONE 2 4. Java: un modello operazionale

Programmazione orientata agli oggetti. Ivan Lanese e Cosimo Laneve

Oggetti e dati primitivi 1

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

Questi lucidi provengono dal capitolo 2 di:

Fondamenti di Informatica

Introduzione a Classi e Oggetti

Modello procedurale versus modello O-O

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

Introduzione Programmazione Java

Definizione di classi. Walter Didimo

PROGRAMMAZIONE 2 4. Un modello operazionale per Java

I Metodi. Fondamenti di Informatica A-K

Variabili e Parametri. Scope, Lifetime Inizializzazione

Variabili e Parametri

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

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

Programmazione ad oggetti

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

public double getraggio() restituisce la lunghezza del raggio del cerchio che esegue il metodo.

Capitolo 2. Utilizzare oggetti

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

FONDAMENTI DI INFORMATICA T-A. Java parte 3 Ing. Giorgio Villani

Strutture come parametri di funzioni

classi, oggetti ed altro gennaio 2003 IGEA 02-03, (c) FdA 1

Java: Definire Classi e Creare Oggetti

Lezione 13 Classi interne

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

Metodi e variabili istanza

Introduzione a Java. Giovanni Pardini. Dipartimento di Informatica Università di Pisa. 2 Java. Sommario. Esercizio: BankAccount

Introduzione all Object Orientation

Definizione di classi

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

Fondamenti di informatica T-1 (A K) Esercitazione 7: metodi, classi, oggetti

Definiamo la prima classe vera. Concetti fondamentali 2. Il corpo del metodo. Definizione di un metodo

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Classi ed Oggetti in JAVA

Università Ca Foscari DAIS. Programmazione ad Oggetti. Esame del modulo 1

Proprietà delle Classi e degli Oggetti in Java

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

Implementare le classi

Programmazione orientata agli oggetti Ereditarietà

Informatica Ereditarietà Java. Ereditarietà

Oggetti. Definizioni di Classi II

Dichiarazione di una classe. Dichiarazione ereditarietà

Programmazione a Oggetti Lezione 8. Definizioni di Classi II

Programmazione Orientata agli Oggetti. Esercitazione: Interfacce, polimorfismo

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

Realizzazione di Classi. Emilio Di Giacomo e Walter Didimo

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

Proprietà delle Classi e degli Oggetti in Java

Classi ed Oggetti. Fondamenti di Informatica A-K

Ereditarietà e polimorfismo

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

sayhello public private protected return public class Greeter { public String sayhello() { String message = Hello, World! ; return message; } }

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

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

Programmazione orientata agli oggetti Ereditarietà

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

Esercizio 1. Cosa stamperebbe il seguente metodo main? Cosa succederebbe se ClassC ereditasse da ClassB e non da ClassA?

Laboratorio di programmazione

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Ereditarietà

Università Ca Foscari DAIS. Programmazione ad Oggetti. Esame del modulo 1

Installazioni preliminari

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Definizione di classi

PROGRAMMAZIONE 2 4. Un modello operazionale per Java

Lezione 9 programmazione in Java Classi come contenitori

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

La programmazione: tradizionale vs Orientata agli Oggetti (OOP)

Implementazione delle classi

Lezione 10 programmazione in Java. Anteprima. Programmazione OO. La programmazione orientata agli Oggetti. Javadoc. Esercizi

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

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

Modulo 2: Strutture fondamentali della programmazione Java

LA AST PER JAVA. Stru+ura

ESERCIZIO 1 (FILE DI TESTO)

Usare gli Oggetti. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Esempio: Costruttori ed ereditarietà

Transcript:

DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò

Classi Una classe è un tipo strutturato. Gli oggetti sono istanze di classi. Una classe è composta da: ModalitàDiAccesso class NomeClasse //campi Variabili di istanza (campi) Costruttori Metodi Documentazione e commenti //costruttori //metodi Una classe ha associata una modalità di accesso (public o package se non si specifica la modalità) Classi con accesso public sono visibili ovunque, mentre classi con accesso package sono visibili solo ad altre classi dello stesso package.

Variabili di istanza Una classe contiene al proprio interno dei campi. Una variabile di istanza, o campo, ha associati: Tipo Nome Modalità di accesso (public, private, protected, package se non si specifica la modalità) I campi descrivono i dati che verranno manipolati dai metodi della classe. ModalitàDiAccesso class NomeClasse //campi ModalitàDiAccesso nomeditipo nomedivariabile; //costruttori //metodi

Variabili di istanza I campi con accesso private sono utilizzabili solo all'interno della classe. I campi con accesso public sono utilizzabili ovunque (anche esternamente alla classe) I campi con accesso protected verranno discussi più avanti I campi con accesso package sono utilizzabili solo dalle classi dello stesso package. È buona norma avere campi privati per garantire un buon incapsulamento dei dati. public class ClasseA public class ClasseB public static void main(string[] args) ClasseB obj=new ClasseB(); System.out.println(obj.j); //OK System.out.println(obj.i); //Errore! private int i; public int j;

Costruttori Una classe contiene al proprio interno uno o più costruttori. Il costruttore consente di creare un'istanza della classe (oggetto) e di inizializzarne i campi. Il costruttore ha lo stesso nome della classe e può avere parametri. Per ogni classe priva di costruttori esiste un costruttore di default senza parametri che inizializza i campi a valori di default (null per i riferimenti ad oggetto) ModalitàDiAccesso class NomeClasse //campi //costruttori ModalitàDiAccesso NomeClasse(tipoParametro nomeparametro,...) // implementazione costruttore //metodi

Costruttori public class Rectangle //campi di Rectangle private int x; private int y; private int width, height; //costruttori di Rectangle public Rectangle(int ax, int ay, int awidth, int aheight) x=ax; y=ay; width=awidth; height=aheight; public Rectangle(int awidth, int aheight) x=0; y=0; width=awidth; height=aheight; //metodi di Rectangle

Costruttori public class Rectangle //campi di Rectangle private int x; private int y; private int width, height; //costruttori di Rectangle Nota: il compilatore decide quale costruttore invocare sulla base del numero e dei tipi dei parametri considerandone anche l'ordine. Es: non posso coesistere Rectangle(int x, int y) Rectangle(int width,int height) public Rectangle(int x, int y, int width, int height) this.x = x; this.y = y; All'interno del costruttore esiste una this.width = width; variabile this che fa riferimento all'oggetto che si sta costruendo. this.height = height; this.width accede al campo width e non al parametro width public Rectangle(int width, int height) this(0,0,width,height); this può essere anche usata per chiamare un altro costruttore. In questo caso però deve //metodi di Rectangle comparire come prima istruzione

Metodi Una classe contiene metodi per manipolare i campi. Un metodo può avere modalità di accesso public, private, protected o package. Un metodo ammette zero o più parametri Un metodo ammette un valore di ritorno o nessuno se void è il tipo di ritorno. Nei metodi esiste il parametro implicito this che consente di avere a disposizione il riferimento dell'oggetto su cui il metodo viene invocato. ModalitàDiAccesso class NomeClasse //campi //costruttori //metodi ModAccesso tipodiritorno nomemetodo(tipoparametro nomeparametro,...) // implementazione metodo

Metodi public class Rectangle //campi di Rectangle private int x,y; private int width, height; //costruttori di Rectangle //metodi di Rectangle public int getx() return x; public void setx(int x) this.x = x; public void translate(int dx, int dy) x+=dx; //x=x+dx; y+=dy; //y=y+dy; Nota: all'interno di un metodo possiamo invocare altri metodi della stessa classe. Questi verranno automaticamente applicati all'oggetto puntato da this. Per es in translate avremmo potuto anche scrivere: x=getx()+dx;

Documentazione (Javadoc) È buona consuetudine fornire la documentazione di Classi Metodi con relativi parametri e valore di ritorno Costruttori con relativi parametri La documentazione di campi e metodi privati non è essenziale in quanto non accessibili dall'esterno. Con Javadoc possiamo utilizzare frammenti di codice HTML. Esistono tag speciali di Javadoc

Documentazione di classi * Un <em>rettangolo</em> identifica in uno piano un'area di * lunghezza width e altezza height il cui angolo in alto a * sinistra si trova alle coordinate (x,y). * * @author Samuel Rota Bulò public class Rectangle //campi //costruttori //metodi

Documentazione costruttori * Costruisce un rettangolo di lunghezza width, altezza * height con angolo in alto a sinistra posizionato in (x,y). * * @param x coordinata x del punto in alto a sinistra * @param y coordinata y del punto in alto a sinistra * @param width lunghezza * @param height altezza public Rectangle(int x, int y, int width, int height)...

Documentazione metodi * Ritorna la coordinata x del punto in alto a sinistra * * @return coordinata x del punto in alto a sinistra public int getx()... * Imposta la coordinata x del punto in alto a sinistra * * @param x nuova coordinata x del punto in alto a sinistra public void setx(int x)...

Documentazione dei campi * Coordinata x del punto in alto a sinistra public int x; * Coordinata y del punto in alto a sinistra public int y; * Larghezza del rettangolo public int width; * Altezza del rettangolo public int height; Nota: i campi sono tipicamente ad accesso privato e in quanto tali non vanno necessariamente commentati al fine di produrre la documentazione. Vanno invece commentati i campi pubblici/protected. In generale, commenti non finalizzati alla documentazione sono utili per il programmatore che dovrà modificare la classe in futuro. Nota: in Rectangle i campi sono pubblici per ragioni di performance, ma in assenza di buone ragioni vanno tenuti privati.