# Programassion orientà a j'oget

La **Programassion orientà a j'oget** (OOP, da l'anglèis *object-oriented programming*) a l'é un paradigma ëd programassion ch'a organisa ël còdes com ogèt reaj o astrat, mincadun con proprietà e comportament definì. Sò but a l'é ëd creé sistema modular, riutilisàbij, e bej ëd manten-e, an aplicand ij prinsipi d'**incapsulament**, **eredità**, **polimorfism**, e **astrassion**. A l'é un dij paradigma pì dovrà ant lë svilup ëd software modern.

## Còsa a l'é la Programassion Orientà a j'Oget

La programassion orientà a j'oget a strutura ël còdes an unità ciamà "class" e "oget":

* **Class**: Në stamp ch'a definiss le proprietà (atribù) e ij comportament (métod) ëd n'oget.
* **Oget**: N'istansa ëd na class, ch'a esist an memòria e a peul anteragì con d'àutri oget.

Ij quatr prinsipi fondamentaj a son:

* **Incapsulament**: Stërmé ij detaj intern e espon-e mach lòn ch'a l'é necessari (es. variàbij privà con métod pùblich).
* **Eredità**: Creé neuve class basà su class existente për riduve la redondansa (es. na class "Vitura" ch'a erédita da "Veicol").
* **Polimorfism**: Possibilità ëd dovré n'oget ëd na sot-class an substitussion ëd na class pare, con comportament specìfich (es. métod "avala" ant na class "Fior" e "Can").
* **Astrassion**: Modelisé concet compless semplificandje an caraterìstiche essensiaj (es. na class "Utent" con nòm e email, sensa detaj técnich).

## Stòria

La programassion orientà a j'oget a l'ha soe rèis ant j'agn '60 con ël lengagi Simula, progetà për simulassion. Ant j'agn '70, Alan Kay a l'ha dësvlupà Smalltalk, ch'a l'ha formalisà ij concet OOP modern.
Ant j'agn '80, C++ (Bjarne Stroustrup) a l'ha portà l'OOP al C, rendendlo popolar ant l'angignerìa ëd sistema. Ant j'agn '90, Java a l'ha spantià l'OOP ant l'anformàtica comersial, con l'adossion ëd la JVM e l'architetura portàbil. Ancheuj, lengagi com Python, C#, e Ruby a deuvro l'OOP com na base.

## Tècniche e Process

* **Creassion ëd class**: Definì atribù e métod për modélisé n'entità.
* **Eredità singola e multipla**: Na class a peul eredité da un-a o pì class pare (a dipend dal lengagi).
* **Intërface**: Contrat ch'a definiss ij métod che na class a dev amplementé (es. ant Java).
* **Composission**: Costruì oget compless an dovrand oget pì sempi (nopà d'eredité).
* **Pattern OOP**: Dëschema com ël *Singleton*, *Factory*, o *Observer* për organisé ël còdes.

## Aplicassion

* **Svilup ëd GUI**: Librarìe com JavaFX e Qt për creé anterface utent.
* **Videogame**: Motor com Unity ch'a deuvro oget për personagi, ambient, e mecàniche.
* **Web application**: Framework com Django (Python) e Spring (Java) basà an sl'OOP.
* **Sistema operativ**: Gestion ëd process e risorse com oget (es. ant Windows).
* **Basi ëd dat**: Modelisassion ëd dat con relassion a ogèt (ORM).

## Sfide e Prospetive

Le prinsipaj sfide a son:

* **Complessità**: Class e struture a peulo rende ël còdes difìcil da comprende.
* **Eredità mal progetà**: Creà relassion complicà antra le class.
* **Oget tròp gròss**: Class ch'a fan tròp còse, violand ël prinsipi ëd responsabilità ùnica.

Ant ël futur:

* **OOP ibrid**: Combinassion con programassion funsional o reativa (es. Scala, Kotlin).
* **Component reutilisàbij**: Librarìe modular për evité ëd reinventé la roa.
* **IA generativa**: Strument ch'a giuto a progeté le class an manera automàtica.

## Vardé ëdcò

* Programassion funsional
* Paradigma 'd programassion