Proceduri și funcții - Metode de clasă
Proceduri și funcții - module funcționale
Primele forme de modularitate care au apărut în limbile de programare au fost procedurile și funcțiile. Acestea vă permit să specificați anumite funcționalități și să executați în mod repetat același cod parametric pentru diferite valori ale parametrilor. Deoarece funcțiile din matematică au fost folosite mult timp, apariția lor în limbile de programare a fost complet naturală. De la primii pași, procedurile și funcțiile au făcut posibilă rezolvarea uneia dintre cele mai importante sarcini cu care se confruntă programatorii - sarcina reutilizării codului. Funcțiile încorporate în limbaj au făcut posibilă extinderea semnificativă a capacităților limbajului de programare. Un pas important în automatizarea programării a fost apariția unor biblioteci de proceduri și funcții disponibile din limba folosită.
De multă vreme, procedurile și funcțiile au jucat nu numai un rol funcțional, dar și unul arhitectural. Foarte popular în construcția de sisteme software a fost metoda de descompunere funcțională "de sus în jos", și astăzi încă joacă un rol important. Dar odată cu apariția PLO, rolul arhitectural al modulelor funcționale a ajuns în prim plan. Pentru limbile OO, inclusiv C #, clasa este modulul arhitectural. Sistemul software este construit din module, al căror rol este jucat de clase, dar fiecare dintre aceste module are o umplere semnificativă, specificând unele abstractizări de date.
Procedurile și funcțiile sunt acum asociate cu clasa, ele oferă funcționalitatea acestei clase și se numesc metode de clasă. Rolul principal în sistemul de programe este jucat de date, iar funcțiile servesc numai datelor. Vă voi aminti aici că în procedurile și funcțiile C # există doar ca metode ale unei anumite clase, ele nu există în afara clasei.
În acest context, conceptul de clasă se extinde la toate cazurile sale particulare - structuri, interfețe, delegați.
Rolul anterior al bibliotecilor de proceduri și funcții este acum jucat de bibliotecile de clasă. Biblioteca de clasă FCL (componenta statică .Net Framework), disponibilă în C #, extinde semnificativ capacitățile limbii. Cunoașterea clasei acestei biblioteci și metodele acestor clase este absolut necesară pentru programarea practică în C # folosind toată puterea.
Funcția diferă de procedură în două moduri:
· Întotdeauna evaluează o valoare returnată ca rezultat al funcției;
· Este chemat în expresii.
Procedura C # are propriile particularități:
Returnează rezultatul formal. indicând o lipsă de rezultat;
· Procedura de apel este operatorul limbii;
· Are argumente de intrare și ieșire și pot exista destul de multe argumente de ieșire - rezultatele acestora.
Este bine cunoscut faptul că existența simultană în limbajul procedurilor și funcțiilor într-un anumit sens este redundantă. Prin adăugarea unui alt argument de ieșire, orice funcție poate fi scrisă sub forma unei proceduri. Reversul este, de asemenea, adevărat. Dacă permiteți funcții cu efect secundar, atunci orice procedură poate fi scrisă ca o funcție. În limbajul C, bunicul lui C # - a făcut acest lucru, lăsând doar funcțiile. Cu toate acestea, este mult mai convenabil să aveți ambele forme de implementare a metodei: atât proceduri, cât și funcții. În mod tipic, metoda este preferată să se implementeze ca o funcție atunci când are un argument de ieșire considerat ca rezultat al calculării valorii unei funcții. Posibilitatea de a apela funcții în expresii afectează de asemenea alegerea în favoarea implementării metodei ca o funcție. În alte cazuri, metoda este implementată ca o procedură.