Lezione01

318 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
318
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lezione01

  1. 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. 2. Background Propedeuticità: Programmazione 1 Scrivere un programma in un linguaggio imperativo (es. in C) Comprendere le variabili Strutture di controllo funzioni/subroutines
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 12. Programming LanguageEvolutionMachine languageAssembler“3rd generation” (COBOL, FORTRAN, C)Specialized (Lisp, Prolog, APL)“4th generation” (SQL, spreadsheets,Mathematica)
  13. 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. 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. 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. 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. 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. 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. 19. Oggetto
  20. 20. OggettoLight lt;lt = new Light();lt.on();
  21. 21. Creazione oggettoLight lt;lt = new Light();Light lt = new Light();String testo = new String();
  22. 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. 23. Composizione (Composition) Composition: One class has another as a part (indicated by the diamond “aggregation” symbol)
  24. 24. Ereditarietà (Inheritance) extends
  25. 25. Ereditarietà (Inheritance) Gerarchia a radice unica (Object)
  26. 26. Polimorfismo / Overriding @ run time
  27. 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!

×