În codificare, care sunt diferențele dintre metode și funcții
Publicat: 2018-09-21Terminologie în codificare
În programare, există o mulțime de termeni diferiți care sunt utilizați pentru a descrie exact același lucru și există, de asemenea, unii termeni care par să se refere la același lucru, dar de fapt nu se referă la același lucru. Pentru a face și mai confuz. Unii termeni sunt folosiți diferit în funcție de ce fel de limbă vorbiți sau chiar atunci când treceți de la o limbă la o altă limbă care este de același tip. Astfel, anumiți termeni precum „metodă”, „funcție”, „interfață” sau „clasă abstractă” pot fi foarte confuzi pentru unii oameni, deoarece pot însemna un lucru într-un context, dar cu totul diferit în altul.
Prezentare generală a metodelor OOP
O metodă este în esență o procedură pas cu pas care este pusă în aplicare pe un obiect desemnat. Metodele sunt utilizate numai în limbaje de programare orientate pe obiecte precum C++. În esență, o metodă fie poate modifica caracteristicile obiectului care este trecut prin metodă, fie metoda poate face o anumită procedură bazată pe caracteristicile preexistente ale obiectului trecut prin el. Uneori, o metodă poate chiar rula prin cod care nici nu afectează obiectul trecut prin ea, fie este schimbat de caracteristicile deja existente ale obiectului. Dar aceasta este mult mai puțin obișnuită și nu este o modalitate promovată de manipulare a metodelor.
Citiți – Ce cadru JavaScript să alegeți
Funcții în codificare procedurală
O funcție, pe de altă parte, este un termen mult mai generic care se referă la o procedură care preia un număr de intrări și returnează un anumit număr de valori. În mod confuz, o funcție și o metodă sună ca și cum ar face același lucru sau ar face referire la același tip de procedură atunci când programează, dar nu. Funcțiile nu sunt asociate cu obiecte și sunt utilizate în principiu în orice limbaj de nivel înalt care nu este orientat pe obiecte. Metodele, pe de altă parte, sunt asociate doar cu obiecte, iar termenul este folosit doar atunci când se ocupă cu obiecte sau când o procedură se află într-o clasă. Deci, funcțiile returnează valori pe baza intrărilor date, în timp ce metodele fie modifică caracteristicile unui obiect, fie returnează valori bazate pe caracteristicile preexistente ale obiectului.
Interfețe de codare și clase abstracte
Similar cu confuzia dintre o funcție și o metodă. Există multă confuzie între interfețe și clase abstracte. Cu toate acestea, spre deosebire de funcții și metode, interfețele și clasele abstracte au multe în comun, iar caracteristicile lor sunt ușor de amestecat. Cel mai simplu mod de a le diferenția pe cele două este să înțelegeți că interfețele sunt prezente doar în limbajele de programare orientate obiect. În timp ce clasele abstracte sunt prezente în aproape toate limbile de nivel înalt.
Interfețe în profunzime
O interfață este în esență o bază pe care o creați și care ține cont de toate asemănările dintre clase. Deci, spuneți că doriți să creați diferite obiecte, dar că toate sunt animale. Deci, oameni, maimuțe și cimpanzei. Evident, aceste trei animale au multe în comun și ar fi inteligent să definiți toate aceste asemănări, astfel încât să vă asigurați că toate sunt implementate în fiecare clasă. De exemplu, fiecare are un cap, patru membre, o gură, nas, limbă etc.
Deci, în interfață, definiți aceste caracteristici și pentru că le-ați definit în interfață. Când fiecare clasă implementează interfața, ea trebuie să definească și să inițialeze aceste caracteristici prin metodele definite în interfață. În caz contrar, codul nu va rula. Motivul principal pentru care ați folosi o interfață în loc de o clasă abstractă este dacă fiecare animal are aceleași caracteristici. Dar fiecare animal le implementează diferit. De exemplu, toți cimpanzeii. Oamenii și maimuțele au nas, dar lățimea, lungimea și utilizarea lor pot fi toate ușor diferite. Prin urmare, aceste diferențe sunt definite în clasele individuale. Dar faptul că au nas este definit în interfață.

Citiți – Motive pentru care Laravel este cel mai bun cadru PHP din 2018
Cum se utilizează clasele abstracte
O clasă abstractă este exact ca o interfață. Cu toate acestea, spre deosebire de o interfață, metodele și funcțiile pot fi de fapt definite și inițializate, dar nu trebuie să fie. În plus, în loc de clase care implementează clase abstracte, ele fac din clasa abstractă superclasa. Acesta este de fapt un dezavantaj major pentru clasele abstracte în comparație cu interfețele, deoarece o clasă poate implementa câte interfețe dorește, dar poate avea doar o superclasă, ceea ce înseamnă că o clasă poate utiliza doar o clasă abstractă, dar mai multe interfețe.
Cursurile de abstracte sunt grozave. Cu toate acestea, dacă există unele caracteristici identice care au moduri identice de implementare. Dar dacă există și unele care au implementări diferite între obiecte. De exemplu, dacă ai avut două clase, bărbați și femei, și ai vrut să definești asemănări între cele două, poate fi cel mai bine să folosești o clasă abstractă. De ce? Pentru că anumite caracteristici între sexe sunt identice și sunt implementate exact în același mod. De exemplu, gurile au aproximativ aceeași dimensiune și servesc aceluiași scop; ochii au aproximativ aceeași dimensiune și funcționează la fel între sexe etc.
Deci, pentru aceste caracteristici, funcțiile sau metodele care le definesc pot fi inițializate în clasa abstractă. Cu toate acestea, anumite caracteristici, cum ar fi șoldurile sau sprâncenele, sunt prezente la ambele sexe. Dar aceste caracteristici sunt mult diferite între cele două. Prin urmare, clasa abstractă nu va inițializa metodele sau funcțiile care definesc aceste caracteristici. Și va lăsa asta în seama subclaselor.
rezumat
Sperăm că aceste explicații nu au fost prea confuze sau prea pronunțate. Dacă sunteți nou în programare, nu vă faceți griji dacă sunteți încă confuz. Există o mulțime de resurse accesibile pe care le puteți folosi pentru a înțelege elementele fundamentale ale programării și diferențele subtile dintre anumiți termeni.
Este foarte important de menționat că dacă îți place să devii programator profesionist. Înclinarea atât a conceptelor procedurale, cât și a celor de programare orientată pe obiecte (OOP) este o necesitate. Într-adevăr. Mulți ingineri software folosesc Unified Model Language pentru a mapa cerințele de proiect sau de aplicație la obiecte și diagrame înainte de a face codarea OOP. Există o mulțime de resurse online pentru învățarea ingineriei software. Pentru adolescenți și elevi de liceu, Serviciile Tehnologice de Liceu oferă o varietate de instruire practică. Pentru adulți și profesioniști, institutul Coding Bootcamps oferă multe cursuri de programare de bază până la avansate, cu accent atât pe codarea procedurală, cât și pe OOP.
Despre autor
Matt Zand este programator, om de afaceri, consultant IT și scriitor. El este fondatorul și proprietarul grupului WEG2G. El este, de asemenea, fondatorul DC Web Makers. Hobby-urile lui sunt drumeții, ciclism, activități în aer liber, călătorii și alpinism.