Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione alla Programmazione Orientata agli Oggetti (OOP): Concetti base e principi, Appunti di Informatica

Una introduzione alla programmazione orientata agli oggetti (oop), un modello di programmazione diffuso che offre un approccio risolutivo differente attraverso l'approccio a oggetti. Esploriamo i principi fondamentali, come modularità, incapsulamento e protezione dell'informazione, e introdurremo concetti come astrazione, classi, ereditarietà e encapsulamento. Verranno inoltre presentate le fasi del processo oop: ooa, ood e oop.

Tipologia: Appunti

2022/2023

In vendita dal 13/02/2024

giovanni21-
giovanni21- 🇮🇹

23 documenti

1 / 8

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
OOP
INTRODUZIONE
La programmazione a oggetti,OOP, rappresenta il modello di programmazione più diuso."
La OOP nasce verso la fine degli anni 80 come superamento della programmazione di
tipo procedurale, ed è una propria e vera rivoluzione."
Le fasi di realizzazione di un programma: MODELLO A CASCATA"
-analisi del problema"
-Progettazione "
-Codifica "
-Test"
-Installazione "
-Manutenzione"
“Crisi del software”, evoluzione esponenziale dell’hardware e la riduzione dei costi delle
macchine e degli OS ha reso sproporzionati e preponderanti i costi di sviluppo e
manutenzione del software applicativo, nella componente sia correttiva sia adattiva."
Ciascun linguaggio ore i proprio strumenti per migliorare l’espressività del programmatore."
Paradigma -> modello che permette al programmatore di descrivere astrattamente l’algoritmo."
CRISI DEL SOFTWARE e OOP
Le motivazioni della crisi di software, 3 cause fondamentali: "
-crisi dimensionale"
-Crisi gestionale"
-Crisi qualitativa"
La crisi dimensionale ha origini di natura essenzialmente tecnologica."
La crisi gestionale è essenzialmente dovuta alla crescita sproporzionata dei costi per
eettuare la manutenzione del software, sia correttiva si adattiva: poteva capitare che per
ogni modifica da eettuare ci fosse il bisogno di tutto il team."
La crisi qualitativa è anch’essa legata sia alla crescita delle richieste si al fatto che gli
strumenti a disposizione dei programmatori sono risultati insucienti per ottenere
software di qualità e proprietà desiderate; i linguaggi imperativi e la programmazione
strutturata non si sono dimostrati strumenti ecaci."
Il software di buona qualità deve invece essere: "
protetto, modulare, riusatile, documentato, incrementabile ed estensibile."
La programmazione a oggetti si propone come una nuova metodologia, con un approccio
risolutivo completamente diverso: l’approccio a oggetti."
Il linguaggio OOP impone l’utilizzo di principi fondamentali della programmazione ad
oggetti; si possono riassumere nei concetti:"
di modularità, incapsulamento, protezione dell’informazione."
(Il primo linguaggio di programmazione orientato agli oggetti su il “Simula”)"
pf3
pf4
pf5
pf8

Anteprima parziale del testo

Scarica Introduzione alla Programmazione Orientata agli Oggetti (OOP): Concetti base e principi e più Appunti in PDF di Informatica solo su Docsity!

OOP

INTRODUZIONE

La programmazione a oggetti,OOP, rappresenta il modello di programmazione più diffuso. La OOP nasce verso la fine degli anni 80 come superamento della programmazione di tipo procedurale, ed è una propria e vera rivoluzione. Le fasi di realizzazione di un programma: MODELLO A CASCATA

- analisi del problema

- Progettazione

- Codifica

- Test

- Installazione

- Manutenzione

“Crisi del software”, evoluzione esponenziale dell’hardware e la riduzione dei costi delle macchine e degli OS ha reso sproporzionati e preponderanti i costi di sviluppo e manutenzione del software applicativo, nella componente sia correttiva sia adattiva. Ciascun linguaggio offre i proprio strumenti per migliorare l’espressività del programmatore. Paradigma -> modello che permette al programmatore di descrivere astrattamente l’algoritmo. CRISI DEL SOFTWARE e OOP Le motivazioni della crisi di software, 3 cause fondamentali:

- crisi dimensionale

- Crisi gestionale

- Crisi qualitativa

