- Module principale și auxiliare
- Caracteristici de programare modulare
- modularitate
- Definirea funcției
- Domeniul de aplicare al variabilelor
- Este procedural
- Exemple de programare modulare
- Modularitatea în viața reală
- Funcții în Java
- Avantaj
- Programare independentă a proiectelor
- Dezvoltarea eficientă a programului
- Utilizarea multiplă a modulelor
- Ușurință de depanare și modificare
- Dezavantaje
- Structura excesiv orientată pe obiecte
- Module prea mici
- Descompuneti fara motiv
- Aplicații
- Limbajul C
- Referințe
Programarea modulară este o tehnică utilizată pentru dezvoltarea de software, în cazul în care programul este împărțit în mai multe blocuri mici sau componente autonome numite module, care sunt ușor de gestionat, logic și funcțional.
Modulul este un bloc de enunțuri care rezolvă o anumită problemă. Fiecare modul conține tot ceea ce este necesar pentru a-și îndeplini propria funcționalitate și poate fi editat sau modificat fără a afecta restul proiectului.
Exemplu de rezolvare a unei probleme folosind module. Sursa: Kayau / CC BY (https://creativecommons.org/licenses/by/3.0)
Acest mod de programare este realizat prin menținerea unei interfețe a modulului permanent care este utilizat de celelalte componente software pentru a accesa funcțiile fiecărui modul.
Modulele impun limite logice între componente, îmbunătățind mentenabilitatea. Acestea sunt încorporate prin interfețe, care sunt proiectate astfel încât să minimizeze dependența dintre diferitele module.
Module principale și auxiliare
Un modul principal și mai multe module secundare sunt cele care compun programarea modulară. Din modulul principal, apelurile sunt efectuate către funcțiile modulelor auxiliare.
Aceste plugin-uri există ca fișiere executabile separate, care sunt încărcate atunci când rulează modulul principal. Fiecare modul are un nume unic atribuit în instrucțiunea PROGRAM.
Echipele de lucru pot dezvolta diferite module separat, fără a fi nevoie să cunoască toate modulele sistemului. Fiecare dintre aplicațiile modulare este asociată cu un număr de versiune pentru a oferi flexibilitate dezvoltatorilor în întreținerea modulului.
Caracteristici de programare modulare
modularitate
Un computer nu are nevoie de o versiune explodată a codului pentru a-l putea rula. Limitările cognitive ale omului te obligă să scrii cod în bucăți mai mici.
Un program poate conține alte funcții și se poate referi, de asemenea, la funcții din alte fișiere. Aceste funcții sau module sunt seturi de instrucțiuni care sunt utilizate pentru a efectua o operație sau pentru a calcula o valoare.
Pentru a menține simplitatea și lizibilitatea în programe mari și complexe, se utilizează o funcție principală scurtă împreună cu alte funcții, mai degrabă decât o funcție principală lungă.
Prin separarea unui program în grupuri de module, fiecare modul va fi mai ușor de înțeles, respectând astfel regulile de bază ale programării structurate.
Definirea funcției
O funcție constă dintr-o declarație a definiției sale urmată de comenzi și instrucțiuni. Forma generală a unei funcții este:
Funcție nume (declarație parametru) {
propoziții;
comenzi;
expresie returnare;
}
- Declarația parametrilor reprezintă informațiile care sunt transmise funcției.
- În propoziții sunt definite variabile suplimentare utilizate special de funcție.
- Toate funcțiile trebuie să includă o declarație de retur.
Domeniul de aplicare al variabilelor
Variabilele declarate în funcția principală sau în funcțiile definite de utilizator se numesc variabile locale. Acestea au o valoare atunci când funcția se execută, dar valoarea lor nu se păstrează la finalizarea funcției.
Variabilele declarate externe programului principal sau funcțiilor definite de utilizator se numesc variabile globale. Aceste variabile pot fi preluate din orice funcție care se află în program.
Este procedural
Programarea modulară este destul de procedurală, deoarece este complet orientată către scrierea codului pentru funcții, fără a ține cont de date.
Exemple de programare modulare
Modularitatea în viața reală
Să presupunem o casă care are energie electrică, cu mai multe prize pe pereți. Acest sistem vă permite să conectați diferite dispozitive electrice, de exemplu, cuptor cu microunde, mașină de spălat, uscător etc.
Aceste dispozitive sunt proiectate pentru a-și îndeplini sarcina specifică atunci când sunt conectate și pornite, indiferent de locul în care se află.
Modulele unei aplicații trebuie să urmeze aceeași filozofie. Aceasta înseamnă că aceștia trebuie să își îndeplinească sarcina specifică indiferent de ce parte a aplicației se află sau chiar de la ce aplicație sunt conectați.
De asemenea, la fel cum un dispozitiv electric poate fi ușor deconectat de la priză, un modul trebuie proiectat astfel încât să poată fi îndepărtat cu ușurință dintr-o aplicație.
La fel cum eliminarea unui dispozitiv electric nu afectează funcționalitatea celorlalte dispozitive conectate, eliminarea modulelor dintr-o aplicație nu ar trebui să afecteze funcționalitatea celorlalte module ale respectivei aplicații.
Funcții în Java
În Java modulele sunt scrise ca funcții independente. De exemplu, s-ar putea să aveți o funcție sau un bloc de cod pentru a calcula GPA-ul unui student pe baza notelor sale la toate cursurile pe care le-au urmat.
Funcția trebuie să obțină lista notelor ca intrare și apoi să returneze media calculată:
Această funcție se numește CalculateAverageNote. Primește ca intrare o listă de note, folosind o serie de date de tip dublu și returnează media calculată.
În funcție, suma variabilă locală este inițializată la zero și apoi, folosind o buclă for, toate calificările sunt adăugate la sumă. În final, suma obținută este împărțită la numărul de note, restituind valoarea rezultată.
Dacă matricea de intrare ar avea notele 3.5, 3.0 și 4.0, după adăugarea lor, aceasta ar însuma valoarea de 10.5 și apoi s-ar împărți la 3, deoarece există trei note. Funcția va întoarce valoarea 3.5.
Avantaj
Programare independentă a proiectelor
Mai mulți programatori pot lucra la același proiect dacă este împărțit în module. Diferenti programatori pot proiecta independent module de programe diferite, ceea ce este necesar pentru un program mare și complex.
Dezvoltarea eficientă a programului
Programele pot fi dezvoltate mai rapid, deoarece module mici, de sine stătătoare, sunt mai ușor de înțeles, proiectat și testat decât programele mari.
Programatorul poate furniza intrarea necesară și poate verifica dacă modulul este corect examinând rezultatele sale.
Utilizarea multiplă a modulelor
Codul scris pentru un program este adesea util în altele. Programarea modulară permite salvarea acestor secțiuni pentru utilizare viitoare. Deoarece codul este relocabil, modulele salvate pot fi asociate cu orice alt program care îndeplinește cerințele de intrare și ieșire.
Cu programarea monolitică, astfel de secțiuni de cod sunt încorporate în program și nu sunt disponibile pentru utilizarea altor programe.
Ușurință de depanare și modificare
Un modul este mai mic decât un program complet, deci este mai ușor de testat. Fiecare modul poate fi scris și testat separat de restul programului. După ce un modul a fost testat, acesta poate fi utilizat într-un program nou, fără a fi necesar să-l testați din nou.
Când un program trebuie modificat, programarea modulară simplifică lucrarea. Modulele noi sau depanate pot fi conectate la un program existent fără a schimba restul programului.
Dezavantaje
Structura excesiv orientată pe obiecte
Această programare folosește interfețe, ceea ce este o idee destul de eficientă. Pentru a profita de asta, unele cadre vin cu un set complet de clase interschimbabile. De exemplu, pentru a gestiona persistența, ar putea exista mai multe clase care implementează o interfață de persistență.
Cu toate acestea, mediile de dezvoltare integrate (IDE) se confundă în acest sens. De exemplu, puteți încerca să găsiți sursa unei metode și IDE nu va ști ce metodă doriți să vedeți, afișând astfel o listă lungă de fișiere în care există o metodă cu acest nume.
Module prea mici
Există o mulțime de module care conțin doar o funcție foarte mică. Fiecare modul necesită timp suplimentar de analiză și procesare, în plus față de rubrica din cod.
Prin urmare, folosirea multor module mici va adăuga o aerisire la sistemul de compilare, mărind pachetul.
Descompuneti fara motiv
Unele coduri aproape că nu se schimbă niciodată. În aceste cazuri, poate nu are prea mult sens să încercați să-l faceți să pară mai curat sau cu o logică abstractă, dacă doar folosiți-l funcționează bine.
Există coduri care nu par prea frumoase, dar nu s-au schimbat prea mult în ultimii ani. Nu există niciun motiv pentru a descompune codul care nu s-a schimbat niciodată și funcționează deja bine în module.
Aplicații
Programarea modulară este doar un concept. Practica sa poate fi aplicată în orice limbaj de programare, în special în cele de natură procedurală, care au un program compilat separat.
Bibliotecile de componente construite din module compilate separat pot fi combinate într-un set folosind un instrument de programare numit linker.
Numele funcțiilor din diferitele module trebuie să fie unice pentru a le facilita accesul în cazul în care funcțiile utilizate de modulul principal trebuie exportate.
Printre limbajele de programare care acceptă conceptul de programare modulară se numără C, Ada, PL / I, Erlang, Pascal, Algol, COBOL, RPG, Haskell, Python, HyperTalk, IBM / 360 Assembler, MATLAB, Ruby, IBM RPG, SmallTalk, Morpho, Java (pachetele sunt considerate module), Perl etc.
Limbajul C
Programarea modulară poate fi aplicată în limbajul C, deoarece face posibilă remedierea unei mari dificultăți prin separarea ei în mai multe module.
Fiecare dintre aceste module rezolvă o anumită problemă, în timp ce programul principal, care este setul de astfel de proceduri, rezolvă problema în ansamblu.
Fiecare funcție definită în C este accesibilă în mod implicit la nivel global. Acest lucru se poate face prin includerea unui fișier antet, unde este definită implementarea funcției.
Ca exemplu, dorim să declaram un tip de date stivă și, de asemenea, că implementarea și structura de date sunt ascunse de utilizatori.
Acest lucru se poate realiza mai întâi prin definirea unui fișier public numit stack.h, care va conține datele generice cu tipul de date stivă și funcțiile acceptate de tipul de date stivă.
stack.h:
stivă extern_var1;
extern int stack_do_something (void);
Acum puteți crea un fișier numit stack.c care conține implementarea tipului de date stivă:
Referințe
- CIO Wiki (2019). Programare modulară. Preluat de la: cio-wiki.org.
- Definiții IT (2020). Programare modulară. Luat de la: defit.org.
- New Mexico Tech (2020). Programare modulară cu funcții. Luat de la: ee.nmt.edu.
- Christian Maioli (2020). 3 tehnici creative pentru scrierea codului modular. Beacon Tech. Luat de la: techbeacon.com.
- Geeks for Geeks (2020). Abordare modulară în programare. Luat de la: geeksforgeeks.org.
- Studiu (2020). Programare modulară: definiție și aplicație în Java. Luat de la: studiu.com.