Programimi i orientuar në objekte: Dallime mes rishikimesh

[Redaktim i kontrolluar][Redaktim i kontrolluar]
Content deleted Content added
Lidhje të jashtme të shpëtuara: 1 Lidhje të jashtme të etiketuara si të vdekura: 0) #IABot (v2.0
Rreshti 18:
 
== 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ë<ref name="quarks_oop">{{ cite journal | last= J Armstrong | first= Deborah | year= 2006 | month = February | title= The Quarks of Object-Oriented Development | journal= Communications of the [[ACM]] | volume= 49 | issue= 2 | pages= 123–128 | id= {{ISSN|0001-0782}} | url= http://portal.acm.org/citation.cfm?id=1113040 | accessdate= 2009-01-26 | doi = 10.1145/1113034.1113040 }} - {{en}}</ref>:
; 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 <code>Qeni</code> 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 <code>Qeni</code> paraqet kallëpin për qenë të ndryshëm, ndërsa objekti paraqet një qenë të veçantë, me veti dhe sjellje të veçanta të trashëguara nga klasa <code>Qeni</code> si p.sh. lloji për objektin Peofi është <code>pit bull</code> ndërsa ngjyra e qimes është <code>e zezë</code>.
Rreshti 26:
; 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 <code>Qeni</code> mundet ti ketë nënklasat <code>PitBull</code>, <code>Doberman</code>, etj. ku objekti <code>Peofi</code> do t'ishte instancë e nënklasës <code>PitBull</code>. Nëse në klasën <code>Qeni</code> e kemi të definuar metodën <code>leh()</code> atëherë të dy nënklasat <code>PitBull</code> dhe <code>Doberman</code> 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ë.<br />Çdo nënklasë mund t'i ndryshoj tiparet dhe sjelljet e trashëguara. Për shembull, nënklasa <code>Doberman</code> mund ta ndryshon tiparin <code>ngjyraQimes</code> që ta ketë vlerën <code>zi-dhe-kafe</code>; ose nënklasa <code>PitBull</code> mund ta ndryshon metodën <code>leh()</code> që lehja të jetë më e fuqishme tek instancat e kësaj nënklase.<br />'''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''')<ref>{{ cite book | title= Pocket PowerBuilder Resource Guide and Reference | chapter= Chapter 1: Implementing Object-Oriented Programming Techniques | chapterurl= http://manuals.sybase.com/onlinebooks/group-ppb/ppbg0100e/pkresref/@Generic__BookTextView/301;pt=50 | publisher= Sybase, Inc. | year= 2003 | month= 07 | accessdate= 2009-01-27 }} - {{en}}</ref>. Ky koncept paraqet fshehjen e detajeve të implementimit të klasës si dhe ofrimin e qasjes vetëm nëpërmjet interfejsit të dokumentuar ( [[metoda ndryshuese|metodave qasëse]] dhe [[Metoda ndryshuese|metodave ndryshuese]])<ref>{{ cite web | url= http://www.java4all.info/corejava/interview-questions/java-interview-questions-4.html | title= Java Interview Questions: What is Encapsulation? | accessdate= 2009-01-27 }} - {{en}}</ref>.
; 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 <code>Njeri</code> e cila e ka metodën <code>pershendet()</code>, dhe më pas kemi dy nënklasa <code>Shqiptar</code> dhe <code>Anglez</code> atëherë ato do të trashëgojnë dhe e mbishkruajnë strukturën dhe funksionalitetin e metodës <code>pershendet()</code> sipas specifikave të tipit. Ky mbishkrim do ta bën të mundshme që kur të thirret metoda <code>pershendet()</code> në instancat (objektet) e nënklasave <code>Shqiptar</code> dhe <code>Anglez</code> të dy instancat do të reagojnë sipas specifikave të tipit të tyre, pra: <code>shqiptar.pershendet()</code> do të kthen <code>Përshëndetje!</code> ndërsa <code>anglez.pershendet()</code> do të kthen <code>Hello!</code>.
; Shçiftëzimi : Shçiftëzimi ([[gjuha angleze|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<ref>{{cite journal | last= Jackson | first= Daniel | year= 2008 | title= A Direct Path To Dependable Software | journal= Communications of the [[ACM]] | url= http://sdg.csail.mit.edu/pubs/2008/cacm-08.pdf | accessdate= 2009-01-27 | format= PDF | archive-url= https://web.archive.org/web/20100619222733/http://sdg.csail.mit.edu/pubs/2008/cacm-08.pdf | archive-date= 19 qershor 2010 | url-status= dead }} - {{en}}</ref>.