# Prugrammazzioni vutata a l'uggetti

Ntâ nfurmàtica, a **prugrammazzioni vutata a l'uggetti** (**PVU**, o **OOP** 'n ingrisi, *Object-Oriented Programming*), o macari **prugrammazzioni a uggetti**, è na manera di scrìviri prugrammi nfurmàtici (zuè un paradigma di prugrammazzioni) pi mezzu di uggetti ca pàrranu unu cu n'autru pi scanciàrisi dati e pi cancialli comu voli l'utenti. A prugrammazzioni vutata a l'uggetti è assai canusciuta picchì è addisignata pi a scrìviri còdici mudulari, zuè còdici chi si ponnu turnari a usari fàcili nta autri parti dû stissu pruggettu o di l'autri utenti. Nta sta manera, a prugrammazzioni vutata a l'uggetti ajuta u sbiluppaturi a manijari prugrammi assai granni e traficusi.

## Storia

U primu linguaggiu di prugrammazzioni vutata a l'uggetti fu Simula (1967). N'autru linguaggiu mpurtanti chi usava stu mudeḍḍu di prugrammazzioni era Smalltalk (1980), unni un prugramma è fattu di nu nzemi di uggetti chi parràvanu unu cu n'autru mannànnusi missaggi. Di l'anni '90, Java addivintau unu ntra i linguaggi di prugrammazzioni vutata a l'uggetti chi appi cchiù assai successu.

Oji cci sunnu assai linguaggi di prugrammazzioni chi suppòrtanu a prugrammazzioni vutata a l'uggetti, comu: Python, Java, C++, JavaScript, C#, Ruby, PHP, TypeScript, Kotlin e autri.

## Carattarìstichi

U cuncettu principali d'arrè â prugrammazzioni vutata a l'uggetti è ca tuttu è n'uggettu. Furmali, n'uggettu è na spicìfica istanza di na classi. L'uggetti tèninu i dati e i pruciduri chi travàgghianu cu ssi dati:

* I dati ponnu èssiri variàbbili e/o custanti (nùmmari, listi, ecc.). Ntâ prugrammazzioni vutata a l'uggetti si chiàmanu attribbuti, speci quannu sunnu dintra a n'uggettu.
* I pruciduri sunnu na seri di istruzzioni chi dìcinu ô computer chi fari e comu (pigghiari i dati misi di l'utenti, fari i càrculi, canciari i dati, dàrici u risurtatu a l'utenti, ecc.). Ntâ prugrammazzioni vutata a l'uggetti si chiàmanu mètudi. Nzèmmula, i mètudi di na classi fannu a so ntirfacci. Sulu i cumanni difinuti dâ ntirfacci ponnu èssiri chiamati di fora, e sulu pi mezzu dâ ntirfacci si ponnu lèggiri e canciari i dati dintra a n'uggettu.

A carattarìstica di spàrtiri l'usu di n'uggettu e a canuscenza dî minutagghi di comu funziona si chiama ncapsulazzioni. A ncapsulazzioni è unu dî tri cuncetti chiavi dâ prugrammazzioni vutata a l'uggetti. L'autri dui sunnu u polimurfìsimu e a riditarità. U polimurfìsimu pirmetti a uggetti diversi di fari a stissa cosa nta maneri diversi. A riditarità è l'abbilità di criari na classi partennu di n'autra classi cchiù ginirali, ma canciànnuci i mètudi.

## Esempiu

L'esempiu cca sutta fa vìdiri tutti i carattirìstichi chi cuntammu nzinu a ora. Criamu na classi `Sicilian` chi àvi n'attribbutu `name` (pû nomu dû cristianu) e un mètudu `introduce` (pû fari prisintari) chi cunteni un cumannu chi usa l'attribbutu `name`. U còdici è scrivutu 'n Python.

```
class Sicilian:
    def \_\_init\_\_(self, name):
        self.name = name
    def introduce(self):
        print(f"Sugnu {self.name}.")

class Palermitan(Sicilian):
    def introduce(self):
        print(f"Sugnu {self.name}. Salutamu!")

class Catanese(Sicilian):
    def introduce(self):
        print(f"Sugnu {self.name}. Sabbinidica!")

vicenzu = Palermitan("Vicenzu")
sarbaturi = Catanese("Sarbaturi")

vicenzu.introduce() # Sugnu Vicenzu. Salutamu!
sarbaturi.introduce() # Sugnu Sarbaturi. Sabbinidica!

```

## Autri paradigmi

A prugrammazzioni vutata a l'uggetti è ùtili assai quannu un prugramma si po spàrtiri nta cchiù assai parti, chi pàrranu fàcili unu cu n'autru, e quannu l'arguritmi sunnu agghiummarati ê dati chi ùsanu. Nta l'autri casi, è capaci ca autri maneri di scrìviri prugrammi nfurmàtici sunnu cchiù megghiu. Pi diri, a prugrammazzioni vutata a l'aspetti (AspectJ, AspectC11, ecc.) funziona bonu pi manijari ḍḍi azzioni chi pìgghianu tanti uggetti diversi tutti nzèmmula, comu u munituraggiu (*logging*), e a prugrammazzioni ginèrica (C++, D, Eiffel, ecc.) funziona bonu chî dati slijati.

Comu è-è, a majurìa dî linguaggi di prugrammazzioni sunnu n'ammiscu di paradigmi diversi. P'esempiu, Python cunzenti di scrìviri prugrammi usannu sia a prugrammazzioni vutata a l'uggetti e sia chiḍḍa prucidurali.

## Lijami di fora

* treccani.it,  Tìtulu mancante per url `url` (aiuto). Parametro sconosciuto `language` ignorato (aiuto); Parametro sconosciuto `title` ignorato (aiuto); Parametro sconosciuto `publisher` ignorato (aiuto)
* treccani.it,  Tìtulu mancante per url `url` (aiuto). Parametro sconosciuto `language` ignorato (aiuto); Parametro sconosciuto `title` ignorato (aiuto); Parametro sconosciuto `publisher` ignorato (aiuto)
* britannica.com,  Tìtulu mancante per url `url` (aiuto). Parametro sconosciuto `language` ignorato (aiuto); Parametro sconosciuto `title` ignorato (aiuto); Parametro sconosciuto `publisher` ignorato (aiuto)