La crisi dimensionale ha origini di natura essenzialmente tecnologica. La crisi gestionale è essenzialmente dovuta alla crescita sproporzionata dei costi per effettuare la manutenzione del software, sia correttiva si adattiva: poteva capitare che per ogni modifica da effettuare ci fosse il bisogno di tutto il team. La crisi qualitativa è anch’essa legata sia alla crescita delle richieste si al fatto che gli strumenti a disposizione dei programmatori sono risultati insufficienti per ottenere software di qualità e proprietà desiderate; i linguaggi imperativi e la programmazione strutturata non si sono dimostrati strumenti efficaci. Il software di buona qualità deve invece essere: protetto, modulare, riusatile, documentato, incrementabile ed estensibile. La programmazione a oggetti si propone come una nuova metodologia, con un approccio risolutivo completamente diverso: l’approccio a oggetti. Il linguaggio OOP impone l’utilizzo di principi fondamentali della programmazione ad oggetti; si possono riassumere nei concetti: di modularità, incapsulamento, protezione dell’informazione. (Il primo linguaggio di programmazione orientato agli oggetti su il “Simula”)

ASTRAZIONE, OGGETTI e CLASSI Con la programmazione a oggetti è possibile modellare la realtà in modo più naturale e vicino all’uomo ASTRAZIONE È il primo importante strumento di lavoro nella fase di progettazione di un sistema SW L’astrazione è il risultato di un processo, detto appunto di astrazione, secondo il quale, assegnato un sistema, si possono tenere nascosti alcuni particolari evidenziando invece quelli che si ritengono essenziali ai fini della corretta comprensione del sistema. l'astrazione nasce dall'individuazione di proprietà simili tra certi oggetti, situazioni o processi del mondo reale e dalla decisione di concentrarsi su quelle queste proprietà simili ed di ignorare, temporaneamente, le loro differenze. oggetti simili hanno comportamenti uguali (metodi) e caratteristiche specifiche (attributi) che li differenziano tra loro: sono raccolti in classi, in essa vengono descritti i comportamenti e le proprietà degli oggetti. CLASSE La classe è l'elemento base della OOP e un programma oggetti è costituito da un insieme di classi che genere che generano oggetti che tra loro comunicano con scambi di messaggi. EREDITARETA’ Sei una classe non soddisfa appieno le esigenze specifiche di un caso particolare è possibile completarla: si parla di classe ereditata e dell’ereditarietà, che permette di modellare e specializzare le classi già esistenti. INCAPSULAMENTO Nella OOP si realizza quello che comunemente prende il nome di “information hiding”, cioè l'incapsulamento, fornendo all'utente un meccanismo di interfacciamento che garantisce il mascheramento del funzionamento interno dell’oggetto: solo attraverso l'interfaccia si interagisce con la classe e la classe stessa comunica all’esterno solo per “cosa fa” e non per “come lo fa”. VANTAGGI DELLA OOP Alcuni concetti fondamentali di un progetto di sistema informatico:

- è inutile riscrivere software che qualcuno ha già scritto

- Un programma deve essere in grado di adattarsi alla complessità del problema e del

sistema senza dover intervenire radicalmente sul codice

- Un programma deve essere in grado di adattarsi alla tecnologia

Dai principi fondamentali della programmazione oggetti ci accorgiamo che essa è la risposta ogni esigenza

OOP CLASSI e OGGETTI

Un programma OOP si basa essenzialmente sull’utilizzo di moduli software già preparati GLI OGGETTI e LE CLASSI L’elemento fondamentale nella OOP è l’oggetto, questa è la rivoluzione per cui la OOP può considerarsi come un nuovo paradigma che riunisce codice e dati. La programmazione OOP l'oggetto è dunque un'istanza di una classe. Tra classe oggetto vi è la stessa relazione che sussiste fra un tipo e una variabile del paradigma imperativo. Sottolineiamo altri due aspetti fondamentali di questa relazione:

- le classi definiscono dei prototipi per gli oggetti: sono una specie di stampino che può

essere utilizzato per realizzare tanti oggetti dello stesso tipo.

- All'interno delle classi si incapsulano i dati e le funzioni, dove le funzioni sono

strettamente correlate con i dati che manipolano GLI OGGETTI Ogni ogni oggetto, è generalmente differente dagli altri, cioè ha proprietà (attributi) che lo caratterizzano, mentre condivide con gli altri suoi simili il comportamento. Definizione di oggetto: Un oggetto è un'entità astratta dotata di specifici attributi e in grado di cooperare con gli altri oggetti svolgendo specifiche azioni. Un oggetto oggetto e quindi la rappresentazione di una qualsiasi cosa che ha uno Stato è un comportamento: Esempio: OGGETTO: Gatto

- ha caratteristiche specifiche: peso, colore del pelo, età

- Compie azioni, come: correre, dormire, bere

Due oggetti gatto si distinguono tra loro per il colore, la razza, l'età, il peso eccetera, Cioè per tutte le caratteristiche fisiche individuali di ogni animale, ma tutti i gatti mangiano, corrono, bevono il latte eccetera, allo stesso modo. LE CLASSI La classe costituisce la base della OOP: essa descrive la natura di un oggetto e ne definisce il suo comportamento. Una classe è un ”modello” per un insieme di oggetti “analoghi”, caratterizzati:

