Engjujt Shqipetare Forum/portal
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Shko poshtë
IC4E
IC4E
Anetari ri
Anetari ri
 <b>Gjinia</b> Gjinia : Male
<b>Shteti</b> Shteti : Shqipëria
<b>Postime</b> Postime : 4
 <b>Vendndodhja</b> Vendndodhja : Kosove
<b>Anetaresuar</b> Anetaresuar : 15/05/2012

Programimi i orientuar në objekte ose shkurtimisht POO Empty Programimi i orientuar në objekte ose shkurtimisht POO

Wed 1 Apr 2015 - 14:55
http://seec0m.altervista.org/programimi-i-orientuar-ne-objekte-ose-shkurtimisht-poo/


Programimi i orientuar në objekte ose shkurtimisht POO (ang. Object-oriented programming ose shkurtimisht OOP) është një paradigmë programore e cila e shfrytëzon konceptin e objektit si dhe ndërveprimeve e tija për të dizajnuar programe kompjuterike. Në këtë paradigmë programore përfshihen tipare të ndryshme si kapsulimi (ang. encapsulation), modulariteti (ang.modulariteti), polimorfizmi (ang. polymorphism), dhe trashëgimi (ang. inheritance). Popullariteti i kësaj paradigme pa rritjen e tij të parë tek në fillim të viteve 1990, mirëpo në ditën e sotme shumica e gjuhëve programuese e përkrahin këtë paradigmë


Përmbledhje

Zanafilla e POO-së daton që nga vitet e 1960-ta. Në atë kohë, shpesh herë kualiteti komprometohej, si pasojë e rritjes të kompleksitetit të harduerit dhe softuerit. Hulumtuesit duke studiuar mënyra të ndryshme për mirëmbajtje të kualitetit të softuerit përfunduan duke e krijuar POO nëpërmjet së cilën e theksuan në veçanti vetinë e saj për rishfrytëzimin e njësive të logjikës programuese. Pra, në POO metodologjia është e përqendruar në të dhëna e jo në procese; ku programet janë të përbërë nga module të pavarura (objekte) që përmbajnë të gjitha të dhënat që janë të nevojshme për manipulimin e strukturave vetanake të të dhënave. Gjuha e parë programuese që konsiderohet si gjuhë e cila plotësisht e përvetëson paradigmën programuese POO ështëSmalltalk[1].
POO mund të perceptohet si një grumbull objektesh ndërvepruese, ku secili objekt është i aftë që të pranoj mesazhe, të procesoj të dhëna, si dhe t’i dërgoj mesazhe objekteve tjera. Pra, çdo objekt mund të konsiderohet si një makinë e pavarur me një rol dhe përgjegjësi të veçantë.

Historia

Koncepti i objekteve dhe instancave për herë të parë arriti të depërtoj në fushën e informatikës nëpërmjet PDP-1 sistemit në MIT. Objektet u paraqitën si entitete programimi në vitet e 1960-ta në gjuhën programuese Simula 67 e cila ishte dizajnuar për krijimin e simulacioneve. Kjo gjuhë ishte krijuar nga Ole-Johan Dahl dhe Kristen Nygaardnë Qendrën Kompjuterike Norvegjeze në Oslo. Simula nuk e paraqiti vetëm nocioni ne klasave, por edhe atë të instancave të klasave. Konceptet që u paraqitën nëpërmjet Simula 67 patën ndikim në gjuhë të ndryshme programuese, e sidomos në Smalltalk si dhe gjuhët tjera që rrjedhën nga ai, si Lisp dhe Pascal.
Gjuha programuese Smalltalk, e cila u zhvillua në Xerox PARC gjatë viteve të 1970-ta, e paraqiti termin “programimi i orientuar në objekte” në mënyrë që ta përshkruante vetinë e shfrytëzimit të objekteve dhe mesazheve si baza të llogaritjes. Duhet veçuar që krijuesit e Smalltalk ishin të ndikuar nga idetë e paraqitura në Simula 67, por megjithatë ata e dizajnuan Smalltalk në atë mënyrë që të ishte sistem dinamik, ku klasat mund të krijohen dhe ndryshohen në mënyrë dinamike (në vend të mënyrës statike si që ishte bërë në Simula 67)[2]. Smalltalk, e me gjithë te edhe POO iu paraqitën një audience të gjerë më Gusht të 1981 nëpërmjet revistësByte.

