SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Programmazione 2 (PR2)

Maurizio ATZORI
Dipartimento di Matematica e Informatica
Università di Cagliari
email: atzori@unica.it
http:/riemann.unica.it/~atzori/
Lezione 2: Classi, oggetti, variabili
Etiquette
 Telefoni spenti
 No portatili, salvo diversa indicazione
 No Facebook, email, chat ecc.
 No bibite, cibo ecc.

 Per qualsiasi dubbio chiedere alzando la mano
   Interazione gradita
 Materiale sul sito
Orario lezioni
 Martedì 14:30-16:10
 Giovedì 14:30-16:10
 Venerdì 16:30-19:10
   In laboratorio; TA: Francesco Usai
   Sarete divisi in 2 gruppi:
      16:30-17:45 Gruppo A
      17:55-19:10 Gruppo B
 Ricevimento Martedì dopo la lezione in aula
 Obbligo di frequenza: firmare!
Pagina PR2 su Moodle
 http://moodle.unica.it
   Facoltà di Scienze MM.FF.NN
     Programmazione 2
Pagina PR2 su Moodle
Pagina PR2 su Moodle
 Chiave d'accesso:


           *******

         Da non confondersi con   *
Oggetto
Light lt;
lt = new Light();
lt.on();
Oggetto
Light lt;
lt = new Light();
lt.on();




Light lt = new Light();
String testo = new String();
Composizione (Composition)
 Composition: One class has another as a part
 (indicated by the diamond “aggregation”
 symbol)
Ereditarietà (Inheritance)
 Gerarchia a radice unica (Object)
Polimorfismo
Overriding
Codice Java polimorfico
Shape p1 = new Shape();
Shape p2 = new Circle();
Shape p3 = new Square();
Shape p4 = new Triangle();
    ... migliaia di righe di codice...
Tutte le variabili sono di tipo (appartengono alla classe) Shape,
ma a runtime:
        p2 contiene un oggetto di tipo Circle
        p3 conterrà un oggetto di tipo Square

p2.draw()               // disegna un cerchio?
p3.draw()               // disegna un quadrato?
Upcasting




 Downcasting?
Upcasting / Downcasting
Shape   p1   =   new   Shape();
Shape   p2   =   new   Circle();
Shape   p3   =   new   Square();
Shape   p4   =   new   Triangle();


Downcasting (Cast)

Square quadrato = p3;
Upcasting / Downcasting
Shape   p1   =   new   Shape();
Shape   p2   =   new   Circle();
Shape   p3   =   new   Square();
Shape   p4   =   new   Triangle();


Downcasting (Cast)

Square quadrato = p3; // errore di tipo (downcasting!)

Square quadrato = (Square) p3; //ok
Classi Astratte
  abstract
Creating New Types
class MyNewType {
  // definition here
}
  D'ora in poi potremmo creare variabili di tipo
  MyNewType

MyNewType x = new MyNewType();
Creating New Types
class MyNewType {
      // attributi (o campi, o var membro)

      // metodi (o funzioni membro)
}

    Fields (a.k.a. member variables, data
    members)
    Methods (a.k.a. member functions)
Creating New Types
class MyNewType {
    // attributi (o campi, o var membro)

    // metodi (o funzioni membro)
}
class Car {
    Engine motore = new Engine();
    void accendi() {
         return;
    }
}
Class Members
 Fields (a.k.a. member variables, data
 members)
 Methods (a.k.a. member functions)
 class Car {
     Engine motore = new Engine();
     void accendi() {
         motore.turnOn();
         return;
     }
 }
Modificatori d'accesso
 public
 private
 protected
 “default” access, o anche:
   package access
   friendly access
 static final syncronized
Class Members
public class Car {
    private Engine motore = new Engine();
    public void accendi() {
        motore.turnOn();
        return;
    }
}

// somewhere
Car fiatPunto = new Car();
fiatPunto.accendi();
Java’s Primitive Types
  Type      Size     Wrapper type
  boolean   -        Boolean
  char      16-bit   Character
  byte      8-bit    Byte
  short     16-bit   Short
  int       32-bit   Integer
  long      64-bit   Long
  float     32-bit   Float
  double    64-bit   Double
  void      -        Void
Let’s Write Something
// Our first program. File: HelloDate.java
// Note that the file name is exactly the same
// as the class name, including capitalization.

