Sie sind auf Seite 1von 4

Oggetti, Classi e Metodi Oggetti, Programmazione ad Oggetti

Classi, Oggetti e Metodi variabili, dati, strutture di dati, tipi di dati astratti, classi, oggetti, stato di un ogggetto e incapsulamento routine, sub-routine, procedure, funzioni e metodi blocchi, moduli, istanze di classe, programmazione in-the-small e programmazione in-the-large
Marco Botta Dipartimento di Informatica - Universita` degli Studi d i Torino C.so Svizzera, 185 - I-10149 Torino (Italy) e-mail: botta@d i.unito .it - URL: http://www.di.unito.it/~botta Slide design and content: Matteo Baldoni e-mail: baldoni @di.unito.it - URL: http://www.di.unito.it/~baldoni

Ingegneria del Software: Programmazione ad Oggetti

Classi
Insieme di oggetti con struttura e comportamento simili Classe pubblica (public) Notazione: il nome di una classe e` un identificatore con prima lettera maiuscola
public class NomeDellaClasse { // contenuto della classe } class NomeAltraClasse { // contenuto della classe }
Ingegneria del Software: Programmazione ad Oggetti 3

Classi
Definiscono un tipo non primitivo Tipo di dato astratto
int nomeVariabileIntera; char nomeVariabileCarattere; NomeDellaClasse nomeVariabileDellaClasse;

Tipo non primitivo

Nome della variabile di tipo NomeDellaClasse

Ingegneria del Software: Programmazione ad Oggetti

Oggetti
E` unistanza di una classe new e` listruzione che permette di creare un oggetto come istanza di una classe Creazione dinamica degli oggetti a run-time
NomeDellaClasse nomeVariabileDellaClasse;
creazione di un oggetto della classe NomeDellaClasse e assegnamento alla variabile nomeVariabileDellaClasse dichiarazione di variabile

Metodi
Richiamo di funzioni e invio di messaggi Permettono di agire su di un oggetto richiedendogli lesecuzione di una data operazione Parametri (attuali e formali) Passaggio per valore (vs passaggio per referenza) public e private (controllo della visibilita` dei metodi) Ricorsione (diretta e indiretta)

nomeVariabileDellaClasse = new NomeDellaClasse(); NomeDellaClasse nomeVariabileDellaClasse = new NomeDellaClasse();


Ingegneria del Software: Programmazione ad Oggetti

Ingegneria del Software: Programmazione ad Oggetti

Metodi: definizione Metodi:


I metodi possono essere definiti solo allinterno di una classe Per convenzione i loro identificatori incominciano sempre con una lettera minuscola

Metodi: definizione Metodi:


Se non restituisce alcun valore allora si usa void al posto di TipoValoreRestituito Possono non esserci parametri ma le parentesi ( e ) sono sempre necessarie Loverloading degli identificatori di metodo e` risolto tramite il tipo dei suoi parametri (ma NON delleventuale valore restituito)
[] int count() {[]} long count() {[]} NO! char count(int what) {[]} []
7

class { TipoValoreRestituito nomeMetodo ( parametri ) { // corpo del metodo } }


Ingegneria del Software: Programmazione ad Oggetti

SI!
8

Ingegneria del Software: Programmazione ad Oggetti

Metodi: invio messaggi Metodi:


Realizzano la comunicazione tra oggetti richiedendo lesecuzione di un metodo
in genere modifica lo stato di oggettoUno

Es.: Contatore
public class Counter { public void init(int val){ c = val; } public void incr(){ c++; } public void decr(){ c--; } public int getVal(){ return c; } private int c; } nome della classe

[] oggettoUno.nomeMetodoDiOggettoUno(parametri); [] oggettoDue = oggettoUno.altroMetodoDiOggettoUno(parametri); []


deve essere del tipo restituito dal metodo altroMetodoDiOggettoUno

variabile intera privata, accessibile dallinterno della classe ma non visibile dallesterno

Ingegneria del Software: Programmazione ad Oggetti

Ingegneria del Software: Programmazione ad Oggetti

10

Esempio: Point Esempio:


constructor method class Point { int x, y; Point( int x, int y) { this.x = x; this.y = y; } double distance(int x , int y) { int dx = this.x - x; identifica loggetto corrente int dy = this.y - y; return Math.sqrt(dx *dx + d y*dy ); } double distance(Point p) { return distance(p.x, p.y); } }

Costruttori
Permettono di inizializzare automaticamente un oggetto al momento della creazione Hanno lo stesso nome della classe Possono avere parametri Possono esserci piu` costruttori per una stessa classe distinti dal tipo dei loro parametri Non specificano il tipo del valore restituito (implicitamente dichiarato come un oggetto del tipo della classe di cui e` costruttore)

Ingegneria del Software: Programmazione ad Oggetti

11

Ingegneria del Software: Programmazione ad Oggetti

12

Costruttori
public class Counter { public Counter() { // <-- devo renderlo esplicito se voglio // continuare ad usarlo } public Counter( int val){ Alternative inizializzazione c = val; //this.init (val); Costruttori //init(val); // il compilatore aggiuge in questo della classe Counter // caso "this" automaticamente } public void init(int val){ c = val; } this indica in questo caso public void incr(){ loggetto in costruzione c++; } public void decr(){ c--; } public int getVal(){ return c; } private int c; } Ingegneria del Software: Programmazione ad Oggetti 13

Costruttori
public class Circle { public Point center; public double r; // center of the circle // radius

public Circle(int x, int y, double r) { center = new Point(x,y); this.r = r; } public Circle(Point p, double r) { center = p; this.r = r; } public Circle(Circle c) { center = c.center; r = c.r; } public double circumference() { return 2*Math.PI*r; } public double area() { return Math.PI*r*r; } } Circle c = new Circle(new Point(2,2), 3.0); Circle a = new Circle(c); Ingegneria del Software: Programmazione ad Oggetti 14

Il metodo toString ()
E` il metodo che viene automaticamente richiamato per la conversione di un oggetto in una stringa da stampare Puo` essere ridefinito per adattarlo alle proprie esigenze

Il metodo toString ()
public class Counter { public Counter() { nomeContatore = " Contatore anonimo "; } public Counter(int val){ c = val; nomeContatore = " Contatore anonimo "; } public Counter(int val, String nome){ c = val; nomeContatore = nome; } [] overriding dellomonimo public void setName (String nome) { metodo nella classe Object nomeContatore = nome; } public String toString(){ return ("Valore contatore " + nomeContatore + ": " + c); } private int c; Un nome al contatore private String nomeContatore; }

Ingegneria del Software: Programmazione ad Oggetti

15

Ingegneria del Software: Programmazione ad Oggetti

16

Il metodo toString ()
public class Body { public long idNum; public String name = <unnamed> public Body orbits = null; private static long nextID = 0; public Body() { idNum = nextID++; } public Body(String name, Body orbitsAround) { this(); this.name = name; orbits = orbitsAround; } public toString() { String desc = idNum+ (+name+); if (orbits != null) desc += orbits +orbits.toString(); return desc; } } Body sun = new Body( Sol, null); Body earth = new Body(Earth sun); , System.out. println(Body +earth. toString()); Body 1 (Earth) orbits 0 (Sol) Ingegneria del Software: Programmazione ad Oggetti 17

Metodi e Parametri
Il passaggio dei parametri in un metodo avviene solo e sempre per valore Ad un metodo possono essere passati oggetti come parametri Attenzione! Gli oggetti sono in pratica puntatori quindi e` il puntatore che viene passato per valore non loggetto che rappresenta Array come parametri (gli array sono oggetti!)

Ingegneria del Software: Programmazione ad Oggetti

18

Classi ed Oggetti oggetti come parametri


I tipi primitivi sono passati per valore Gli oggetti sono passati per referenza
public class PassRef { public static void main (String[] args) { Body sirius = new Body(Sirius , null); System.out.println(before: +sirius .toString()); commonName(sirius); System.out.println(after: +sirius.toString()); } public void commonName(Body bodyRef ) { bodyRef.name = Dog Star; bodyRef = null; } } before: 0 (Sirius) after: 0 (Dog Star) Ingegneria del Software: Programmazione ad Oggetti 19

Lo stato di un oggetto
Non solo variabili di tipo primitivo Puo` essere composto anche da istanze di altre classi (oggetti) Es.: Coppia di Contatori
class DoubleCounter { private Counter c1; private Counter c2; [] public DoubleCounter() { c1 = new Counter(); c2 = new Counter(); [] } } Ingegneria del Software: Programmazione ad Oggetti

20

Array di Oggetti
Gli elementi di un array possono essere oggetti qualsiasi Es.: un array di contatori
class ArrayOfCounters { private Counter[] counters; [] public ArrayOfCounters(int howMany) { counters = new Counter[howMany]; [] } }
} Ingegneria del Software: Programmazione ad Oggetti 21

Classi e Oggetti
Definizione di una classe
classmodifier class classname extends superclassname implements interface1, ..., interfaceN { varmodifier type inst-var1; varmodifier type inst-var2; varmodifier type inst-varN; methodmodifier type methodname1(parameter-list) { methodbody; } methodmodifier type methodname2(parameter-list) { methodbody; } methodmodifier type methodnameN (parameter-list) { methodbody; } Ingegneria del Software: Programmazione ad Oggetti

22

Das könnte Ihnen auch gefallen

  • 12 Pdfsam FlangeASA
    12 Pdfsam FlangeASA
    Dokument1 Seite
    12 Pdfsam FlangeASA
    malliokogn
    Noch keine Bewertungen
  • Verbi Arabi PDF
    Verbi Arabi PDF
    Dokument17 Seiten
    Verbi Arabi PDF
    malliokogn
    Noch keine Bewertungen
  • Ingranaggio
    Ingranaggio
    Dokument1 Seite
    Ingranaggio
    malliokogn
    Noch keine Bewertungen
  • 19 Pdfsam FlangeASA
    19 Pdfsam FlangeASA
    Dokument1 Seite
    19 Pdfsam FlangeASA
    malliokogn
    Noch keine Bewertungen
  • 12 Pdfsam FlangeASA
    12 Pdfsam FlangeASA
    Dokument1 Seite
    12 Pdfsam FlangeASA
    malliokogn
    Noch keine Bewertungen
  • 15 Pdfsam FlangeASA
    15 Pdfsam FlangeASA
    Dokument1 Seite
    15 Pdfsam FlangeASA
    malliokogn
    Noch keine Bewertungen
  • Flange ASA
    Flange ASA
    Dokument1 Seite
    Flange ASA
    malliokogn
    Noch keine Bewertungen
  • Distributori Carburante - Interpelli
    Distributori Carburante - Interpelli
    Dokument22 Seiten
    Distributori Carburante - Interpelli
    bandolerostanco
    Noch keine Bewertungen
  • C
    C
    Dokument25 Seiten
    C
    asganafer
    Noch keine Bewertungen
  • 7 Pdfsam FlangeASA
    7 Pdfsam FlangeASA
    Dokument1 Seite
    7 Pdfsam FlangeASA
    malliokogn
    Noch keine Bewertungen
  • Tras For Mate Short
    Tras For Mate Short
    Dokument90 Seiten
    Tras For Mate Short
    malliokogn
    Noch keine Bewertungen
  • 3 Pdfsam FlangeASA
    3 Pdfsam FlangeASA
    Dokument1 Seite
    3 Pdfsam FlangeASA
    malliokogn
    Noch keine Bewertungen
  • 2 Pdfsam FlangeASA
    2 Pdfsam FlangeASA
    Dokument1 Seite
    2 Pdfsam FlangeASA
    malliokogn
    Noch keine Bewertungen
  • Rings
    Rings
    Dokument23 Seiten
    Rings
    malliokogn
    Noch keine Bewertungen
  • Publication
    Publication
    Dokument18 Seiten
    Publication
    malliokogn
    Noch keine Bewertungen
  • Prog Telaio
    Prog Telaio
    Dokument25 Seiten
    Prog Telaio
    Pinco Pallino
    Noch keine Bewertungen
  • E-Gr Tenute
    E-Gr Tenute
    Dokument2 Seiten
    E-Gr Tenute
    malliokogn
    Noch keine Bewertungen
  • Flange As A
    Flange As A
    Dokument23 Seiten
    Flange As A
    PinalBhansali
    Noch keine Bewertungen
  • Material Quivalent
    Material Quivalent
    Dokument4 Seiten
    Material Quivalent
    Uma Sankar
    Noch keine Bewertungen
  • Guidac PDF
    Guidac PDF
    Dokument226 Seiten
    Guidac PDF
    Burned_Monk
    Noch keine Bewertungen
  • Tecnologia
    Tecnologia
    Dokument1 Seite
    Tecnologia
    malliokogn
    Noch keine Bewertungen
  • Prog Ogg I
    Prog Ogg I
    Dokument76 Seiten
    Prog Ogg I
    malliokogn
    Noch keine Bewertungen
  • Dispense Avanzate C
    Dispense Avanzate C
    Dokument169 Seiten
    Dispense Avanzate C
    malliokogn
    Noch keine Bewertungen
  • Saldature
    Saldature
    Dokument14 Seiten
    Saldature
    malliokogn
    Noch keine Bewertungen
  • Elettropompe
    Elettropompe
    Dokument6 Seiten
    Elettropompe
    malliokogn
    Noch keine Bewertungen
  • Corso C++
    Corso C++
    Dokument53 Seiten
    Corso C++
    Cristopher Blevins
    Noch keine Bewertungen
  • 1) Oop
    1) Oop
    Dokument6 Seiten
    1) Oop
    malliokogn
    Noch keine Bewertungen