Si pasojë e ndikimit nga gjuha programuese C++, programi i orientuar në objekte arriti që të bëhej metodologjia dominante programuese gjatë mesit të viteve 1990-ta[3]. Më pas, dominimi i POO-së u fuqizua edhe më shumë pasi që ishte shumë i përshtatshëm për zhvillimin e interfejsëve grafik për shfrytëzues që ishin duke përjetuar rritje të popullaritetit.
Më vitin 1995 shfaqet gjuha programuese Java[4] e cila ka sintaksë të derivuar nga gjuhët programuese C dhe C++, mirëpo vetia kryesore që e dallon nga këto ështëmakina virtuale e saj. Java si një gjuhë e cila plotësisht e përkrah POO-në, me anë të makinës virtuale që i ofron veti ndër-platformike arriti që edhe më tej ta fuqizonte dhe në të njëjtën kohë të zgjeronte dominancën e programimit të orientuar në objekte.
Rishtazi ka sipërfaqësuar një numër i gjuhëve programuese që edhe pse janë të orientuara në objekte ato përkrahin edhe metodologjinë procedurale, si p.sh.Python ose Ruby. Në përjashtim të Java, gjuhë tjera që kanë sipërfaqësuar rishtazi, dhe kanë rëndësi për botën komerciale janë Visual Basic .NET (VB.NET) dhe C#ku të dyja janë të dizajnuara për platformën .NET të Microsoft. Duhet veçuar që VB.NET dhe C# përkrahin trashëgimin ndër-gjuhësor, ku kjo e bën të mundshme që p.sh. klasat e definuar në VB.NET të trashëgohen në C# dhe anasjelltas.

Konceptet Thelbësore

Deborah J. Armstrong nëpërmjet studimit të saj pothuajse 40-vjeçar të literaturës kompjuterike ka përpiluar listën vijuese e koncepteve thelbësore të cilat janë të përfshira në shumicën e definicioneve të POO-së[5]:
Klasa Definon tiparet dhe sjelljet (metodat) e objektit. Pra, klasa mund të konsiderohet si një kallëp për objekte. Nëse e marrim rastin e klasës
Kodi:
Qeni
shohim që kjo klasë do t’i përmbaj tiparet thelbësore për të gjithë qentë, si p.sh. lloji, ngjyra e qimes, etj. Klasa gjithashtu do të përmbaj edhe sjelljet (metodat) si p.sh. aftësia për të lehur dhe për t’u ulur. Këto tipare si dhe metoda që përfshihen nga klasa janë të njohura si anëtarë të klasës.Objekti Është një ekzemplar i klasës. Pra, klasa
Kodi:
Qeni
paraqet kallëpin për qenë të ndryshëm, ndërsa objekti
Kodi:
Aresi
paraqet një qenë të veçantë, me veti dhe sjellje të veçanta të trashëguara nga klasa
Kodi:
Qeni
si p.sh. lloji për objektin
Kodi:
Aresi
është
Kodi:
pit bull
ndërsa ngjyra e qimes është
Kodi:
e zezë
.Instanca Instanca paraqet objektin të krijuar nga klasa. Pra, duke u bazuar në rastin e lartpërmendur objekti
Kodi:
Aresi
është instancë e klasës
Kodi:
Qeni
. Grumbulli i vlerave dhe atributeve të një objekti njihet si gjendje, ku kjo d.t.th. që objekti përbehet nga gjendja dhe sjelljet që janë të definuara në klasën e objektit.Metoda Paraqet sjelljet dhe aftësitë e një objekti.Metodat mund t’i shohim si procedura ose funksione. Procedurat jane metodat qe nuk kane vlere kthese, ndersa funksionet jane metoda qe kthejne dicka si rezultat i ekzekutimit te asaj metode. Pra, objekti
Kodi:
Aresi
ka aftësinë për të lehur, dhe për atë arsye ky objekt përmban metodën
Kodi:
leh()
. Objekti
Kodi:
Aresi
mund të përmbaj edhe metoda tjera si p.sh.
Kodi:
ulu()
,
Kodi:
ec()
, etj.Dërgimi i mesazhit Procesi me anë të cilit objekti dërgon të dhëna një objekti tjetër, ose kërkon nga një objekt tjetër që ta thërras një metodë[5].Trashëgimi Nënklasat paraqesin versione të veçanta të klasave, ku këto i trashëgojnë tiparet dhe sjelljet nga klasat e tyre prindërore. Nënklasat mund të përmbajnë tipare dhe sjellje shtesë, përsipër atyre që i kanë trashëguar nga klasat prindërore. Për shembull, klasa
Kodi:
Qeni
mundet ti ketë nënklasat
Kodi:
PitBull
,
Kodi:
Doberman
, etj. ku objekti
Kodi:
Aresi
do t’ishte instancë e nënklasës
Kodi:
PitBull
. Nëse në klasën
Kodi:
Qeni
e kemi të definuar metodën
Kodi:
leh()
atëherë të dy nënklasat
Kodi:
PitBull
dhe
Kodi:
Doberman
do ta trashëgojnë këtë metodë, ku kjo e bën të mundshme që programori ta shkruaj vetëm një herë këtë metodë.
Çdo nënklasë mund t’i ndryshoj tiparet dhe sjelljet e trashëguara. Për shembull, nënklasa

