Anteprima
Vedrai una selezione di 7 pagine su 26
Formulario Java Pag. 1 Formulario Java Pag. 2
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Formulario Java Pag. 6
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Formulario Java Pag. 11
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Formulario Java Pag. 16
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Formulario Java Pag. 21
Anteprima di 7 pagg. su 26.
Scarica il documento per vederlo tutto.
Formulario Java Pag. 26
1 su 26
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

I/O: FILES AND STREAMS

I/O da file: leggere i dati da un file testuale che li elenca uno per riga.

Leggere:

  1. Apri file;
  2. Leggi un "data item";
  3. WHILE not EndOfFile DO
    • Processa il data item
    • Leggi il prossimo data item
  4. END WHILE
  5. Chiudi file

Scrivere:

  1. Apri il file in scrittura
  2. WHILE ci sono dati da scrivere DO
    • Scrivi il prossimo dato
  3. END WHILE
  4. Chiudi il file
  5. Se il file esiste, lo sovrascrive. Se non esiste, lo crea.

Scanner: Scanner s = new Scanner(new File("nomefile"));

FileNotFoundException

Metodo next(): restituisce un token separato da delimitatori che possono essere scartati con:

  • useDelimiter: scan.useDelimiter("\\s*fish\\*")
  • classe StringTokenizer (prende in input, nomeStringa e delimitatore):
    • metodo split(): ritorna un array di tokens

Classe file:

  • exists()
  • canRead()

PrintWriter: PrintWriter writer = new PrintWriter("nomeFile"); (se non esiste viene creato, se si vuole mettere in coda si passa nomeFile, true).

Non ha print

Si crea un oggetto PrintWriter che incapsula l'oggetto FileWriter: ```java FileWriter writer = new FileWriter("file.txt", true); PrintWriter pw = new PrintWriter(writer); pw.println("ciao"); pw.close(); ``` Eccezioni (gestite dal main): - FileNotFoundException (se non esiste); - IOException (dal close di FileReader) - BadDataException (se formato sbagliato) 31. EREDITARIETA' Ereditarietà = relazione IS-A tra una superclasse e una sottoclasse (definita con "extends", si specifica solo il codice che differisce dalla classe genitore). Ogni classe può avere a sua volta sottoclassi così da avere una gerarchia. Ogni attributo della superclasse lo è anche della sottoclasse quindi non bisogna ridichiararli. Regole: - Attributo public: accessibile da ogni classe; - Attributo private: accessibile dalla classe che lo contiene; - Attributo protected: accessibile da classi dello stesso package e dalle sottoclassi. - Default: stesso package.

Ogni sottoclasse deve dichiarare i costruttori (si può richiamare quello della classe genitore con "super(variabili da passare)" e deve essere la prima istruzione)

Metodi public e protected ereditati automaticamente.

Overridden: posson essere ridefiniti invocando se necessario super.

32. POLIMORFISMO

Polimorfismo = distinto in:

  • Ad hoc: un'operazione con lo stesso nome si comporta seconda del tipo/numero dei parametri (overloading, +);
  • Parametrico: uno o più tipi specificati come parametri anziché fissati;
  • Per inclusione: ogni operazione definita su oggetti di una classe A deve funzionare su qualsiasi oggetto della sua sottoclasse B

Es:BankAccount bob = new BankAccount(123, "Bob", 345.50)
JointBackAccount bobMary = new JoinBankAccount(345, "Bob", "Mar", 450.99)
Si scrive come:BankAccount ellenFrank = new JointBankAccount(456, "Ellen", "Frank", 3450.99);

Può essere utile

Utilizzare i cast. Esempio: JointBankAccount ha un metodo getJoinName allora: String jointName = ((JoinBankAccount)ellenFrank).getJointName(); Si parla di "object amnesia".

Metodi polimorfi: quando una sottoclasse sovrascrive un metodo della classe antenata

Overloading: metodi con stesso nome ma parametri diversi

Overriding: Inbirire la ridefinzione di un metodo con final.

Upcast: assegnare ad un oggetto della superclasse un oggetto della sottoclasse

Downcast: convertire una superclasse in sottoclasse

33. CLASSI ASTRATTE

Classi astratte quando non ha senso definire quel determinato oggetto: se una classe dichiara almeno un metodo astratto allora si parla di "classe astratta"; Una classe astratta è un tipo di dato che offre almeno una funzionalità generica che "ha senso" per sottoclassi concrete.

Sottoclassi devono implementare metodi astratti

Keyword "abstract":

Public abstract class nomeClasse{}

Abstract public tipo nomeMetodo();

34. INTERFACCE

  • Interfacce: entità che possono essere implementate da diverse classi
  • Public interface nome (solitamente inizia con "I");
  • Keyword "interface"
  • Contiene le intestazioni dei metodi pubblici, definisce costanti pubbliche. Contiene solo prototipi e non implementazioni.
  • Non ha costruttori
  • Una classe non può estendere più di un'altra classe ma può implementare più interfacce
  • Si possono aggiungere metodi
  • Esempi:
    • Interface Set<E>
    • Interface Comparable<T>
      • Public int compareTo(object x)

35. GENERICS

  • Le classi possono operare su tipi parametrizzati rispetto ad un tipo generico;
  • Classe generica:
    • Classname<T> dove T è un tipo utilizzabile nella classe e nei suoi metodi
    • Classe può avere più tipi parametrici: Classname<T, B>
    • Possono estendere una classe o una o più interfacce:
      • public class Coppia<T>
