Lezione 9 programmazione in Java Classi come contenitori
|
|
|
- Evelina Annalisa Esposito
- 9 anni fa
- Visualizzazioni
Transcript
1 Lezione 9 programmazione in Java Classi come contenitori Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio di parametri per riferimento La programmazione orientata agli Oggetti come estensione della programmazione tradizionale: Le classi come contenitori di funzioni Come usare le funzioni di altre classi Javadoc Esempi su come documentare il codice Esercizi Nicola Drago 2 Gestione della memoria In generale le variabili sono allocate in 3 possibili aree: Area Dati Stack Heap Java alloca le variabili principalmente nello stack, di conseguenza quando un metodo/funzione finisce le variabili vengono eliminate. Nicola Drago 3
2 Gestione della memoria class Triangolo { double area(int base, int altezza) { return((base * altezza) / 2 ); public static void main(string args[]){ int a = 10; int b = 20; System.out.println(area(a,b)); STACK Int base Int altezza Main () Int b = 20 Int a = 10 feneprogramma Nicola Drago 4 Gestione della memoria In generale le variabili sono allocate in 3 possibili aree: Area Dati Stack Heap Java può allocare anche variabili nell HEAP ovvero in un area dinamica. Lo Heap in generale non ha problemi di dimensioni. Java al contrario di altri linguaggi, possiede un meccanismo di garbage collection automatico, non necessita il recupero della memoria dallo HEAP Nicola Drago 5 Gestione della memoria In generale le variabili sono allocate in 3 possibili aree: Area Dati Stack Heap Java alloca le variabili nell HEAP tramite l operatore new (come la maggior parte degli altri linguaggi). In genere (ma non sempre) le variabili puntatore sono dichiarate tramite le []. Di conseguenza i vettori e tutti i tipi classi sono allocati dinamicamente nell HEAP! Nicola Drago 6
3 Passaggio di parametri per riferimento class Triangolo { double area(int[] base, int[] altezza) { base[0] = 1; return((base[0] * altezza[0]) / 2 ); public static void main(string args[]){ int[] b = new int[1]; int[] h = new int[1]; b[0] = 10; h[0] = 20; System.out.println("area = " + area(b,h)); System.out.println("base = " + b[0]); System.out.println("altezza = " + h[0]); Nicola Drago 7 Passaggio di parametri per riferimento STACK Int h [ ] Int b [ ] feneprogramma HEAP Nicola Drago 8 Passaggio di parametri per riferimento class Triangolo { double area(int[] base, int[] altezza) { base[0] = 1; return((base[0] * altezza[0]) / 2 ); Nicola Drago 9
4 Passaggio di parametri per riferimento STACK Int [ ] base Int [ ] altezza Main () Int h [ ] Int b [ ] feneprogramma HEAP 20 1 Nicola Drago 10 Passaggio di parametri per riferimento class Triangolo { double area(int[] base, int[] altezza) { base[0] = 1; return((base[0] * altezza[0]) / 2 ); public static void main(string args[]){ int[] b = new int[1]; int[] h = new int[1]; b[0] = 10; h[0] = 20; System.out.println("area = " + area(b,h)); System.out.println("base = " + b[0]); System.out.println("altezza = " + h[0]); Nicola Drago 11 Passaggio di parametri per riferimento STACK Int h [ ] Int b [ ] feneprogramma HEAP 20 1 Nicola Drago 12
5 Contenitori di funzioni Obiettivo: Definire le funzioni una volta e poterle usare anche in altri programmi. Il blocco class{ diventa un contenitore di funzioni omogenee Nicola Drago 13 Contenitori di funzioni Ogni funzione deve essere dichiarata public e static public: Il modificatore public è la parola chiave che consente di utilizzare la funzione all esterno della classe. static: Il modificatore static è la parola chiave che consente di utilizzare la funzione all esterno della classe (consente ti usare le classi come contenitori). La funzione deve essere invocata nel seguente modo: NomeClasse.nomeFunzione() Nicola Drago 14 Classi come contenitori: Esempio Trapezio isoscele: Le azioni che possiamo compiere: Perimetro perimetro() Area area() Nicola Drago 15
6 Classi come contenitori: Esempio class Trapezio { public static double area(double basemaggiore, double baseminore) { return(((basemaggiore + baseminore) * altezza) / 2 ); Nicola Drago 16 Classi come contenitori: Esempio class Trapezio { public static double area(double basemaggiore, double baseminore) { return(((basemaggiore + baseminore) * altezza) / 2 ); Completare la classe scrivendo la funzione perimetro Nicola Drago 17 Classi come contenitori: Esempio La prova: Per provare una classe, si deve costruire una seconda classe test per provare le funzioni definite. La classe di test (e solo la classe di test) deve contenere una funzione main. Nicola Drago 18
7 Classi come contenitori: Esempio class TestTrapezio { public static void main(string args[]) { double basem = 10; double basem = 5; double altezza = 3; System.out.println("Area =" + Trapezio.area(baseM,basem,altezza)); System.out.println("Perimetro =" + T.perimetro( )); Nicola Drago 19 Classi come contenitori: Esempio La compilazione: Per compilare un programma composto da più classi è sufficiente che tutti i file.java (che devono avere lo stesso nome delle classi) si trovino nella medesima directory. Il compilatore, in modo automatico, cerca i componenti necessari ed eventualmente li compila. L esecuzione: Allo stesso modo l esecutore, la JVM carica tutti i file.class necessari all esecuzione. Se necessario si può eventualmente usare anche il classpath. Nicola Drago 20 Documentazione Java dispone un sistema per documentare quanto scritto: JAVADOC /** Sono commenti speciali che generano * documentazione HTML */ Sorgente Java.java javadoc Document azione.html Nicola Drago 21
8 Documentazione /** * Calcola la radice quadrata di uno specifico * Valore double. val il valore da cui estrarre la * Radice quadrata la radice quadrata di * <TT>val</TT> IllegalArgumentException se * <TT>val</TT> è < 0 #sqrt(int) */ public double sqrt(double val) { // Nicola Drago 22 Documentazione class Trapezio { /** * Calcola l area data la base * maggiore, minore e l'altezza * Restituisce l area. l area del trapezio <TT>area</TT> bm Base Maggiore bm Base minore h altezza * Area del trapezio */ Area(double bm, double bm, double h) { return( ) Nicola Drago 23 Classi Contenitori: Esercizi 1. Creare una classe triangolo isoscele, documentarla con javadoc e provarla con una classe test. 2. Creare una classe quadrato, documentarla con javadoc e provarla con una classe test. 3. Creare una classe rettangolo, documentarla con javadoc e provarla con una classe test. 4. Creare una classe triangolo equilatero, documentarla con javadoc e provarla con una classe test. 5. Creare una classe circonferenza, documentarla con javadoc e provarla con una classe test. Nicola Drago 24
Lezione 10 programmazione in Java. Anteprima. Programmazione OO. La programmazione orientata agli Oggetti. Javadoc. Esercizi
Lezione 10 programmazione in Java Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima La programmazione orientata agli Oggetti Cosè un oggetto I metodi Il costruttore
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Lezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
Allocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
Laboratorio di Informatica 4 Novembre 2005
Laboratorio di Informatica 4 Novembre 2005 Marco Iarusso Programmazione Java Ringraziamenti Parte della presente dispensa materiale didattico è derivato dalla dispensa prodotta da Luca Cabibbo Dip. Informatica
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
La Gestione della Memoria. Carla Binucci e Walter Didimo
La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Definizione di classi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti
PROGRAMMAZIONE 2 5. Dynamic dispatch
PROGRAMMAZIONE 2 5. Dynamic dispatch PR2 2017-2018 1 Cosa significa? La dichiarazione di una variabile non determina in maniera univoca il >po dell oggeao che la variabile riferisce Cerchiamo di capire
Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi
Basi della programmazione in Java Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
CLASSI ASTRATTE - ESERCIZIO
CLASSI ASTRATTE - ESERCIZIO Definire una tassonomia di forme geometriche non esiste la generica forma geometrica! esistono triangoli, quadrilateri, pentagoni,... Forme può ben essere una classe astratta
IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
Strutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 07 Oggetti e Java Marzo 2010 Programmazione Java 1 Contenuti Il linguaggio Java Applicazioni Java e il metodo main Esempi di applicazioni
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica Riferimenti versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
Allocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
Lezione 3 programmazione in Java
Lezione 3 programmazione in Java Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Help in linea La selezione Il costrutto di scelta Espressioni logiche Esercizi
Programmazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
La gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
TIPI PRIMITIVI E CLASSI WRAPPER
I tipi primitivi come oggetti Package java.lang In varie situazioni, può essere comodo poter trattare i tipi primitivi come oggetti per passarli per riferimento a una funzione quando una funzione pretende
Laboratorio di Programmazione Lezione 4. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 4 Cristian Del Fabbro Prossima lezione Mercoledì 25 novembre ore 8:30-11:00 Classe Una classe descrive degli oggetti tramite: Proprietà/variabili/campi (dati/caratteristiche,
14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Gestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - [email protected] A pessimistic programmer sees the array as half empty.
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
PROGRAMMAZIONE A OGGETTI (OOP) Lezione 4 prj Mesa (Prof. Ing N. Muto)
PROGRAMMAZIONE A OGGETTI (OOP) Lezione 4 prj Mesa (Prof. Ing N. Muto) In questa lezione applicheremo tutti i concetti teorici fin qui esposti, sarà presentato codice sviluppato in C# sviluppato con l'ide
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
