Professional Documents
Culture Documents
11 P2 Modularno Programiranje
11 P2 Modularno Programiranje
Modularno programiranje
U slučaju daljnjeg korištenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete ovog
djela. Najbolji način da to učinite je linkom na ovu internetsku stranicu. Od svakog od gornjih uvjeta moguće
je odstupiti, ako dobijete dopuštenje nositelja autorskog prava.
Ništa u ovoj licenci ne narušava ili ograničava autorova moralna prava.
Tekst licence preuzet je s https://creativecommons.org/.
Programiranje 2
Modularno programiranje
Ukoliko želimo razviti program koji je lako čitljiv, pouzdan i relativno lak za
održavanje, potrebno je koristiti neki oblik modularnog dizajna software-a
i izbjegavati tzv. spaghetti kod (zapetljani kod bez jasne strukture)
Modularno programiranje
Svaki modul sadrži sve potrebno za izvršavanje samo određenog aspekta željene
funkcionalnosti.
Aspekti modularnog programiranja
Moduli najčešće formiraju direktni aciklični graf (directed acyclic graph) - DAG
To je graf bez usmjerenih ciklusa. Sastoji se od čvorova i usmjerenih grana.
Svaka grana povezuje jedan čvor sa drugim.
Ne postoji način da početkom u čvoru v vratimo na njega prateći redoslijed grana.
Pri kreiranju modularnog sustava, umjesto kreiranja monolitne aplikacije, pišemo odvojene module
koji se kasnije slažu u konačnu aplikaciju.
Često se ovakvi moduli kompajliraju odvojeno, a kasnije su povezani “linkerom”.
Just-in-time kompajleri neki od ovih konstrukcija mogu izvršavati i za vrijeme izvođenja.
Pisanje modularnog koda također je odličan način za dijeljenje koda tako što ćemo ga učiniti
dostupnim drugim programerima kako bi taj kod mogli koristiti u drugim programima i aplikacijama.
Za dijeljenje koda koristimo popularne alate kao što su GitHub, Python package index itd.
Kombinacijom ovih tehnika primjenjujemo “modularni način razmišljanja” kako bi kreirali što bolje
programe koje je lako održavati i na velikoj razini.
Modularno programiranje u Python-u
Modul može sadržavati objekte npr. datoteke, klase, atribute itd. kojima se može pristupiti nakon
uključivanja (import)
# Korištenje aliasa
np.sin(1)
fibonacci.fib(5)
fibonacci.ifib(10)
# Pojedinačno
from fibonacci import fib, ifib
print(fib(5))
Pisanje vlastitih modula
# Datoteka fibonacci.py
print("Modul je ucitan!")
...
# Datoteka test.py
import fibonacci
Kada učitavamo modul interpreter traži taj modul na sljedećim lokacijama ovim redom:
1. Direktorij datoteke koja se izvršava
2. Direktoriji PYTHONPATH, globalne environment varijable OS-a
3. Standardni Python direktorij npr. za Linux /usr/lib/python3.9
import random
print(random.__file__)
Zadaća
Funkciju iz prethodne zadaće učitati kao funkciju modula u novi program i pozvati je nakon traženja unosa
od korisnika.
PythonCourse