extends Person & Comparable> public class Coppia<A extends Person & Comparable, B extends Animal & Misurable>  Prima parte legale, seconda illegale: - T obj (legale) = new T(); (illegale) - T[] arr (legale) = new T[10]; (illegale)  Si puo’: - Coppia<Integer> coppia = new Coppia<>(); - Coppia<Integer> coppia = new Coppia<Integer>(); 36. COLLEZIONI  Collezione: classe che contiene un gruppo di oggetti.  Interfaccia List<E>: definisce lista ordinata di oggetti (può avere duplicati). Estende Collection<E> - Metodi: - Boolean containsAll(Collection<?> c); - Boolean add(E e); - Void add(int index, E element) - - Arrays.asList() trasforma ciò che gli passi in una lista.  ArrayList: dati memorizzati in un vetto dinamico di cui si può settare la capacità iniziale e che viene ridimensionato a run-time. Classe implementata tramite un vettore che è ridimensionato durante

L'esecuzione del programma.

Vector

LinkedList: dati memorizzati in una lista bidirezionale.

Scandire elementi lista:

For: for (int i = 0; i < nomelista.size(); i++) somma = somma + nomelista.get(i);

For-each: for (Tipo i : nomecollezione) somma = somma + i;

Iteratore: oggetto che rappresenta un cursore con cui scandire una collezione di oggetti.

Interfaccia Iterator<E> (deriva da Colletion), metodi:

  • Import java.util.Iterator;
  • Boolean hasNext(); (verifica se c'è un altro elemento su cui iterare)
  • E next(); (elemento successivo)
  • Iterator<tipo> nomecollezione = tipo.iterator(); (VA IMPORTATOjava.util.Iterator)
  • ListIterator<E> permette, a differenza di iterator, di attraversare la lista in entrambe le direzioni(hasPrevious() e previous()) e aggiungere e sostituire l'elemento corrente(add())

Passi ListIterator<Integer> it = A.listIterator(li.size());

Interfaccia Iterable ha un metodo iterator() che resitutisce un iteratore

LISTE,

E PILE:

Pile: LIFO

Queue: come in una coda, si aggiunge alla fine e si esce dalla testa (FIFO)

import java.util.ArrayDeque;

import java.util.Deque;

Interfaccia Deque<E>: definisce una coda ordinata con oggetti su cui si possono fare operazioni sia in testa che in coda (si possono avere duplicati): IMMAGINA UNA PILA CON ADD E POP

Estende Queue<E>, metodi:

  • boolean containsAll(Collection c);
  • boolean add(E e);
  • boolean addLast(E element); //coda
  • E removeLast(); //coda

Implementata da:

  • LinkedList
  • ArrayDeque

Es: ArrayDeque queue = new ArrayDeque();

LinkedList listqueue = new LinkedList(); IMMAGINA UNA CODA CON ADDFIRST ADDLAST

INSIEME (SET): collezione di elementi distinti dello stesso tipo

Metodi interfaccia:

  • public boolean contains(T x);
  • public void insert(T x);
  • public void remove(T x);
  • public Set union(Set B);
  • public Set intersect(Set B);
  • public Set difference(Set B);

TreeSet (ordinato)

HashSet

DIZIONARI: insieme di associazioni chiave-valore.

Si può ottenere valore associato Inserire nuova associazione Interfaccia Map definisce le operazioni possibili, implementata da: - TreeMap - HashMap Metodi: - clear() - containsKey(Object key) - containsValue(Object value) - entrySet() - equals(Object o) - get(Object key) - hashCode() - isEmpty() - keySet() - put(Object key, Object value) - putAll(Map t) - remove(Object key) - size() - toString() - value() 37. RIUSO DI LIBRERIE JAVA: CLASSPATH E JAR - Classpath: percorso dove il compilatore e la JVM cercano le classi richiamate in un'applicazione (memorizzato in una variabile d'ambiente $CLASSPATH) - Javac -classpath percorsoFile nomeProgramma.java - Javac -cp percorsoFile nomeProgramma.java - Javac -cp percorsoFile nomeProgramma - Ordine gerarchico: - Programmi java - Librerie - Nomepack - File - Nome del package indica al compilatore dove trovare le classi, servono oltre al nome del package

ledirectory nel classpath

  • JAR (Java Archive): archivi di classi e risorse collegate da riusare in altri programmi
  • Gestiti con .jar
  • Se più librerie: nomi separati dai ":"

38. JAVA FX

  • GUI: parte di programma che interagisce con l'utente tramite elementi grafici. La sua programmazione si basa su una gestione degli eventi.
  • Evento: azione dell'utente sull'interfaccia. Programmazione in cui il programmatore non sa l'ordine in cui saranno eseguite le varie parti.
  • Source: oggetto che genera eventi e notifica l'evento ai Listener registrati
  • Listener: oggetto che viene notificato quando si acatena l'evento
  • Handler: oggetto che esegue azioni per gestire l'evento
  • Design pattern: soluzione progettuale generale ad un problema ricorrente
  • Funzioni di callback: gestiscono il comportamento e i parametri degli observer (gestiscono)
  • Java FX (e i predecessori AWT e Swing) permette di creare GUI basate su un set predefinito
Formattazione del testo

di oggettigrafici ed eventi di diversa complessità. Un'applicazione JavaFX estende la classe javafx.application.Application.

La classe espone un metodo astratto eseguito al lancio dell'applicazione:

public void start(Stage primaryStage)

Il parametro primaryStage indica lo Stage (palcoscenico) su cui si svilupperà l'intera applicazione organizzata in Scene (scene).

Ogni app

Dettagli
Publisher
A.A. 2021-2022
26 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher 4le02 di informazioni apprese con la frequenza delle lezioni di Programmazione java e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Amadini Roberto.