public class HelloDate {
    public static void main(String[] args) {
        String s = “world”;
        int anno = 2011;
        System.out.print(“Hello ”);
        System.out.println(s);
        System.out.println(anno);
    }
}
Compilazione/Interpretazione
 Editing
    Use any text editor you like (not a word processor!); save
     as HelloDate.java
 Compiling
    From a DOS or UNIX command line, type
     > javac HelloDate.java
    This should produce the file HelloDate.class
 Running
    Again from the command prompt, type
     > java HelloDate

Más contenido relacionado

Similar a Lezione02

Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5Matteo Baccan
 
Acadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewAcadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewFrancesco Sciuti
 
Corso pratico di C# - 2013
Corso pratico di C# - 2013Corso pratico di C# - 2013
Corso pratico di C# - 2013Matteo Valoriani
 
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)Marcello Missiroli
 
Presentazione Esercizio Piscina Pp 2003
Presentazione Esercizio Piscina Pp 2003Presentazione Esercizio Piscina Pp 2003
Presentazione Esercizio Piscina Pp 2003LapiniDaniele
 
Guida Alla Costruzione Di Un Progetto In Visual Basic Per La Gestione Di Un D...
Guida Alla Costruzione Di Un Progetto In Visual Basic Per La Gestione Di Un D...Guida Alla Costruzione Di Un Progetto In Visual Basic Per La Gestione Di Un D...
Guida Alla Costruzione Di Un Progetto In Visual Basic Per La Gestione Di Un D...LapiniDaniele
 
Sistemi operativi Fabiano Dalla Piazza
Sistemi operativi  Fabiano Dalla PiazzaSistemi operativi  Fabiano Dalla Piazza
Sistemi operativi Fabiano Dalla PiazzaFabiano Dalla Piazza
 
Programmazione e gestione della sicurezza: Verbale elettronico
Programmazione e gestione della sicurezza: Verbale elettronicoProgrammazione e gestione della sicurezza: Verbale elettronico
Programmazione e gestione della sicurezza: Verbale elettronicoDavide Ciambelli
 

Similar a Lezione02 (20)

Dal c a Java (3/3)
Dal c a Java (3/3)Dal c a Java (3/3)
Dal c a Java (3/3)
 
Pillole di C++
Pillole di C++Pillole di C++
Pillole di C++
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immagini
 
Dal C a Java (1/3)
Dal C a Java (1/3)Dal C a Java (1/3)
Dal C a Java (1/3)
 
Corso Java
Corso JavaCorso Java
Corso Java
 
Design Pattern
Design PatternDesign Pattern
Design Pattern
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5
 
Java lezione2
Java lezione2Java lezione2
Java lezione2
 
Acadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewAcadevmy - TypeScript Overview
Acadevmy - TypeScript Overview
 
Corso pratico di C# - 2013
Corso pratico di C# - 2013Corso pratico di C# - 2013
Corso pratico di C# - 2013
 
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
 
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
 
Presentazione Esercizio Piscina Pp 2003
Presentazione Esercizio Piscina Pp 2003Presentazione Esercizio Piscina Pp 2003
Presentazione Esercizio Piscina Pp 2003
 
Guida Alla Costruzione Di Un Progetto In Visual Basic Per La Gestione Di Un D...
Guida Alla Costruzione Di Un Progetto In Visual Basic Per La Gestione Di Un D...Guida Alla Costruzione Di Un Progetto In Visual Basic Per La Gestione Di Un D...
Guida Alla Costruzione Di Un Progetto In Visual Basic Per La Gestione Di Un D...
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Sistemi operativi Fabiano Dalla Piazza
Sistemi operativi  Fabiano Dalla PiazzaSistemi operativi  Fabiano Dalla Piazza
Sistemi operativi Fabiano Dalla Piazza
 
Programmazione e gestione della sicurezza: Verbale elettronico
Programmazione e gestione della sicurezza: Verbale elettronicoProgrammazione e gestione della sicurezza: Verbale elettronico
Programmazione e gestione della sicurezza: Verbale elettronico
 
What's new in C# 7
What's new in C# 7What's new in C# 7
What's new in C# 7
 
Java5
Java5Java5
Java5
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 

