- IC4EAnetari ri
- Gjinia :
Shteti :
Postime : 4
Vendndodhja : Kosove
Anetaresuar : 15/05/2012
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/
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ë.
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.
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
Çdo nënklasë mund t’i ndryshoj tiparet dhe sjelljet e trashëguara. Për shembull, nënklasa
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
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
- Kodi:
Qeni
- Kodi:
Aresi
- Kodi:
Qeni
- Kodi:
Aresi
- Kodi:
pit bull
- Kodi:
e zezë
- Kodi:
Aresi
- Kodi:
Qeni
- Kodi:
Aresi
- Kodi:
leh()
- Kodi:
Aresi
- Kodi:
ulu()
- Kodi:
ec()
- Kodi:
Qeni
- Kodi:
PitBull
- Kodi:
Doberman
- Kodi:
Aresi
- Kodi:
PitBull
- Kodi:
Qeni
- Kodi:
leh()
- Kodi:
PitBull
- Kodi:
Doberman
Çdo nënklasë mund t’i ndryshoj tiparet dhe sjelljet e trashëguara. Për shembull, nënklasa
- Kodi:
Doberman
- Kodi:
ngjyraQimes
- Kodi:
zi-dhe-kafe
- Kodi:
PitBull
- Kodi:
leh()
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
- Kodi:
pershendet()
- Kodi:
Shqiptar
- Kodi:
Anglez
- Kodi:
pershendet()
- Kodi:
pershendet()
- Kodi:
Shqiptar
- Kodi:
Anglez
- Kodi:
shqiptar.pershendet()
- Kodi:
Përshëndetje!
- Kodi:
anglez.pershendet()
- Kodi:
Hello!
Drejtat e ktij Forumit:
Ju nuk mund ti përgjigjeni temave të këtij forumi
|
|