# Programimi i orientuar në objekte

**Programimi i orientuar në objekte** (anglisht: *object-oriented programming*; shkurt: OOP) është një paradigmë programimi që fokusohet në organizimin e programeve përmes objekteve (objects) dhe ndërveprimeve mes tyre. Objektet përfaqësojnë entitete reale ose konceptuale dhe kombinojnë të dhënat (atributet - attributes) dhe funksionalitetet (metodat - methods) në një strukturë të vetme.

OOP ka revolucionarizuar mënyrën e zhvillimit të softuerit duke siguruar modularitet, ripërdorshmëri dhe fleksibilitet. Duke ofruar një mënyrë më intuitive për të modeluar sisteme komplekse, kjo paradigmë është një ndër më të përdorurat në zhvillimin e teknologjisë moderne, duke përfshirë fusha si inteligjenca artificiale (AI), zhvillimi i uebit dhe Big Data.

## Përmbledhje

Origjina e Programimit të Orientuar në Objekte daton në vitet 1960, kur u krijua gjuha programuese Simula 67. E zhvilluar nga Ole-Johan Dahl dhe Kristen Nygaard, Simula 67 u krijua për simulime komplekse dhe prezantoi konceptet revolucionare të klasave dhe instancave. Këto koncepte mundësuan modelimin e sjelljeve të entiteteve reale në softuer dhe krijuan bazën për zhvillimin e OOP.

Në vitet 1970, gjuha Smalltalk, e zhvilluar në Xerox PARC, përforcoi këto koncepte duke futur një qasje dinamike për krijimin dhe menaxhimin e objekteve. Smalltalk u bë gjuha që vendosi termat “programimi i orientuar në objekte” dhe përdori mesazhet si mënyrë për ndërveprim midis objekteve.

Në vitet 1980, gjuha C++, e cila integroi fuqinë e programimit procedural me konceptet e OOP, ndihmoi në popullarizimin e paradigmës. C++ u bë e njohur për zhvillimin e sistemeve të mëdha dhe aplikacioneve komerciale.

Në vitin 1995, gjuha programuese Java prezantoi një epokë të re të OOP duke futur konceptin e makinës virtuale (Java Virtual Machine), që mundësoi ekzekutimin ndër-platformik. Java u bë një nga gjuhët më të përdorura për zhvillimin e aplikacioneve të ndërmarrjeve dhe ndërfaqeve grafike.

Në vitet e mëvonshme, gjuhë si Python dhe Ruby e zgjeruan konceptin e OOP, duke e kombinuar me fleksibilitetin e qasjeve procedurale. Python u bë shumë i përdorur për aplikacione shkencore, ndërsa Ruby theksoi produktivitetin dhe thjeshtësinë për zhvilluesit.

Sot, OOP është një paradigmë kryesore në zhvillimin e softuerit dhe ndikon në gjuhët moderne për të ndërtuar sisteme komplekse dhe aplikacione bashkëkohore.

## Koncepte thelbësore

1. **Klasa** (ang.: *Class*): Një strukturë që përcakton atributet dhe metodat që një objekt do të ketë. P.sh., klasa Makina mund të përmbajë atributet marka dhe viti, dhe metodat `ec()` ose `ndalo()`.
2. **Objekti** (ang.: *Object*): Një ekzemplar i një klase. P.sh., një objekt i klasës Makina mund të jetë një BMW, me atributet specifike `marka = BMW` dhe `viti = 2023`.
3. **Trashëgimia** (ang.: *Inheritance*): Lejon që një klasë të trashëgojë tiparet dhe sjelljet e një klase tjetër. P.sh., klasa `Automjet` mund të ketë nënklasa si `Makina` dhe `Motori`.
4. **Polimorfizmi** (ang.: *Polymorphism*): Ky koncept lejon përdorimin e metodave me të njëjtin emër në klasa të ndryshme, duke u përshtatur me tipin e klasës. P.sh., metoda `pershendet()` mund të shfaqë "`Përshëndetje!`" për një Shqiptar dhe "`Hello!`" për një anglez.
5. **Kapsulimi** (ang.: *Encapsulation*): Kufizon qasjen në detajet e brendshme të një objekti dhe siguron qasje vetëm përmes metodave të përcaktuara.
6. **Abstraksioni** (ang.: *Abstraction*): Fsheh kompleksitetin dhe fokusohet vetëm në tiparet dhe funksionalitetet kryesore të një objekti.

## Tendencat dhe e ardhmja

1. Integrimi me Inteligjencën Artificiale (AI): Në aplikimet e IA-së, OOP përdoret për të ndërtuar struktura komplekse si rrjetet neuronale artificiale, ku çdo nyje trajtohet si një objekt. Biblioteka si TensorFlow dhe PyTorch janë ndërtuar mbi parimet e OOP.
2. Programimi i Bazuar në Komponentë: Në sistemet moderne, OOP po kombinohet me qasjen e bazuar në komponentë, duke ndihmuar në zhvillimin e aplikacioneve të ndërlikuara si ato të bazuara në mikroshërbime (microservices).
3. Programimi Reaktiv (ang.: *Reactive Programming*): Në aplikacionet në kohë reale, OOP përdoret për të ndërtuar sisteme që trajtojnë ngjarje në mënyrë dinamike.
4. *Big Data* dhe Analiza e Avancuar: Në fushën e të dhënave, OOP përdoret për të menaxhuar struktura të mëdha dhe komplekse, duke ndihmuar në përpunimin dhe analizimin e të dhënave në shkallë të gjerë.

## Përfundim

Programimi i Orientuar në Objekte ka revolucionarizuar mënyrën e zhvillimit të softuerit, duke ofruar modularitet, fleksibilitet dhe ripërdorshmëri. Me rritjen e kërkesave për aplikacione të ndërlikuara dhe shkallëzueshmëri të lartë, OOP është bërë një shtyllë kryesore në teknologji.

Ndërthurja e tij me fusha si inteligjenca artificiale, Big Data dhe sistemet reaktive tregon se kjo paradigmë jo vetëm që është thelbësore për zhvillimin e teknologjisë së sotme, por edhe për të ardhmen e saj.

## Referime