Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.

Slides:



Advertisements
Presentazioni simili
Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public.
Advertisements

Ambiente Java.
1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
1 Progettazione gerarchica delle s- espressioni, utilizzando lereditarietà
Interfacce Java.
Package Utilizzo classi.
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Capitolo 7 Programmazione con metodi e classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004.
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Programmazione Ingegneria TLC
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
Layouts and Graphics. component - container - layout Un Container contiene [0 o +] Components Il Layout specifica come i Components sono disposti nel.
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
Modificatori: static Variabili e metodi associati ad una Classe anziche ad un Oggetto sono definiti static. Le variabili statiche servono come singola.
Richiami di Java Multithreading. Threads (subclassing) public class A { public void a_method { C t = new C(); //C t = new C(String name); t.start(); …
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: i commenti Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
1 Ultima Lezione del Corso di Fondamenti di Informatica 1 a.a – 06 Ma 29-Nov-2005.
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
JAVA C import java.util.*; #include <stdio.h>
Derivazione tra classi
Overriding.
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
Oggetti e dati primitivi
Selezione (=scelta) con “if-else”
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
1 Meccanismi per la definizione di tipi di dato §la programmazione di applicazioni consiste in gran parte nella definizione di nuovi tipi di dato §un qualunque.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Packages. Package: insieme di classi e interfacce in relazione Per formare un package basta inserire la direttiva come prima istruzione nel file sorgente.
Programmazione distribuita in Java
Lezione n° 05 Istituto Statale di Istruzione Superiore F. Enriques Corso JAVA.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 4 ARGOMENTI: STRINGHE DI CARATTERI.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 6 ARGOMENTI: LAVORARE CON CLASSI METODI DELLISTANZA, COSTRUTTORI.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Diagramma di flusso del problema del Supermercato.
void binario(int n); …………………
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
Ese 2 (del 31 Marzo 2004). Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni.
Multiset. Progettare (specifica con identificazione delle eventuali astrazioni necessarie, incluse eccezioni, e implementazione) del tipo di dato Multiset,
Soluzioni 1.Struttura base soluzione 2.Lettura dei tasti 3.Identificazione dei tasti 4.Accensione dei LED 5.Rotazione dei LED 6.Rotazione dei tasti fino.
Test con JUnit. zJUnit è un ambiente di test per programmi Java ySviluppato da Kent Beck É possibile usare JUnit allinterno di Eclipse per eseguire i.
1 Simulated multiple inheritance Sandro Pedrazzini Approfondimento Simulated multiple inheritance in Java.
Conversione da base 10 a base X (Utilizzo della pila)
Le eccezioni F. Bombi 01/11/ Errori e situazioni impreviste situazioni eccezionali In un programma situazioni eccezionali possono.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Collection & Generics in Java
Lezione n° 07 - Esercitazione
Esercizi.
Stack Già visto l’altra volta senza gestione eccezioni, le prime tre slide servono solo come ripasso, dalla quarta argomento nuovo class Stack { int data[];
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Nuove funzionalitA’ e caratteristiche del linguaggio
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Gestione dei thread in Java
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Java: concetti e costrutti base
Pila.h struct Pila { int size; int defaultGrowthSize; int marker;
Transcript della presentazione:

Sezione: Costruttori Costruttori

Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore A(); Se invece definisco almeno un costruttore non void, ad es. A(int s), il sistema non crea il costruttore A();

Definizione dei costruttori Se B è figlia di A, il costruttore di B come prima cosa invoca A(), a meno che la prima istruzione non sia una super. B(int k) { super(k)... } A(int k) {... } A() {... } B(int k) {... }

Invocazione dei costruttori public class A { public A() { System.out.println("Creo A"); } public class B extends A { public B() { System.out.println("Creo B"); } public B(int k) { System.out.println("Creo B_int); } Output: Creo A Creo B_int public static void main(String [] a) { B b=new B(1); }

Invocazione dei costruttori public class A { public A(int k) { System.out.println("Creo A"); } public class B extends A { public B() { System.out.println("Creo B"); } public B(int k) { System.out.println("Creo B_int); } Output: ERRORE ! Perchè ? public static void main(String [] a) { B b=new B(1); }

Fondamenti di Java Polimorfismo

Liskov substitution principle Se S è un sottotipo of T, allora oggetti di tipo T in un programma possono essere sostitituiti da oggetti di tipo S senza alterare alcuna proprietà desiderabile del programma. Point p=new Point(); p.move(3,4); Point p=new NamedPoint(); p.move(3,4); Ovunque ce un Point posso mettere un NamedPoint Point NamedPoint

Polimorphysm Class X() { public static void main(String a[]){ Pila s; int type; do { try { type =Integer.parseInt( JOptionPane.showInputDialog( "Pila (1) o Coda (2)?")); } catch (Exception e) {type=0;} } while (type 2); switch (type) { case 1: s=new Coda(); break; case 2: s=new Pila(); break; } s.insert(3);s.insert(4); System.out.println(s.estrai()); } Una funzione può comportarsi in maniera diversa a seconda - del tipo che le viene passato - del tipo di dato su cui è chiamata

Concetti fondamentali Pila s=new Coda(); s.insert(2); s.insert(2); s.estrai() Quando si chiamano i metodi su s, il sistema fa riferimento alla dichiarazione di tipo (Pila) o allistanziazione (Coda)? STATIC BINDING -> Pila DYNAMIC BINDING -> Coda

Sezione: Upcast - downcast Upcast & downcast

public class Test { public static void main(String a[]) { new Test(); } cast Test() { A a; B b = new B(); a=b; a.f1(); a.f2(); } OK: upcast implicito class A { void f1() {System.out.println("f1");} } class B extends A { void f2() {System.out.println("f2");} } class C extends B { void f3() {System.out.println("f3");} } NO: "method f2 not found in class A" (compiler)

public class Test { public static void main(String a[]) { new Test(); } cast Test() { A a; B b = new B(); a=b; a.f1(); ((B)a).f2(); } class A { void f1() {System.out.println("f1");} } class B extends A { void f2() {System.out.println("f2");} } class C extends B { void f3() {System.out.println("f3");} } OK: downcast corretto OK: upcast implicito

public class Test { public static void main(String a[]) { new Test(); } cast Test() { A a; B b = new B(); a=b; a.f1(); ((C)a).f3(); } class A { void f1() {System.out.println("f1");} } class B extends A { void f2() {System.out.println("f2");} } class C extends B { void f3() {System.out.println("f3");} } NO: downcast illecito (runtime) java.lang.ClassCastException OK: upcast implicito

Type conversion - cast Si può applicare cast SOLO allinterno di una gerarchia di ereditarietà È consigliabile usare l'operatore instanceof per verificare prima effettuare un downcast if (staff[1] instanceof Manager) { Manager n = (Manager)staff[1];... }

Coercion Una funzione può essere polimorfa senza essere stata disegnata tale intenzionalmente. Sia f una funzione che prende un argomento di tipo T, e S sia un tipo che può essere automaticamente convertito in T. Allora f può essere detta polimorfa rispetto a S e T. float somma(float x, float y) accetta anche somma (3, 3.14) somma(2,3) (coercion di int a float)

Try – catch - finally try { System.out.println("Dammi un intero"); i=Integer.parseInt(s.readLine()); System.out.println("Hai scritto "+i); } catch (Exception e) {e.printStackTrace();} finally { doSomethingInEveryCase() }

Modificatori: abstract Classi dichiarate abstract non possono essere istanziate, e devono essere subclassate. Metodi dichiarati abstract devono essere sovrascritti Una class non abstract non può contenere abstract metods

public abstract class Stack{ // qui i soliti campi: marker, contenuto… public void inserisci(int) {…} public void cresci() {…} public abstract int estrai(); } public class Pila extends Stack{ public int estrai{…} } public class Coda extends Stack{ public int estrai{…} } Usare Pile e Code

public static void main(String args[]) { try { Stack s=null; int type=0; do { try { type =Integer.parseInt( JOptionPane.showInputDialog( "Pila (1) o Coda (2)?")); } catch (Exception e) {type=0;} } while (type 2); switch (type) { case 1: s=new Pila(); break; case 2: s=new Coda(); break; } … } Usare Pile e Code

Interfacce

Un interface è una collezione di firme di metodi (senza implementazione). Una interfaccia può dichiarare costanti.

Interfacce C2 C1I1I2

Esempio di interface package strutture; public interface Stack{ public int estrai(); public void insert(int z); } package strutture; public class Pila implements Stack{ … } package strutture; public class Coda extends Pila{ … }

Interfacce Le interfacce possono essere usate come tipi I1 x = new C2(); // I1 x = new I1(); NO!! C2 C1I1I2