Programimi i orientuar në objekte

**Programimi i orientuar në objekte** (anglisht: ; 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 
# **Klasa** (ang.: ): 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()`.
# **Objekti** (ang.: ): 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`.
# **Trashëgimia** (ang.: ): 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`.
# **Polimorfizmi** (ang.: ): 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.
# **Kapsulimi** (ang.: ): Kufizon qasjen në detajet e brendshme të një objekti dhe siguron qasje vetëm përmes metodave të përcaktuara.
# **Abstraksioni** (ang.: ): Fsheh kompleksitetin dhe fokusohet vetëm në tiparet dhe funksionalitetet kryesore të një objekti.

## Tendencat dhe e ardhmja 
# 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.
# 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).
# Programimi Reaktiv (ang.: ): Në aplikacionet në kohë reale, OOP përdoret për të ndërtuar sisteme që trajtojnë ngjarje në mënyrë dinamike.

## 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