Kodi:
Doberman
mund ta ndryshon tiparin
Kodi:
ngjyraQimes
që ta ketë vlerën
Kodi:
zi-dhe-kafe
; ose nënklasa
Kodi:
PitBull
mund ta ndryshon metodën
Kodi:
leh()
që lehja të jetë më e fuqishme tek instancat e kësaj nënklase.
Trashëgimia e shumëfishtë paraqet rastin kur trashëgimia bëhet nga më shumë se një klasë, përderisa asnjëra nga klasat prindërore nuk është e trashëguar nga njëra tjetra.Abstraksioni Është procesi i thjeshtëzimit dhe faktorizimit të detajeve me qëllim të përqendrimit në disa koncepte në krahasim prej përqendrimit në të gjitha konceptet përnjëheri. Pra, abstraksioni paraqet procesin në të cilin bëhet modelimi i klasave të përshtatshme për problemin, si dhe punimi me nivelin e përshtatshmën të trashëgimisë prej një aspekti specifik të problemit.Kapsulimi Është njëri nga tre konceptet themelore të programimit të orientuar në objekte (dy të tjerët janë Trashëgimi dhe Polimorfizmi)[6]. Ky koncept paraqet fshehjen e detajeve të implementimit të klasës si dhe ofrimin e qasjes vetëm nëpërmjet interfejsit të dokumentuar ( metodave qasëse dhe metodave ndryshuese)[7].Polimorfizmi Polimorfizmi në programimin e orientuar në objekte e bën të mundshëm që objektet që përkasin tipeve të dhënave të ndryshme t’i përgjigjen thirrjeve të metodave me emër të njëjtë në përputhshmëri me specifikat e tipit të tyre. Për shembull, nëse kemi klasën

Kodi:
Njeri
e cila e ka metodën
Kodi:
pershendet()
, dhe më pas kemi dy nënklasa
Kodi:
Shqiptar
dhe
Kodi:
Anglez
atëherë ato do të trashëgojnë dhe e mbishkruajnë strukturën dhe funksionalitetin e metodës
Kodi:
pershendet()
sipas specifikave të tipit. Ky mbishkrim do ta bën të mundshme që kur të thirret metoda
Kodi:
pershendet()
në instancat (objektet) e nënklasave
Kodi:
Shqiptar
dhe
Kodi:
Anglez
të dy instancat do të reagojnë sipas specifikave të tipit të tyre, pra:
Kodi:
shqiptar.pershendet()
do të kthen
Kodi:
Përshëndetje!
ndërsa
Kodi:
anglez.pershendet()
do të kthen
Kodi:
Hello!
.Shçiftëzimi Shçiftëzimi (ang. decoupling) paraqet procesin e minimalizimit të sasisë dhe fuqisë të varshmërive në mes të pjesëve të ndryshme të programit. Nëpërmjet këtij procesi bëhet lokalizimi i operimeve të ndryshme në entitete të vetme ku këto kanë varshmëri minimale ndaj entiteteve tjera. Kjo veti e POO-së është shumë e dobishme, sidomos për programe të mëdha, pasi që nëse është bë shçiftëzimi, atëherë në rast të ndonjë problemi, programori mund të përqendrohet në një entitet të vetëm e jo në tërë programin
Mbrapsht në krye
Drejtat e ktij Forumit:
Ju nuk mund ti përgjigjeni temave të këtij forumi