Estratto del documento

Java Corso di base 2

Sommario

  • Introduzione OOP
  • Incapsulamento
  • Gestione dei file
  • Classi
  • Ereditarietà
  • Classe Math
  • Oggetti
  • Polimorfismo
  • Attributi e metodi
  • Overriding e Overloading
  • Metodi costruttori
  • Classi e metodi astratti
  • Getters and setters
  • Interfacce
  • Static vs. Non-static
  • Gestione eccezioni

OOP è acronimo di Object-Oriented Programming, ossia programmazione orientata agli oggetti. Mentre la programmazione procedurale si basa su metodi e procedure che operano sui dati, la programmazione OOP permette di creare oggetti che possono contenere sia dati che metodi.

Introduzione

I linguaggi di programmazione OOP più comuni sono Java, C++, Python, C#, Visual Basic .NET. La programmazione OOP presenta molti vantaggi tra cui:

  • Rapidità e semplicità di esecuzione;
  • Struttura dati chiara e comprensibile;
  • Ottima leggibilità del codice;
  • Riusabilità del codice e diminuzione dei tempi di lavoro (effort).

OOP segue il principio DRY, ossia “Don’t Repeat Yourself” (cercare di ridurre al minimo le ripetizioni di blocchi di codice). Il principio DRY si sposa molto bene con il motto di Java, WORA (“Write Once, Run Everywhere”).

I pilastri del mondo OOP

La programmazione OOP si basa sui seguenti concetti:

  • Classi
  • Oggetti

Inoltre un linguaggio di programmazione si può definire orientato agli oggetti quando consente di sfruttare i seguenti 3 meccanismi fondamentali:

  • Incapsulamento
  • Ereditarietà
  • Polimorfismo

Classi e oggetti

Una classe è una struttura dati astratta, ossia un ADT (Abstract Data Type), che rappresenta un’entità avente proprie caratteristiche (dette attributi) e propri comportamenti (detti metodi). Gli attributi sono concretamente delle variabili o costanti e il loro valore viene inizializzato dal metodo costruttore, che si occupa di assegnargli quando viene creato l’oggetto.

I metodi sono delle funzioni che operano sugli attributi, ad esempio il metodo accelera() può operare sull’attributo speed incrementandolo di 10 chilometri orari. Una classe permette l’esistenza di N oggetti aventi gli attributi e i metodi definiti in essa. Un esempio di classe può essere Automobile, in quanto ha degli attributi (lunghezza, larghezza, cilindrata..) e dei metodi (accelera, frena, svolta a sinistra..).

Tuttavia, ci possono essere tante automobili in circolazione, quindi tante entità classificabili come automobili, ciascuna avente sue caratteristiche (attributi) e comportamenti (metodi). Il concetto astratto di Automobile può essere visto come la classe, mentre tutte le automobili concretamente in circolazione rappresentano gli oggetti, ossia “istanze” concrete della classe Automobile.

Esempi

Esempio #1
Classe: Automobile
Oggetti: Mercedes, Ferrari, Audi

Esempio #2
Classe: Cibo
Oggetti: Tonno, Pasta, Pizza, Pomodoro

La classe può essere considerata quindi un template per gli oggetti, e ciascun oggetto è un’istanza della classe. Quando un oggetto viene creato, esso eredita tutte le variabili (attributi) e tutti i comportamenti (metodi) dalla classe a cui appartiene.

Java è basato sul paradigma OOP quindi è di fondamentale importanza comprendere i concetti di classe e oggetto. Per creare una classe in Java usiamo la keyword “class” e, solitamente, la vogliamo rendere pubblica utilizzando il modificatore di accesso “public”:

public class NomeClasse {
...attributi...
...metodi...
}

Esempio #1:
public class Automobile {
int cilindrata = 1500;
}

Esempio #2:
public class Persona {
String nome = “Pippo”;
}

Gli oggetti in Java

Per creare un oggetto in Java la sintassi è la seguente:

nome_classe nome_oggetto = new nome_classe();

  • nome_classe indica a quale classe l’oggetto appartiene;
  • nome_oggetto indica il nome dell’oggetto;
  • = è l’operatore di assegnazione;
  • new è la keyword che permette di creare un nuovo oggetto;
  • nome_classe() richiama il metodo costruttore dell’oggetto;

Esempio #1
Automobile audi = new Automobile();

Esempio #2
Persona p1 = new Persona("Mario", "Rossi");
Persona p2 = new Persona("Noemi", "Splendente");

