• Non ci sono risultati.

OOP in Java

N/A
N/A
Protected

Academic year: 2021

Condividi "OOP in Java"

Copied!
17
0
0

Testo completo

(1)

OOP in Java

Paolo Bison

Fondamenti di Informatica 1 A.A. 2004/05

Universit`a di Padova

(2)

Caratteristiche



linguaggio OO ibrido



dinamico



gestione della memoria



interpretato (Virtual Machine)



tipizzato



ereditarietà singola + interfacce

OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.2/17

(3)

Paradigma di programmazione



procedurale (livello base) tipi primitivi ed istruzioni



orientato agli oggetti

classi

(4)

Cos’è un programma Java ?



class E [ integer x ]



class E { int x;}



sintassi e semantica



J. Gosling, B. Joy, G. Steele, G. Bracha,

Java Language Specification Second Edition

OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.4/17

(5)

Classe



unità di programmazione in Java



struttura sintattica

[ Modifiers]

class

Identifier

[

extends

Class ]

[

implements

InterfaceList ]

{

FieldDeclaration MethodDeclaration

}

 FieldDeclaration

definizione delle variabili per rappresentare lo stato dell’istanza

 MethodDeclaration

definizione dei metodi appartenenti all’interfaccia

(6)

Classe come tipo



la classe individua un tipo



“reference type”

riferimento ad un oggetto di quella classe o sue sottoclassi



elementi



variabili: Complex numero



valore di ritorno: ContoCorrente nuovoConto()



riferimento nullo null

OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.6/17

(7)

FieldDeclaration



dichiarazioni delle variabili di stato dell’oggetto



struttura sintattica

[ Modifiers] type idList

;



esempi:

int i,j;

boolean flag;

Complex j;

Boolean b;

(8)

MethodDeclaration



dichiarazione dei metodi



sintassi

[ Modifiers] type identifier

(

[ FormalParList ]

)

blocco

 type

: primitivo, classe, void

 FormalParList

: lista di identificatori con il tipo

int compute(int x, int y){

return x+y;

}

OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.8/17

(9)

Overloading



si possono avere più metodi con lo stesso nome



“signature” di un metodo

nome + parametri (numero e tipo) int compute(long x, long y){

return (int)(x+y);

}

(10)

Creazione di istanze



espressione new

new

ClassName

(

[ ActualParList ]

)



ritorna un riferimento ad una nuova istanza della classe

ClassName



possibile attivazione di metodi speciali detti costruttori

OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.10/17

(11)

Costruttori



metodi (constructors) attivati in maniera implicita alla creazione di un oggetto



sintassi

ClassName

(

[ FormalParList ]

)



azioni da eseguirsi alla creazione

(12)

Numeri complessi



stato

parte reale, parte immaginaria



interfaccia

creazione, somma, prodotto tra complessi e con scalari



progetto Complex con Bluej

OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.12/17

(13)

Attivazione dei metodi



operatore .

ref

.

methodId

(

[ ActualParList ]

)

 ref

espressione di tipo “reference type”

 methodId

nome del metodo

 ActualParList

lista di espressioni (parametri attuali)



pseudo variabile

this

(14)

ContoCorrente



stato

importo del conto



interfaccia

saldo, prelievo, versamento



progetto Banca

OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.14/17

(15)

Accesso variabili d’istanza



lettura/modifica di var. d’istanza di altri oggetti



funzionalità

“horribilis”



sintassi

ref

.

varId

 ref

riferimento ad un oggetto

 varId

identificatore variabile d’istanza

(16)

Elementi di classe



variabili e metodi appartenenti alla classe



opzione static in

Modifiers

static int contatore;

static double sqrt(double x)



proprietà



variabili sono condivise da tutte le istanze



metodi statici non sono attivabili da metodi non-statici

OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.16/17

(17)

Accesso ad elementi di classe



solo nome

elemId

in ambito di validità



in altri contesti

classId

.

elemId



variabile

MyClass.ncreati



metodo

OtherClass.inc()

Riferimenti

Documenti correlati

• E’ il luogo degli zeri di una funzione data:?. (tutti i punti p

 metodi (constructors) attivati in maniera implicita alla creazione di un oggetto.

1) per overloading (sovraccarico dei metodi, metodi con lo stesso nome e con numero diverso di parametri e/o tipo diverso dei parametri – firma differente - e

Crea un oggetto di tipo File File denominato denominato nome nome a partire dalla directory dir a partire dalla directory dir (descritta tramite una stringa)..

 una classe una classe senza metodi astratti è detta senza metodi astratti è detta concreta concreta..

Questo approccio favorisce la portabilità degli elementi - che come abbiamo visto è un elemento delle specifiche alla base di Projectmoon System - la leggerezza, la manteni- bilità e

 http://nuovolabs.fauser.edu/~valeria/materiale-didattico/Info-quarta-2019/Lezioni-C++/1-ADT.pdf Confronto tra c e c++: cercare stack frame, parametri di default, overloading

Se prendiamo il 1912 come data convenzionale del sorgere di una psicologia junghiana consapevole della propria originalità e dell'apporto del tutto specifico che essa può