Lezione02

  • 1. Programmazione 2 (PR2) Maurizio ATZORI Dipartimento di Matematica e Informatica Università di Cagliari email: atzori@unica.it http:/riemann.unica.it/~atzori/ Lezione 2: Classi, oggetti, variabili
  • 2. Etiquette Telefoni spenti No portatili, salvo diversa indicazione No Facebook, email, chat ecc. No bibite, cibo ecc. Per qualsiasi dubbio chiedere alzando la mano Interazione gradita Materiale sul sito
  • 3. Orario lezioni Martedì 14:30-16:10 Giovedì 14:30-16:10 Venerdì 16:30-19:10 In laboratorio; TA: Francesco Usai Sarete divisi in 2 gruppi: 16:30-17:45 Gruppo A 17:55-19:10 Gruppo B Ricevimento Martedì dopo la lezione in aula Obbligo di frequenza: firmare!
  • 4. Pagina PR2 su Moodle http://moodle.unica.it Facoltà di Scienze MM.FF.NN Programmazione 2
  • 5. Pagina PR2 su Moodle
  • 6. Pagina PR2 su Moodle Chiave d'accesso: ******* Da non confondersi con *
  • 7. Oggetto Light lt; lt = new Light(); lt.on();
  • 8. Oggetto Light lt; lt = new Light(); lt.on(); Light lt = new Light(); String testo = new String();
  • 9. Composizione (Composition) Composition: One class has another as a part (indicated by the diamond “aggregation” symbol)
  • 10. Ereditarietà (Inheritance) Gerarchia a radice unica (Object)
  • 13. Codice Java polimorfico Shape p1 = new Shape(); Shape p2 = new Circle(); Shape p3 = new Square(); Shape p4 = new Triangle(); ... migliaia di righe di codice... Tutte le variabili sono di tipo (appartengono alla classe) Shape, ma a runtime: p2 contiene un oggetto di tipo Circle p3 conterrà un oggetto di tipo Square p2.draw() // disegna un cerchio? p3.draw() // disegna un quadrato?
  • 15. Upcasting / Downcasting Shape p1 = new Shape(); Shape p2 = new Circle(); Shape p3 = new Square(); Shape p4 = new Triangle(); Downcasting (Cast) Square quadrato = p3;
  • 16. Upcasting / Downcasting Shape p1 = new Shape(); Shape p2 = new Circle(); Shape p3 = new Square(); Shape p4 = new Triangle(); Downcasting (Cast) Square quadrato = p3; // errore di tipo (downcasting!) Square quadrato = (Square) p3; //ok
  • 17. Classi Astratte abstract
  • 18. Creating New Types class MyNewType { // definition here } D'ora in poi potremmo creare variabili di tipo MyNewType MyNewType x = new MyNewType();
  • 19. Creating New Types class MyNewType { // attributi (o campi, o var membro) // metodi (o funzioni membro) } Fields (a.k.a. member variables, data members) Methods (a.k.a. member functions)
  • 20. Creating New Types class MyNewType { // attributi (o campi, o var membro) // metodi (o funzioni membro) } class Car { Engine motore = new Engine(); void accendi() { return; } }
  • 21. Class Members Fields (a.k.a. member variables, data members) Methods (a.k.a. member functions) class Car { Engine motore = new Engine(); void accendi() { motore.turnOn(); return; } }
  • 22. Modificatori d'accesso public private protected “default” access, o anche: package access friendly access static final syncronized
  • 23. Class Members public class Car { private Engine motore = new Engine(); public void accendi() { motore.turnOn(); return; } } // somewhere Car fiatPunto = new Car(); fiatPunto.accendi();
  • 24. Java’s Primitive Types Type Size Wrapper type boolean - Boolean char 16-bit Character byte 8-bit Byte short 16-bit Short int 32-bit Integer long 64-bit Long float 32-bit Float double 64-bit Double void - Void
  • 25. Let’s Write Something // Our first program. File: HelloDate.java // Note that the file name is exactly the same // as the class name, including capitalization. public class HelloDate { public static void main(String[] args) { String s = “world”; int anno = 2011; System.out.print(“Hello ”); System.out.println(s); System.out.println(anno); } }
  • 26. Compilazione/Interpretazione Editing  Use any text editor you like (not a word processor!); save as HelloDate.java Compiling  From a DOS or UNIX command line, type > javac HelloDate.java  This should produce the file HelloDate.class Running  Again from the command prompt, type > java HelloDate