Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni26 pagine

Informatica

Caricato da

nogik21947
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni26 pagine

Informatica

Caricato da

nogik21947
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 26

13/09/2021

java
programmazione ad oggetti
applet e serviet

strutture (if, else, while, do while, for)

15/09/2021
teorema di jacopini = ogni algoritmo può essere realizzato utilizzando le sole
tre strutture di controllo fondamentali: la sequenza, la selezione ed il
ciclo.
sequenza = insieme ordinato di istruzioni
selezione = esecutore deve fare una scelta, condizione o vera o falsa
ciclo = eseguire un'istruzione per un determinato numero di volte (altrimenti
si finisce in un ciclo infinito)

esempio: devi costruire una macchinina, se lo fai solo per modellismo ti


occupi della parte esteriore, mentre se lo fai per una gara ti occupi anche
del motore, la macchinina sarebbe il programma
nella programmazione ad oggetti cerco di modellizzare la realtà tramite
l'oggetto
scegliere bene l'astrazione
astrazione = semplificazione della realtà complessa
oggetto (classe):
-attributi
-metodi

P66 libro nuovo


16/09/2021

IDE per java:


netbeans (schifo)
eclipse
visual studio code + estensioni debugger

---

OOP (object oriented programming)


cerco funzioni per risolvere un problema (programmazione strutturata)
astrazione del problema in entità chiamate oggetti (classi)(programmazione ad
oggetti)
classi:
-metodi
-attributi

metodi = funzionalità dell'oggetto


attributi = caratterizzano l'oggetto

caratteristiche OOP:
-ereditarietà (singola o multipla)
-incapsulamento
-polimorfismo

UML (unified modeling language) = schema grafico per descrivere una classe

DICHIARAZIONE DI UNA CLASSE (java):


class NomeClasse
{
//attributi
//metodi
}

primo programma ad oggetti = simula (1967)

più classi posso interagire tra loro se gli attributi e metodi sono pubblichi

linguaggio macchina = linguaggio a basso livello


java = linguaggio ad alto livello
linguaggi ad altissimo livello = intelligenza artificiale
20/09/2021

linguaggio naturale = linguaggio che usano le persone per comunicare


linguaggio artificiale = linguaggio che usano le macchine per comunicare
linguaggio artificiale:
-basso livello = difficile per l'uomo, semplice per la macchina (assembler)
-alto livello = + vicino all'uomo per comunicare con la macchina
-altissimo livello = I.A.

linguaggio interpretato = la macchina esegue un’istruzione alla volta


linguaggio compilato = la macchina prima compila tutto il programma e poi lo
esegue
java = metà compilato e metà interpretato
21/09/2021

java = just another vacuum acronym


simbolo della tazza di caffè forse per il nome del caffè che gli sviluppatori
prendevano ogni mattina "java"
caratteristiche:
-orientato agli oggetti
-portabilità: programma funziona indipendentemente dall'hardware
-disponibilità di strumenti e librerie: sempre aggiornato
-sicurezza dell'esecuzione del codice: esecuzione automatica del codice senza
andare a interferire con i dati del calcolatore
-multithreading nativo: consente di sfruttare i vari modelli di processore

class hello {
public static void main (string args[])
{
system.out.println ("Hello, world!");
}
}

"string[] args" e "string args[]" sono la stessa cosa a livello sintattico


è consigliato per la compatibilità con le varie versioni di java di adoperare
"string[] args"

JVM = java virtual machine (ambiente di esecuzione di java)


