Lezione01
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
303
On Slideshare
303
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Programmazione 2 (PR2)Maurizio ATZORIDipartimento di Matematica e InformaticaUniversità di Cagliariemail: atzori@unica.ithttp:/riemann.unica.it/~atzori/Lezione 1: Introduzione al Corso PR2
  • 2. Background Propedeuticità: Programmazione 1 Scrivere un programma in un linguaggio imperativo (es. in C) Comprendere le variabili Strutture di controllo funzioni/subroutines
  • 3. Orario lezioni Martedì 14:30-16:10 Giovedì 14:30-16:10 Venerdì 16:30-19:10 (lab, con TA) 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 60% delle presenze (compresi laboratori)
  • 4. Carico di lavoro PR2 9 CFU; ogni CFU corrisponde a 25 ore: 8 ore di lezioni frontali, 4 ore di apprendimento autonomo guidato e 13 ore di studio individuale 12 ore di esercitazioni pratiche e/o di laboratorio con 13 ore di rielaborazione personale 9 cfu x 25 h = 225 h = (circa) 30 giorni full- time
  • 5. 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
  • 6. Programma del corso 1) Tipi primitivi, enumerativi ed array 2) Il concetto di classe e sottoclasse, rappresentazione UML. Metodi ed oggetti 3) Uso della gerarchia delle classi: ereditarietà e polimorfismo, classi astratte, interfacce, tipi generici 4) Implementazione di classi e oggetti: struttura delle classi, implementazione delle interfacce, modificatori di visibilità
  • 7. Programma del corso 5) Estensione delle classi: classi/sottoclassi/superclassi, ereditarietà, overloading, polimorfismo 6) Tipi generici ed interfacce 7) Cenni alla JVM/garbage collection 8) Il meccanismo delle eccezioni: eccezioni controllate e non controllate, gestione delle eccezioni 9) La documentazione del codice: javadoc 10) Possibili estensioni: Android/JDBC/XML
  • 8. Modalità Esame AA 2010/2011 Prova Scritta + di Laboratorio + Colloquio SCRITTO: soluzione di alcuni esercizi e/o di rispondere a delle domande a risposta multipla PROVA LAB: viene richiesta la scrittura di codice che soddisfi specifiche assegnate COLLOQUIO: (in alcuni casi facoltativo) verterà sui contenuti del corso. Padronanza degli argomenti + padronanza del linguaggio tecnico COMPITINI: (metà/fine corso) Chi supera entrambi i compitini è ammesso al colloquio
  • 9. Riferimenti Libro di testo ufficiale: Thinking in Java by Bruce Eckel In libreria in Italiano, primo volume (4a edizione) Online gratuito (inglese, 3a edizione, completo) http://mindview.net/Books/TIJ/ http://www.omerique.net/Eckel/ The Java Tutorial http://java.sun.com/docs/books/tutorial/ Praticamente tutti i testi su Java
  • 10. Riferimenti – Thinking in Java In via di definizione, in funzione dei feedback I primi 12-16 capitoli del libro (circa 1 a settimana): 1: Introduction to Objects 2: Everything is an Object 3: Controlling Program Flow 4: Initialization & Cleanup 5: Hiding the Implementation 6: Reusing Classes
  • 11. Riferimenti – Thinking in Java 7: Polymorphism 8: Interfaces & Inner Classes 9: Error Handling with Exceptions 10: Detecting Types 11: Collections of Objects 12: The Java I/O System 13: Concurrency 14: Creating Windows & Applets 15: Discovering Problems 16: Analysis and Design
  • 12. Programming LanguageEvolutionMachine languageAssembler“3rd generation” (COBOL, FORTRAN, C)Specialized (Lisp, Prolog, APL)“4th generation” (SQL, spreadsheets,Mathematica)
  • 13. Why So Many Languages? Bring the language “closer” to the problem. But 4GLs are typically focused on specialized domains (e.g., relational databases). We want a language that is general purpose, yet can easily be “tailored” to any domain.
  • 14. Object-Oriented Languages Smalltalk, C++, Java, etc… You can make any kind of objects you want How different from procedural languages? No different at all: Every (reasonable) language is “Turing complete” Very different: Make expression easier, less error-prone
  • 15. O-O Languages (Alan Kay) Everything is an object A program is a bunch of objects telling each other what to do, by sending messages Each object has its own memory, and is made up of other objects Every object has a type (class) All objects of the same type can receive the same messages
  • 16. Making Java Work Its “easy as pie” to write procedural code in Java It takes some discipline (an attitude) to think O-O Its worthwhile to do it
  • 17. Objects An object has an interface, determined by its class A class is an abstract data type, or user- defined type Designing a class means defining its interface
  • 18. Designers Design, Users Use The interface is the critical part, but the details (implementation) are important too. BottleOfBeer -topOn:Boolean +open():void +lift(height:int):void +tilt(angle:int):void Users use the interface (the “public part”); the implementation is hidden by “access control”.
  • 19. Oggetto
  • 20. OggettoLight lt;lt = new Light();lt.on();
  • 21. Creazione oggettoLight lt;lt = new Light();Light lt = new Light();String testo = new String();
  • 22. A Simple Model of MemoryThe reference variable testo The String objectholds a memory location is at that location 0x1234 memory 22 C++ Versus Javan… When you “speak of” the variable testo, you are “referring to” the actual String object. When testo goes out of scope it is automatically destroyed. The String object lives on, but nobody can use it…unless there are other references to it
  • 23. Composizione (Composition) Composition: One class has another as a part (indicated by the diamond “aggregation” symbol)
  • 24. Ereditarietà (Inheritance) extends
  • 25. Ereditarietà (Inheritance) Gerarchia a radice unica (Object)
  • 26. Polimorfismo / Overriding @ run time
  • 27. Codice Java polimorficoShape p1 = new Shape();Shape p2 = new Circle();Shape p3 = new Square();Shape p4 = new Triangle();p1.draw() // disegna una forma indefinitap2.draw() // disegna un cerchiop3.draw() // disegna un quadratop4 = p3;p4.draw(); // cosa disegna??? Si, un quadrato!