Programmazione ad oggetti
description
Transcript of Programmazione ad oggetti
![Page 1: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/1.jpg)
OOPPROGRAMMAZIONE AD OGGETTI
![Page 2: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/2.jpg)
Prima della OOP
Prima della programmazione orientata agli oggetti c’era un tipo di programmazione non strutturata, il programma era costituito solo da un blocco di codice detto main, i dati venivano manipolati in maniera sequenziale ed erano rappresentati da variabili di tipo globale, insomma era un tipo di programmazione limitata e piena di svantaggi.
Successivamente si usava la programmazione procedurale
La programmazione modulare
E infine quella orientata ad oggetti
![Page 3: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/3.jpg)
La OOP
La programmazione ad oggetti è un sistema complesso, viene visto come un insieme di oggetti che interagiscono tra loro, questi sono caratterizzati da attributi e metodi.
La classe serve a modellare un insieme di oggetti dello stesso tipo.
La programmazione orientata agli oggetti si basa su alcuni concetti fondamentali: Classe
Incapsulamento
Oggetto
Ereditarietà
Polimorfismo
![Page 4: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/4.jpg)
CLASSE
E’ un raggruppamento degli oggetti con la stessa proprietà, cioè le sue caratteristiche e gli stessi metodi, cioè le azioni che possono compiere.
Una classe funge da tipo per un determinato oggetto ad essa appartenente.
L’istanza è un determinato oggetto di una classe.
La classe è dotata da un interfaccia e un corpo.
Gli oggetti invece comunicano tra loro tramite la loro interfaccia
![Page 5: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/5.jpg)
Incapsulamento
L'incapsulamento è un meccanismo che raccoglie i dati e i metodi all'interno di una struttura nascondendo l'implementazione dell'oggetto, cioè impedendo l'accesso ai dati con altri mezzi diversi dai servizi proposti.
Permette di garantire l'integrità dei dati contenuti nell'oggetto.
Possiamo definire dei livelli di visibilità degli elementi della classe: privato, pubblico e protetto; definiscono i diritti di accesso ai dati, secondo la classe dalla quale si accede. Privato: classi esterne non possono accedere
Pubblico: tutte le classi, anche esterne possono accedervi
Protetto; ci accedono le classi ereditarie
![Page 6: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/6.jpg)
Costruttori e Distruttori
Costruttori: funzioni che creano un oggetto, devono essere richiamati ogni volta che si vuole istanziare un oggetto.
Conversione();
Distruttori: distruggono un oggetto, ne elliminano l’allocazione di memoria.
~Conversione();
![Page 7: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/7.jpg)
Interazione tra oggetti
Un oggetto invoca il metodo di un altro oggetto quando vuole avere delle informazioni sul secondo o quando vuole modificarne lo stato, quindi quando vuole conoscere o modificare i suoi attributi.
![Page 8: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/8.jpg)
Creazione di una classe
Per definire una classe usiamo la parola class, che ci permette di definire l’interfaccia della classe, seguita dal nome della classe; poi dichiariamo gli elementi protetti e privati:
class esempio{
public:
a;
b;
private:
c;
protected:
d;
}
![Page 9: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/9.jpg)
Operatori
L’ operatore new: alloca la memoria necessaria all’instanziazione dell’oggetto e ne ritorna la relativa locazione di memoria.
L’operatore delete: liberare la memoria utilizzata per l’oggetto, una volta che non ci servirà più.
Per riferirci ai metodi e attributi di un oggetto, invece del punto usiamo l’operatore freccia(->)
![Page 10: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/10.jpg)
Classe Astratta
Le classi astratte sono le classi prive di corpo, da sola non può essere istanziata, viene usata solo per svolgere la funzione di classe base, da cui le classi derivate possono ereditarei metodi.
Dichiarazione: abstract class NomeClasse
tecnicamente non si possono creare oggetti della classe, logicamente i suoi oggetti sono solo oggetti delle sottoclassi.
![Page 11: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/11.jpg)
Overloading
È una funzionalità specifica del C++
Permette di poter usare lo stesso nome per una funzione più volte all’interno dello stesso programma, a patto che gli argomenti forniti siano diversi
![Page 12: Programmazione ad oggetti](https://reader035.fdocumenti.com/reader035/viewer/2022062313/557beb33d8b42aab048b4bcc/html5/thumbnails/12.jpg)
I tipi di linguaggi
Linguaggi puri: ogni cosa è un oggetto
- Smalltalk
- Eiffel
Linguaggi ibridi: alcuni tipi di dati non sono oggetti C++
Java
Visual basic