- dalla stessa rappresentazione interna

- Della stessa operazioni con lo stesso funzionamento, che permettono di descrivere un

insieme di oggetti che hanno gli stessi attributi (variabili) eseguono le stesse operazioni (funzioni o metodi)

La classe si può pertanto definire come lo schema base dal quale è possibile creare singoli oggetti.

La descrizione dei metodi e delle variabili è contenuta all'interno della classe. Tutti gli oggetti istanza di una stessa classe:

- condividono la stessa struttura interna e lo stesso funzionamento

- Hanno ciascuno la propria identità e il proprio stato

Nella progettazione di una classe è necessario:

- definire (e nascondere) la rappresentazione dei dati all’utente

- Definire tutte le operazioni applicabili agli oggetti

- Garantire che l'utente possa manipolare gli oggetti solo tramite operazioni il tipo di dato

astratto a cui gli oggetti appartengono All'interno della classe è possibile specificare il tipo di visibilità e i dati e i codice tramite i seguenti modificatori di accesso:

- public, pubblica

- Private, privata

- Protected, protetta

RAPPRESENTAZIONE IN UML

Nell'ambito dell'ingegneria del software è stato definito un apposito linguaggio per la descrizione grafica dei progetti, il linguaggio UML. Per le casse sono previsti due vani di rappresentazione:

- sintetica, che utilizza utilizza un rettangolo con tre sezioni dove viene indicato solo il

nome della classe

- Completa, che utilizzo un rettangolo con indicati anche gli attributi e metodi

Anche per gli oggetti la notazione simile, ma il rettangolo ha solo sezioni:

- la rappresentazione sintetica utilizza una rettangolo con solo il nome

- La rappresentazione completa utilizza un rettangolo con indicati anche i valori degli

attributi

METODI e CREAZIONI di OGGETTI

LA SCRITTURA DEI METODI

La classe è composta da attributi e metodi dove i metodi non sono altro che le funzioni che possono modificare il valore degli attributi. Possiamo distinguere alcune categorie di metodi:

- costruttori/distruttori, che servono per creare l'oggetto in memoria, cioè al locale lo

spazio necessario per memorizzare gli attributi e lasciarlo al termine dell'utilizzo dell’oggetto

- Modificatori, chiamati anche getter/setter, che servono a poter leggere/ scrivere negli

attributi che, per rispettare l’incapsulamento, vengono dichiarati privati. Affinché un metodo possa essere utilizzato al di fuori della classe deve essere dichiarato di tipo pubblic: insieme nei metodi pubblic costituisce l'interfaccia della classe che gli permette di interagire col mondo esterno. COSTRUTTORI La OOP mette di metodi che servono per la creazione dell’oggetto: costruttori. Un metodo costruttore è un metodo particolare, che si distingue dagli altri per tre elementi:

- ha lo stesso nome della classe

- Non ha tipo di ritorno, nemmeno void

- Ha visibilità pubblic

Il costruttore di default è il costruttore che viene automaticamente creato quando si dichiara una classe e non contiene alcun codice Oltre al costruttore di default nella classe si inseriscono generalmente altre costruttori che però hanno uno o più parametri in ingresso, in modo che, alla creazione dell’oggetto, l'utilizzatore possa contemporaneamente assegnare dei valori ai suoi attributi. OVERLOADING La possibilità offerta del linguaggi a oggetti di consentire la coesistenza di più metodi con lo stesso nome prende il nome di overloading Classe può contenere più costruttori e metodi con lo stesso nome pur distinti da intestazioni (signature) diverse, cioè:

- con un numero diverso di parametri

- Con numero uguale di parametri ma di tipo diverso

- Con un numero uguale di parametri ma con ordine diverso

DISTRUZIONE DEGLI OGGETTI

Ricordiamo solamente che il costruttore serve per effettuare tutte quelle azioni di “pulizia” che risultano necessari prima della deallocazione dell’oggetto, ovvero:

- del locale i dati dinamici che sono stati collocati da funzioni ma il numero dell’oggetto

- Chiudere i file che sono stati aperti dalle funzioni membro dell’oggetto

Public void finalize(){}

METODI GETTER/SETTER

Per ogni attributo vengono scritte due funzioni che, che a seconda delle situazioni, possono essere definite pubbliche o private, antecedendo il nome del metodo l'opportuno qualificatore (o modificatore) CREAZIONE DI OGGETTI IN JAVA Nome classe nome oggetto = new nome classe(); INVOCAZIONE DEI METODI Oggetto.metodo DUPLICAZIONE DI OGGETTI E COSTRUTTORE DI COPIA Dado dado3 = new Dado(dado1)