Comandi Java
Lettera maiuscola ≠ lettera minuscola.
Estensione file deve essere .java.
Massimo 1 classe pubblica.
Massimo +∞ classi private.
Devono essere per forza dentro una classe.
Almeno un metodo main per programma.
// commento 1 riga
/* commento su più righe */
public class Nome{ public static void main (String[] args) { System.out.println("Hello World!"); }}
Classi, oggetti e metodi
Classi (stampano per definire costruttori, metodi e variabili; d'esempio).
System (è Java Platform API) (Application Program Interface).
Oggetti (creati da costruttori e modificati/richiamati da metodi).
Out.
Metodi (modificano gli oggetti o le variabili).
Println.
Sintassi: classe.oggetto.metodo(parametro).
Costruttori
Costruttori.
Creano un oggetto.
Vanno definiti.
public BankAccount(){ BankAccount = 0;}
Comandi Java
Lettera maiuscola ≠ lettera minuscola.
Estensione file deve essere .java.
Massimo 1 classe pubblica.
Massimo +∞ classi private.
Devono essere per forza dentro una classe.
Almeno un metodo main per programma.
Commenti: → il programma non li legge.
// commento 1 riga
/* commento su più righe */
public class Name{ public static void main (String[] args) { system.out.println ("Hello World!"); }}
Classi, oggetti e sintassi
Classi (stampo per definire costruttori, metodi e variabili; d'esempio).
System (≅ Java Platform API) (Application Program Interface).
Oggetti (creati da costruttori e modificati/richiamati da metodi).
Out.
Metodi (modificano gli oggetti o le variabili).
Println.
Sintassi: classe.oggetto.metodo(parametro).
Costruttori:
- Creano un oggetto.
- Vanno definiti public BankAccount() { BankAccount = 0; }.
- Poi possono essere usati e modificati da tutti i metodi e variabili all'interno.
Vanno definiti.
Poi possano essere usati.
Parametri - indicano che tipo di dato le classi/oggetto/costruttore si aspetta.
Overflow - se ho 2 metodi/classi/costruttori con lo stesso name il sistema prende quello che richiamo elementi dello stesso tipo che io sto fornendo.
Elemento definito 2 volte (es. println).
Testare una classe
Serve scrivere una classe di collaudo con un "main" per verificare di ottenere quello che ci aspettiamo.
È importante cercare risultati in entrambi.
1° metodo: fare il file nella stessa cartella (solo una con main), compilare tutti i file, eseguire solo quello con il main.
2° metodo: solo una classe public (dove ho main), le altre saranno private — basta non scrivere public, hanno il file con il name della classe public.
Progettare una classe
- Capire cosa deve fare un oggetto della classe.
- Specificare l'interfaccia pubblica — definire i metodi che servano.
- Documentare con commenti.
- Identificare le variabili d’esemplare.
- Realizzare metodi e costruttori.
- Collaudare la classe (a step, non tutto assieme).
If/else
If (variabile 1 operatore logico variabile 2) { operazione con variabile 1 e variabile 2; }
Else { 1° evento, 2° evento, 3° evento; }
Librerie
Fondamenti di informatica Pagina 22.
import.scanner() → x input dati.
import.math.* → x operatori logici matematici.
Comparazione numeri in double
Comparazione numeri in double (virgola mobile).
s1 = s2 se lo scarto è minore dell'errore di misura che considero es. double.
|x - y| < ε
|x - y| < ε·max(x, y) → con x, y molto grandi o piccoli.
Stringhe e oggetti
Stringhe .equals → guarda il contenuto (diverso da ==).
.compareTo → guarda lettera per lettera in ordine e restituisce un ordinamento.
<0 s1 precede s2.
>0 s2 precede s1.
=0 s1 = s2 (identico).
s1.compareTo(s2).
Oggetti .equals (è classe object) → verifica se identico a s2.
.compareTo (c.f. classe object) → verifica l'ordinamento degli oggetti.
L'ordine dipende da come ho definito compareTo (da cosa gli ho detto di utilizzare e secondo quali criteri).
Switch
- Switch.
- Case 1a condizione cosa fare; break;
- Case 2a condizione cosa fare; break;
- Case 3a condizione cosa fare; break;
- Default cosa fare; break;
Parentesi graffe
If(...) { if(...) { if(...) {...} } }
No, non perché non si vede a colpo d'occhio se si è aperta non la graffa.
While, for e do/while
While: while (condizione){ enunciati; }
Ripete l'enunciato finché non si verifica la condizione.
For: for (inizializzazione; condizione; aggiornamento){ enunciati; }
Ripete l'enunciato finché non si verifica la condizione (utile ad es. se devo contare il numero di cicli).
Do/while: do{ enunciati; } while (condizione).
Esegue l'enunciato e solo dopo verifica la condizione.
→ Le variabili definite nei cicli o in generale nelle interazioni (es. if/else) decadono alla chiusura di essi.
Ciclo simmetrico e asimmetrico
Ciclo simmetrico: a ≤ i ≤ b.
Eseguito (b-a+1)/c volte.
E asimmetrico: a ≤ i < b.
Eseguito (b-a)/c volte.
Variabili
Variabili, visibilità - con tipi diversi di variabili, si possono definire variabili, con una stessa lettera se la loro visibilità termina prima di definirne un'altra (devono essere entrambe chiuse con graffe).
Variabili sovrapposte prevede la variabile locale.
Locali - dentro un enumerato di un metodo (creato quando viene eseguito un metodo). Termina con il metodo con la quale è definito.
Parametro - creato quando viene eseguito un metodo. Termina con il termine del metodo.
Esemplare - creata e eliminata con l'oggetto. Definito una volta, vale su base ed è utilizzabile da ogni oggetto della classe ma in un modo diverso. È definita per oggetto.
Non si inizializza o pensa il costruttore.
Es. se lo uso per il numero di account bancari ottengo tutti numeri progressivi.
Statiche - condivisa da tutti gli oggetti della classe. Si definiscono con "static" e si inizializza.
Es. se la uso per il numero di account bancari, tutti cambiano la stessa variabile ed ottengo numeri progressivi.
Parametri
Parametri → espliciti o variabili.
Es. account.deposit (500).
Fondamenti di Informatica Pagina 24.
Parametri => costanti o variabili.
Es. account.deposit(500).
Parametro implicito.
Metodo implicito.
Parametro esplicito.
Metodo esplicito.
Lo indica l'oggetto a cui si riferisce.
Es. this.balance.
Parametro implicito.
Metodo implicito.
Non serve scrivendo o.s. riferisce alla classe Banking.
Costanti e array
Costanti: public/private final double costante.
Valore fisso (costante).
Array/vettori: classeElementi nomeVettore[ ] = new classeElementi (numeroElementi).
Metodo static: per richiamare il metodo devo usare => classe.metodo().
Non si riferisce ad oggetti.
Metodo non static: per richiamare il metodo devo usare => oggetto.metodo().
Si riferisce ad oggetti.
Fondamenti di informatica Pagina 25.
Le classi
Le classi... permettono nuove variabili, che è ...
Le classi sono riconoscibili... modifica del calcolo ...
Cosa puó avere una classe.
Necessità.
Nome -> BankAccount... e ...
Tipo ...
Nome costruttore.
P. modificatore.
P. variabile ...
I costruttori
I costruttori.
Invocazione ... valori ... nomeClasse.
Non sono metodi perché non possono restituire nulla, perché non possono ...
Non possono rilevare static (Java).
... all'interno ... variabili ...
Accesso ai campi come nomeClasse ... parametro ... parametro.
L'interprete analizza immediatamente valore ...
In modo visibile i metodi possono cambiare ...
Quando un programma ... ... oggetti.
Es. rettangolo.
Metodi e variabili di istanza
Metodi / accessori ... se con simbolo.
Ridefiniscono un nome senza ridurlo, incrocio modificabile tagliato x come usa ... una classe.
Nuovo BankAccount ...
O più BankAccount accesso (new BankAccount()).
... oggetti ... calcoli (invocatore).
Metodo / costruttori con la stessa ...
... ... sovraccarico idee nome...
Variabili di istanza... possibili pubblici o privati.
Fine metodi delle classi, ... metodi delle ...
Variabili caratteristiche oggetti del ...
Classe.
Attributi.
Campo.
Oggetto.
Di solito metodi ... ... variabili di esempio.
Variabili di esempio.
Incapsula... ... ... ... accesso ... un oggetto utile per proteggere le modalità...
Per realizzare un conto bancario
Per realizzare un conto bancario.
public class BankAccount... balance... / costruttore... equals ...
Costruttore visibile a esempio ...
Return.
Ritorna un solo valore ...
public class BankAccount{ ... balance; public BankAccount() //costituzione { balance = 0; } public BankAccount ... costruttore { balance = ... // massima 100 }}
Balance ... valore uguale pubblico... ... il tipo ... tipo numerico... esempio ...
return ... BankAccount{ ... balance;}
Costruttore ...
Costruttore ... esiste.
public BankAccount ... esempio.
private void deposit (double ...){ //modello ... balance = balance + ...;}
... ... con metodo logico...
Pesare ... supplementare, curve ... costruttore.
Nuovo коструктор perché ... nuovo ... ... null...
Visibili assegnabili ad un oggetto per dire ...
Null
Null.
Constructor vi avanzabili con un ... per dire nulla.
Null.
Può causarmi dei casini.
Ponendo null accanto ad un oggetto, poi dire null.
Cosa Returnera?
String greeting = "Hello"; // stringa normale | String b = greeting; // stringa normale | String str = "ciao"; // stringa normale | StringBuffer str = new StringBuffer ();
Int a =2 7;
null x3 = new String.length (); // non crea.
N.B.
Quindi tutto ciò che ben non deve esser usato per che ha detto sei null darà l'errore NullPointerException.
Collabora Object.
Ovvero usano queste cose quando ... restrittivo e nodo 1.
public class ... return a ... {...}}
Classe ... Base Altarea{add =, impid}{...}
Si vengono passati nel attributi, solo se sare concentric (Has more relatility).
Attributi, parametri e staticità
N.B - Attributi → prendere ... saizazione iper ... ...
Parametri → sono nei metodi ... restituisce sempre ... dove sta.
Statici {{ }}.
⇒ Attributi → rendono ... del modello invece che solo.
→ Parametri → essere uniformi e non seguire nome.
... attributi perché tutti gli oggetti della classe hanno lo stesso valore mentre i parametri in mano i valori. → staticità variabile.
Metodo statico non si chiede come pure oggetto, uso qualsiasi metodo al suo interno è statico.
Metodo non statico: ... a livello personale ... non seguire nomeOggetto.metodo interno.
UML
UML (unified modeling language).
Uml si usufruisce con + (public) - (privato).
Comando esattamente come lavora il Personal Operating System.
Variabili in Java funzionano per valore (passa per riferimento).
Oggetti in Java funzionano per riferimento (passa per valore).
Commenti
Commenti.
Mercoledì 19 ottobre 2022 09:47.
- // commento.
- /* commento * lungo.
/** @param + nome parametro + funzione @return + nome metodo + risultato */
Salvando il file come NomeClasse.html ottengo la documentazione con tutti i commenti divisi per metodi, classi e costruttori.
Eseguo con javadoc NomeClasse.java.
Fondamenti di informatica Pagina 28.
If / else
If / else.
/* fai x se "y" ↔ es. per controllare se prelevando soldi dal BankAccount questo va in rosso.
if (variabile 1 > variabile 2), variabile 1 = variabile 2; variabile 1.
if (amount //se amount è < = balance, esegue l'operazione, altrimenti non fa nulla.
Problema ↑ unico l'else che si esegue se non è verificato l'enunciato di if.
No { if (amount < = balance); if (amount > balance); . . . .
Si { if (amount < = balance); . . . . else { system.out.println ("conto in rosso"); balance = balance - over draft - penalty;} }
⟳ Aprire e chiudere sempre le graffe.
Si esegue il primo se si verifica la condizione, altrimenti si esegue il secondo.
Operatori logici
Operatori logici.
> maggiore.
< minore.
>= maggiore uguale.
<= minore uguale.
== uguale.
!= diverso.
✗ assegnazione — non c'entra.
Con if / else posso verificare i numeri in virgola mobile.
Se definisco una variabile dentro if essa decade alla chiusura della "}".
Dopo if non va ; e nemmeno dopo else ma va dopo le istruzioni per if ed else.
Fondamenti di informatica Pagina 29.
Interazioni
Interazioni.
A volte serve fare molte ripetizioni di qualcosa.
Ciclo while.
Eseguo l'enunciato finché la condizione non è verificata.
while (condizione) enunciato.
Problema — rischio cicli infiniti.
Se succede si usa ctrl + c per chiudere il programma oppure si uccide il [process id] dai comandi.
Enunciato for.
for (i = inizio; j { enunciati}
Finché è verificata la condizione prosegue a ripetere.
Esempio: invertire una stringa
import java.util.Scanner;
public class ReverseTester { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Inserire una stringa: "); String input = in.nextLine(); String out = ""; for (int i = 0; i char ch = input.charAt(i); out = input.charAt(i) + out; } System.out.println(out); }}
Cicli annidati
Cicli annidati.
Posso creare cicli con 1 o + while dentro 1 for o contrario.
Ora ci sono tre cicli annidati!
for (int n = 1; n