Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

Her vises det hvordan en "oversetter" Python-programmer med flere moduler (filer)

Etterhvert som programmer vokser i størrelse, så er det naturlig å fordele koden på flere filer. Python kaller slike filer for moduler, og ved å bruke import-setninger kan én modul referere til og aktivere andre moduler. Java har en lignende mekanisme og også en import-setning, men forskjellene er viktige.

Forskjellen har primært med hva det vil si å aktivere en modul. Ved bruk av import i Python, vil modulen det refereres til bli utført, med mindre den allerede er det. I vårt tilfelle er det rpncalc4ui som importerer rpncalc4core med setningen

Code Block
languagepython
import rpncalc4core

Resultatet er uansett at navnene i den importerte modulen er tilgjengelig, altså at notatarket tilsvarende modulen er opprettet. Det kan bare være ett slikt ark pr. modul, og det er derfor import-setningen bare kjører modulen hvis den ikke allerede er blitt utført. Når en siden ønsker å referere til funksjoner inni modulen, så bruker en metodenavnet og punktum som prefix foran funksjonsnavnet, f.eks.

Code Block
languagepython
rpncalc4core.isOperand(token)

Java sine moduler kalles klasser, og er lik moduler på den måten at de deklarerer variabler og funksjoner (kalles metoder i Java), og kjører metodene i kontekst av et notatark med variablene i. En viktig forskjell er imidlertid at en kan ha mange slik notatark med de samme variablene i (men selvsagt forskjellige verdier) og at alle disse må opprettes manuelt. Som regel vil en lagre referanser til disse, slik at en kan referere til dem siden, og f.eks. kalle metodene, omtrent på samme måte som en i Python kaller funksjoner i moduler.

Når UI-module

I vårt tilfelle vil ui-klasse