componenti logici:
-un insieme di istruzioni (bytecode)
-un gruppo di registri
-uno stack (area di memoria per l'esecuzione dei metodi)
-heap (per istanziare gli oggetti) / garbace collector (distruttore
dell'oggetto inutilizzato)
-area di memoria per i metodi

22/09/2021
non ci sono puntatori in java
per questo c'è il garbage collector
ci sono i commenti (//) in java

java development kit (da scaricare)


java runtime environment (incluso nel kit)

identificatore = nome assegnato ad una variabile


parole chiave = parole riservate di un linguaggio che non possono essere
utilizzate come identificatori
tipi di dato in java:
-tipi primitivi: numerici (interi, virgola mobile), caratteri, booleani
-tipi di riferimento: array, classi

int vett[25];
int vet[]={1,2,3,4};

byte = 8 bit
short = 16 bit
int = 32 bit
long = 64 bit

java non utilizza la codifica ASCII ma la codifica Unicode

sequenze di escape:
\n = ritorno a capo
\t = tabulazione
\\ = backslash
\" = doppio apice

boolean = dichiarazione di una variabile booleana


boolean valore = true

casting = meccanismo che consente al programmatore di indicare la conversione


da un tipo di dato all'altro

operatore di concatenamento "+" = consente di concatenare una stringa con un


numero eseguendo automaticamente la conversione del numero in stringa

gestione input/output diverso in java rispetto a C

23/09/2021
struttura java diversa da C
java = case sensitive (bisogna stare attenti ai caratteri utilizzati)
fai attenzione alle maiuscole:
public static void main(String args[])
System.out.println("");

java = insieme di classi all'interno di un'unica classe principale


classe principale deve avere lo stesso nome del file

particolarità di java = lavora sulle interfacce


javascript = per siti web + elaborati
nel file html inserisci nome file collegato al file javascript
nella cartella del sito web inserisci entrambi i file (html e javascript)
javascript = linguaggio basato su java
P.426 libro 3 anno

01/10/2021

java = linguaggio "misto" (interpretato e compilato)


bytecode interpretato da jvm e poi eseguito
come compilare ed eseguire un programma in java:

differenza tra java runtime environment (jre) e java development kit (jdk)

jre serve per i programmi in generale e jdk serve in aggiunta per le


applicazioni
jdk / jre = ambiente di lavoro per eseguire programmi java
si possono eseguire programmi java:
-su sistemi operativi diversi
-su diverse piattaforme hardware (da x86 a dispositivi mobile (ARM))

jre = per pc che eseguono applet e app scritte usando la tecnologia java
jre = ambiente per eseguire applet e app scritte usando linguaggio java
jre = distribuito gratuitamente ed è disponibile su java.com
java standard edition (jse) = per sviluppatori di software che scrivono applet
e app usano tech java
jse = kit per lo sviluppo di applet e app scritte usando linguaggio java
jre = implementazione della jvm che esegue programmi java
jre = plug in per esecuzione di programmi java
jre = più piccolo di jdk
jre = include jvm, librerie di base e altri componenti aggiuntivi per eseguire
app e applet scritte in java
jdk = insieme di software per sviluppare app basate su java
jdk = serve per sviluppare applicazioni in java
jdk = più pesante
jdk = include jre, insieme delle classi API, il compilatore java, web start e
i file aggiuntivi per scrivere applet e app java

jre = implementazione della jvm, specifica per un s.o. e un'architettura


hardware, che esegue programmi java
include:
-jvm
-librerie di base
-componenti aggiuntivi per eseguire le app e applet scritte in java
jdk = estensione della jre che la contiene
jdk = insieme di software da usare per sviluppare le app basate su java
jdk = serve per sviluppare nuove applicazioni java
differenza con jre = contiene un compilatore java

piattaforme java EE, java se, java me e java fx


-standard edition
-enterprice edition
-micro edition
-fx java

tutte le piattaforme hanno:


-una jvm
-interfaccia di programmazioni delle applicazioni (API) (application
programming interface)

jvm = programma per particolare hardware e software che esegue applicazioni


java
api = raccolta di componenti sw che è possibile usare per creare altri
componenti o app software

ogni piattaforma java contiene:


-jvm
-api
ciò consente alle app scritte per quella piattaforma di funzionare su ogni
sistema compatibile con tutti i vantaggi del linguaggio di programma java:
-indipendenza della piattaforma
-potenza
-stabilità
-facilità di sviluppo
-sicurezza

JAVA SE
quando si pensa a java si pensa a java SE
api di java SE fornisce le funzionalità principali del linguaggio di
programmazione java
definisce tutto, dai tipi e oggetti di base del linguaggio di programmazione
java alle classi di alto livello usate per il networking, la sicurezza,
l'accesso al database, lo sviluppo dell'interfaccia grafica (gui) e l'analisi
xml
xml = linguaggio markup
xml = diverso nelle regole da html
xml = gestisce pagine web java
oltre all'api di base, java se è composto da una macchina virtuale, strumenti
di sviluppo, tecnologie di implementazione e altre librerie di classi e
toolkit comunemente usati nelle app java

JAVA EE
java EE è costruito sulla piattaforma java SE
java EE fornisce un ambiente api e di runtime per lo sviluppo e l'esecuzione
di app di rete su larga scala, multilivello, scalabili, affidabili e sicure

JAVA ME
java ME fornisce un'api e una macchina virtuale di dimensioni ridotte per
l'esecuzione di app di linguaggio java su dispositivi di piccole dimensioni,
come telefoni cellulari
api è un sottoinsieme dell'api java SE, insieme a librerie di classi speciali
utili per lo sviluppo di app su dispositivi di piccole dimensioni
le app java me sono spesso client dei servizi della piattaforma java EE

FX JAVA
tecnologia java FX è una piattaforma per la creazione di app internet scritte
in java FX scriptTM
le app scritte per la piattaforma java fx possono includere e collegare classi
di linguaggio di programmazione java e possono essere clienti di servizi di
piattaforma java EE
FX java è un insieme di librerie per progettazione di interfaccia utente java

due tipi di bundle jdk:


-java SE
-java EE
java SE comprende tutte le librerie che rappresentano il core della
piattaforma java
java EE include molte tecnologie che estendono le funzionalità di base della
piattaforma java, quindi include la java SE e la arricchisce dei seguenti
componenti:
-enterprise javabeans
-jndi
-jdbc
-jta
-jaxp
-jms

enterprice javabens definiscono un sistema a componenti distribuito che


rappersenta il cuore della specifica java EE
jdbc è un 'interfaccia per accesso a qualsiasi tipo di basi di dati (anche
nella se)
jta = sistema per il supporto delle transazioni
jaxp = per file xml
jms = per invio e gestione di messaggi

---

new = operatore per creare un nuovo metodo


04/10/2021

programmazione ad oggetti
il paradigma OOP è basato sul fatto che esiste una serie di oggetti che
interagiscono vicendevolmente, scambiandosi messaggi ma mantenendo ognuno il
proprio stato ed i propri dati
l'idea principale che sta dietro la programmazione ad oggetti risiede nel
mondo reale, ossia pensare ad un problema come si pensa nel mondo reale
le classi si scambiano i messaggi tramite i metodi

il concetto alla base della programmazione ad oggetti nasce dal principio:


ciò che importa non è l'implementazione interna del codice, ma le
caratteristiche e le azioni che un componente software è in grado di svolgere
paradigma OOP costituito da oggetti che si scambiano messaggi
in OOP:
-definiamo le classi
-associamo ad esse proprietà e metodi
concetti importanti di OOP:
-astrazione
-classe
-oggetto
proprietà di OOP:
-incapsulamento
-ereditarietà
-polimorfismo
-mascheramento di informazioni (information hiding)

classe = specifica categoria di oggetti, individuati da comportamenti (metodi)


e caratteristiche (attributi)
classe composta da:
-attributi = stato dell'oggetto
-metodi = operazioni applicabili agli oggetti
oggetto appartenente ad una classe = istanza della classe stessa
si possono creare due o più istanze di oggetti uguali, ma ciò non vorrà dire
che le due istanze eseguono la stessa operazione e che siano correlati nel
corso del programma
identità = univocità di ogni istanza
ogni oggetto diverso dagli altri oggetti della stessa classe
proprietà di un oggetto possono essere valori che variano nel tempo
stato di un oggetto = insieme di valori delle sue proprietà in un determinato
istante di tempo, se cambia anche solo una proprietà di un oggetto, muterà
anche il suo stato
classe = struttura di un oggetto
oggetto = risultato di una classe
oggetto = istanza di una classe

incapsulamento = impacchettare in un oggetto i dati e le azioni che sono


riconducibili ad un singolo componente
dividere un'applicazione in piccole parti

ereditarietà = meccanismo che consente di creare nuovi oggetti basati su altri


già definiti
oggetto figlio = oggetto che eredità tutte o parte delle proprietà e dei
metodi definiti dall'oggetto padre
oggetti figli avranno specifiche caratteristiche definite nelle rispettive
classi
modifiche apportate ad una classe padre le ereditano automaticamente le classi
figlie
non sempre un determinato metodo definito nella classe padre può produrre
risultati corretti e congruenti con tutte le classi figlie
in OOP ogni oggetto derivante da una classe padre può ignorare alcuni metodi
riscrivendo tali metodi al suo interno (overriiding)
overriding = sovrapporre dei metodi
overload = sovraccarico dei metodi
ereditarietà multipla = ereditarietà da più classi padre
ambiguità dei nomi = eredito una proprietà o metodo con lo stesso nome

polimorfismo = oggetto può assumere più forme


polimorfismo relativo ai metodi degli oggetti
information hiding = separazione tra l'implementazione e interfaccia di un
oggetto

ADT (abstract data type)


dato astratto = tipo di dato completamente specifica ma indipendente da una
sua particolare implementazione, modello per ottenere classi derivate più
specifiche e più dettagliate

ereditarietà

polimorfismo
05/10/2021

DICHIARAZIONE DI UNA CLASSE:


class NomeClsse
{
//attributi
//metodi
}
in genere il nome della classe inizia con una maiuscola

DICHIARAZIONE DI UN OGGETTO:
NomeClasse nomeOggetto;
in genere il nome di un oggetto inizia con una minuscola

CREAZIONE DI UN ISTANZA:
nomeOggetto = new NomeClasse();

METODO MAIN
-è pubblico (public)
-è statico (static)
-non restituisce nulla (void)
-gli eventuali parametri in input forniti dall'utente sulla riga di comando,
costituiscono un vettore di stringhe
ogni classe può avere il metodo main
il programma parte dal metodo main
senza di esso il programma non parte

classe astratta e metodi astratti


programma = insieme di file
classe = file.java
programma = insieme di classi
package = parti del programma java
package = serve a programmatori professionisti e possono dichiarare una classe
con lo stesso nome di un'altra classe in un altro package
import java.io.* = importo l'intero gruppo di package

static final double Pi_greco=3.1415; = dichiarazione di una costante


static = lo posso richiamare indipendentemente se ha un oggetto o meno
static fa riferimento alla classe
final = lo puoi inizializzare una sola volta che sia in fase di
inizializzazione o dichiarazione (può assumere un solo valore)
stringa+stringa = concatenamento della stringa
07/10/2021

una volta creata la classe bisogna creare un oggetto


per dichiarare questa variabile usiamo il metodo
NomeClasse nomeOggetto;
per dichiarare più oggetti dello stesso tipo:
Cerchio tavolo, ruota;

istanziare un oggetto:
tavolo=new Cerchio();
Cerchio tavolo=new Cerchio() //dichiarazione e allocazione
11/10/2021

VISIBILITA' CLASSI, METODI E ATTRIBUTI


in OOP è importante la definizione dei livelli di visibilità di metodi e
attributi
livelli visibilità:
-public
-protected
-private
-package
una classe ha sempre accesso e visibilità a tutti i suoi metodi e attributi
nel package è simile per tutte le classi appartenenti allo stesso package
nel mondo esterno si ha accesso solo a visibilità public

quando si definisce una classe bisogna determinare livello di visibilità


se definisci metodi public si perde l'incapsulamente perché ogni elemento è
visibile dall'esterno
se una classe ha tutti i metodi e proprietà private è una classe
inutilizzabile

---

LINGUAGGIO JAVA
this = faccio riferimento all'oggetto corrente
metodo costruttore = serve ad assegnare un valore iniziale agli attributi del
nuovo oggetto creato
costruttore di copia e default
copia = costruttore a cui viene fornito come argomento un oggetto istanza
della stessa classe per realizzarne un clone copiandone i singoli attributi
default = privo di argomenti che inizializza gli attributi a un valore
predefinito
12/10/2021

java = case sensitive


case sensitive = maiuscole e minuscole sono caratteri diversi
nomi classi iniziano con maiuscole
nomi metodi, attributi e variabili iniziano con minuscole
nomi composti usano camel case
camel case = parole senza carattere di separazione, dove ogni lettera iniziale
è una maiuscola
nomi devono descrivere ciò che vado a fare
parole complete e non abbreviate
parole non lunghissime
parole omogenee in tutto il codice

TIPI PRIMITIVI DI DATO


int
long
short
float
double
byte
boolean
char

classe wrapper contiene una variabile di tipo primitivo, che viene capsulato
come variabile di primo tipo e la considero come oggetto

byte = Byte
boolean = Boolean
char = Character
int = Integer
long = Long
short = Short
float = Float
double = Double

ogni classe wrapper ha un unico tipo che ha al suo interno il valore

public class EsempioInteger {


public static void main (String args[]){
int n=100;
Integer numero = new Integer("10");
n=n*numero();
System.out.println("N"+n);
}
}

con classe wrapped non devo importare nulla


se estraggo un tipo dalla classe wrapped si chiama boxing e unboxing
conversione da tipo ad oggetto e viceversa

---

esercizio
progettare mediante un diagramma UML e implementare in java una classe CD i
cui oggetti rappresentano CD audio
ogni CD:
-titolo
-autore
-numero brani
-durata

metodi:
-costruttore che come parametri titolo, autore, numero brani e durata
-getTitolo, getAutore, getDurata, getBrani
-setTitolo, setAutore, setDurata, setBrani
-toString (convertire la stringa)
toString = riprende tutte le stringhe e le unisce in un'unica stringa
19/10/2021

output = membro statico della classe system


metodi:
-System.out.println (stringa) //va a capo
-System.out.print (stringa) //non va a capo

input = classe scanner (import java.util.Scanner)


Scanner in = new Scanner(System.in); //in = oggetto Scanner (si può chiamare
come
//vuoi
int <variabile> = in.nextInt(); //inserisci input nella variabile

programma in java:
leggi un numero e vedi se è pari o dispari

import java.util.Scanner;
public class Input{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
System.out.print("Inserisci un numero intero: ");
int a = in.nextInt();
if(a%2==0) System.out.println("Il numero inserito è pari.");
else if(a%2!=0) System.out.println("Il numero inserito è dispari.");
}
}
10/11/2021

string e array in java = oggetto


int vector = new int [5]
con unicode si usano più simboli rispetto a ascii
lenght = metodo string
stringhe non sono array di caratteri ma sono oggetti
sottostringhe
matrice funziona allo stesso modo
11/11/2021

int vettore = new int [25]


array in java = oggetto
viene allocata solo la variabile
operatore di concatenazione = + (polimorfico)
operatore algebrico = +
polimorfico = assume diverse forme (concatenazione oppure somma)
array list = interfaccia per inizializzare un vettore (import
java.util.Arraylist)
interfaccia = una specie di libreria

Import java.util.Arraylist;
import java.util.Collection;
public class Invert{
public static void main(String args[]){
Arraylist arrlist = new Arraylist();
Arrlist.add(“value”);
System.out.println(“Ordinato ”+arrlist);
Collection reverse(arrlist);
System.out.println(“Inverso ”+arrlist);
}
}

leap = memoria che contiene le istanze

string s1 = "stanco" //costante


string s2 = "stanco" //costante
in questo caso s1 ed s2 vengono visti come costanti, che fanno riferimento
allo stesso valore, quindi uguali

string s1 = new String ("alfa") //istanza


string s2 = new String ("alfa") //istanza
in questo caso s1 ed s2 vengono visti come istanza di oggetto, diversi
all'interno del leap, e quindi diversi se messi a confronto
15/11/2021

int valori = new int[5]


valori[0]=1;
valori[1]=2;
valori[2]=3;
valori[3]=4;
valori[4]=5;

length = dimensione vettore

System.out.println(339+1116798+" numero di telefono "+1+5);


restituisce = 1117137 numero di telefono 15
System.out.println(""+339+1116798+" numero di telefono "+1+5);
restituisce = 3391116798 numero di telefono 15

se dei numeri sono preceduti da una stringa di caratteri ("") allora +


svolgerà la funzione di concatenazione e non di somma

classe = astrazione che indica un insieme di oggetti che condividono le stesse


caratteristiche (attributi) e funzionalità (metodi)
istanziare = creare fisicamente la classe
oggetto = istanza di una classe
dichiarare un oggetto = definire il nome e associargli un nome, e non
significa creare un oggetto
tipo nomeoggetto //dichiarazione di un oggetto
tipo nomeoggetto = new tipo (); //creazione di un oggetto
Punto punto1 = new Punto(); //è stato creato l'oggetto punto1 della classe
Punto

metodo = rappresenta funzionalità definite da una sequenza di istruzioni


contenute all'interno di un blocco delimitato da parentesi graffe
una volta definito il metodo potrà essere invocato più volte
metodo in genere contiene un verbo, per essere invocato deve essere dichiarato
dichiarando un metodo, lo si definisce e lo si rende disponibile al programma
metodo si dichiara all'interno della classe
livello di visibilità TipoRestituito nomeMetodo (parametri){
blocco di istruzioni
}
livello di visibilità = specifica se il metodo può essere visto e richiamato
da altri oggetti (opzionale)
parametri = elenco di variabili usate dal metodo, nel caso di più parametri
saranno separati dalla virgola
variabili locali = variabili usate all'interno del metodo
metodo statico = simile al concetto di funzione

metodi costruttori = usati per inizializzare le variabili di istanza o di


oggetto
21/11/2021

astrazione e riuso:
-funzionale (metodi)
-dei dati (classe)
-del sistema
Concettuale
22/11/2021

programmazione ad oggetti - oggetti, classi, metodi


oggetto:
-interfaccia pubblica
-parte interna
incapsulamento = accesso controllato ai dati mediante i metodi
1. dichiaro private gli attributi
2. creare metodi public

public class Data { //definizione classe


public int giorno;
public int mese; //attributi
public int anno;
}
Data unaData = new Data(); //creazione di un oggetto
unaData.giorno = interfaccia.GiornoInserito;

metodi get e set per controllare accesso ai dati (private e public)


24/11/2021

incapsulamento = accesso controllato ai dati


-private per gli attributi
-metodi pubblici (per accedere agli attributi di tipo privato)
set e get

public class Data {


private int giorno;
private int mese;
private int anno;
}
public void setGiorno(int g) {
if(g>0 && g<=31) {
giorno = g;
}
else {
System.out.println("Il valore non è valido")
}
}
public int getGiorno() {
return giorno;
}
26/11/2021

get si usa nel system


this = per riferirsi
incapsulamento = metodi pubblici e attributi privati

incapsulamento = get / set / this


ereditarietà = extend
astrazione = classi e oggetti

public class Client{


private String nome;
private String indirizzo;
private String numeroTelefono;
public Cliente (String nome, String indirizzo, String numTelefono)
03/11/2021

Classe:
-variabili
-metodi
-costruttore
Variabili:
-di istanza (fuori dal metodo)(attributo)
-locali (dentro il metodo)
-parametri (che si passano al metodo)
Metodi = azioni che può fare l’oggetto / lo dichiaro dentro la classe / uso il
dot (.) per accedere al metodo (Oggetto.Metodo)
Modificatori di accesso = public, private, package, protected (ereditarietà),
static, final
Public e private per incapsulamento
Static non si può usare per incapsulamento
Static insieme a public mi fa capire che ho una funzione
Con static è come se programmassi con le funzioni e non ad oggetti
Final viene usato per le costanti
Protected viene usato per ereditarietà
Se non metto nessun modificatore alla classe, essa sarà accessibile solo alle
classi di quel package (visibilità di package o di default)

Potrebbero piacerti anche