Esempio #3
Cibo spuntino = new Cibo("crostata");

Esempio #4
Compito c1 = new Compito();

Esempio
public class Prova {
int x = 10;
public static void main(String[] args) {
Prova oggetto = new Prova();
System.out.println(oggetto.x);
}
}

Attributi e metodi

Il metodo di un oggetto è una property che permette di operare sugli attributi. La sintassi per richiamare un metodo è:

nome_oggetto.nome_metodo();

Quando, ad esempio, stampiamo i dati con System.out.println(), stiamo già applicando questo concetto: println() è il metodo che stiamo invocando su System.out

System.out.println("Benvenuto al corso di Java!");

Per accedere agli attributi possiamo creare un oggetto della classe, e usare il punto (dot syntax) per poi specificare a quale attributo vogliamo riferirci.

Esempio
public class Prova {
int x = 80;
public static void main(String[] args) {
Prova oggetto = new Prova();
System.out.println(oggetto.x);
}
}

Esempio
public class Persona {
String nome = "Marco";
String cognome = "Rossi";
int age = 21;
public static void main(String[] args) {
Persona p1 = new Persona();
System.out.println("Nome e cognome: " + p1.nome + " " + p1.cognome);
System.out.println("Age: " + p1.age);
}
}

I metodi essenziali

I metodi di base solitamente utilizzati nel mondo OOP sono:

  • Metodo costruttore con parametri;
  • Metodo costruttore senza parametri;
  • Metodi getters (per ottenere dati);
  • Metodi setters (per modificare dati).

Un metodo fondamentale per poter creare un oggetto è il metodo costruttore, che si occupa di inizializzare gli attributi. Ci sono due tipi di metodi costruttori:

  • Senza parametri: inizializza tutti gli attributi con i valori predefiniti inseriti dal programmatore.
  • Con parametri: inizializza tutti gli attributi con i valori passati come parametri del metodo da chi lo ha richiamato.

Il metodo costruttore senza parametri

La sintassi è la seguente:

public nome_classe() {
this.property1 = valore;
this.propertyN = valore;
}

Il metodo costruttore con parametri

La sintassi è la seguente:

public nome_classe(property1, propertyN) {
this.property1 = property1;
this.propertyN = propertyN;
}

Esempio:
public Persona(nome, cognome, eta) {
this.nome = nome;
this.cognome = cognome;
this.eta = eta;
}

La parola chiave "this"

La keyword “this” indica che ci stiamo riferendo all’oggetto corrente. “This” non è una variabile, e il suo valore non può essere modificato.

Esempio:
public Persona(nome, cognome, eta) {
this.nome = nome;
this.cognome = cognome;
this.eta = eta;
}

Il metodo qui sopra descritto prende in ingresso i parametri nome, cognome, eta e li assegna alle rispettive proprietà dell’oggetto Persona.

Getters and setters

I getters e setters sono metodi pubblici della classe e vengono implementati per consentire l’accesso e la modifica sicura degli attributi realizzando il meccanismo dell’incapsulamento.

  • Metodi getters: permettono di accedere ai valori degli attributi mediante un return statement.
  • Metodi setters: permettono di operare sugli attributi e modificarne il valore.

Getters

La sintassi è la seguente:

public tipo_di_ritorno getAttributo() {
return attributo;
}

Esempio:
public String getNome() {
return nome;
}

Nota: tipo_di_ritorno deve corrispondere al tipo dell’attributo corrispondente di cui si vuole ottenere il valore.

Setters

La sintassi è la seguente:

public void setAttributo(tipo_attributo attributo) {
this.attributo = attributo;
}

Esempio:
public void setNome(String nome) {
this.nome = nome;
}

Anteprima
Vedrai una selezione di 23 pagine su 108
JAVA: programmazione a oggetti (OOP) Pag. 1 JAVA: programmazione a oggetti (OOP) Pag. 2
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 6
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 11
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 16
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 21
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 26
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 31
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 36
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 41
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 46
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 51
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 56
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 61
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 66
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 71
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 76
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 81
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 86
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 91
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 96
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 101
Anteprima di 23 pagg. su 108.
Scarica il documento per vederlo tutto.
JAVA: programmazione a oggetti (OOP) Pag. 106
1 su 108
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher patrizio_riccardi di informazioni apprese con la frequenza delle lezioni di Tecniche di programmazione 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 Trieste o del prof Logar Alessandro.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community