PythonPodcast 30 - itnett/FTD02H-N GitHub Wiki
Eventyret om Kodeland og Den Magiske Python – Del 4: Utforske UML, Objektorientert Programmering og Datasikkerhet
I denne episoden skal vår helt, Variabel, begi seg inn i noen av de mer komplekse og avanserte aspektene ved Python. Dette inkluderer UML (Unified Modeling Language), objektorientert programmering (OOP), og hvordan man kan sørge for at applikasjonene er trygge og sikre gjennom datasikkerhet.
Kapittel 1: UML – Kartet til koden din
Variabel vandret inn i en skog full av rare symboler og bokser. Han møtte en klok karttegner ved navn UML Mapper, som sa: "Før du bygger store applikasjoner, er det ofte nyttig å ha et kart over koden din. UML er et verktøy som hjelper deg å visualisere og planlegge hvordan deler av programmet henger sammen."
UML (Unified Modeling Language) er en standardisert måte å tegne diagrammer på som beskriver strukturen og oppførselen til et system. Det hjelper programmerere med å planlegge komplekse systemer før de skriver koden.
Mapper viste ham et klasse-diagram, som er en av de vanligste formene for UML-diagrammer.
Eksempel på et klasse-diagram:
| Person |
| + navn: str | | + alder: int |
| + gå(): void |
"Dette diagrammet viser en klasse som heter 'Person', med to attributter (navn og alder) og en metode (gå)." Variabel skjønte at ved å tegne opp hvordan klasser henger sammen, kunne han bedre forstå og strukturere sitt eget program før han skrev koden.
Kapittel 2: Objektorientert Programmering (OOP) – Magiske klasser og objekter
Mens Variabel lærte om UML, møtte han Klassemester OOP, en vis mann som viste hvordan UML-diagrammer kunne omdannes til virkelige klasser og objekter i Python.
OOP (Objektorientert programmering) er en programmeringsmetode som bruker klasser og objekter til å strukturere koden på en logisk måte. En klasse er en mal eller blueprint for et objekt, mens et objekt er en spesifikk instans av en klasse.
Klassemester OOP lærte Variabel hvordan han kunne lage klasser i Python:
Eksempel på klasse:
class Person: def init(self, navn, alder): self.navn = navn self.alder = alder
def gå(self):
print(f"{self.navn} går.")
Opprette et objekt
variabel = Person("Variabel", 21) variabel.gå() # Output: Variabel går.
Forklaring:
class: Definerer en klasse, som er en mal for objekter.
init(): Dette er en konstruktør som initialiserer objektets attributter når objektet opprettes.
self: Dette refererer til den nåværende instansen av klassen og brukes for å få tilgang til objektets attributter og metoder.
Variabel begynte å forstå kraften av OOP. Han kunne lage objekter som representerte virkelige ting, som mennesker, biler, eller til og med magiske gjenstander, og gi dem både egenskaper og handlinger.
Kapittel 3: Datasikkerhet – Skjoldet mot de mørke kreftene
En dag mens han vandret gjennom Kodeland, kom Variabel over en gruppe trollmenn som var opptatt med å beskytte sine applikasjoner mot farer utenfra. Disse trollmennene var eksperter på datasikkerhet, og de fortalte Variabel om viktigheten av å beskytte koden og dataene mot trusler.
Datasikkerhet handler om å sørge for at dataene i programmet ditt er sikre og ikke kan manipuleres eller stjeles. Dette innebærer ting som å håndtere sensitive data på en trygg måte, bruke sikre passord, og beskytte mot ondsinnede angrep som hacking.
Trollmennene lærte Variabel om hvordan han kunne bruke kryptering for å beskytte sensitive data, og hvordan han kunne validere input for å sikre at ingen kunne manipulere programmet hans.
Eksempel på enkel kryptering:
from cryptography.fernet import Fernet
Generer en nøkkel og initialiser krypteringsobjektet
nøkkel = Fernet.generate_key() cipher = Fernet(nøkkel)
Krypter en melding
melding = "Hemmelig beskjed" kryptert_melding = cipher.encrypt(melding.encode())
Dekrypter meldingen
dekryptert_melding = cipher.decrypt(kryptert_melding).decode() print(dekryptert_melding) # Output: Hemmelig beskjed
Forklaring:
Kryptering: Konverterer data til en form som er uleselig uten en spesiell nøkkel.
Fernet.generate_key(): Lager en sikker nøkkel for kryptering.
cipher.encrypt(): Krypterer meldingen.
cipher.decrypt(): Dekrypterer meldingen tilbake til leselig form.
Trollmennene fortalte også Variabel at det var viktig å validere all input fra brukerne for å forhindre angrep som SQL-injeksjoner og andre former for hacking.
Kapittel 4: Testing og Debugging – Fellen som fanger feilene
Variabel forstod at ingen kode er perfekt første gangen. Selv om koden så ut til å fungere, kunne det skjule seg bugs (feil) som ville dukke opp i uventede situasjoner. Heldigvis møtte han den vise trollmannen Debug og hans følgesvenn Test.
Debugging er prosessen med å finne og fikse feil i koden din. Testing er å lage scenarier for å forsikre deg om at koden oppfører seg som forventet.
Debug fortalte ham at han kunne bruke unntaksbehandling for å fange feil i koden og forhindre at programmet krasjer.
Eksempel på unntaksbehandling:
try: resultat = 10 / 0 except ZeroDivisionError: print("Feil: Du kan ikke dele på null!")
Test lærte ham at han kunne skrive automatiserte enhetstester som sørget for at hver del av programmet fungerte som det skulle.
Eksempel på en enkel test:
def legg_sammen(a, b): return a + b
def test_legg_sammen(): assert legg_sammen(2, 3) == 5 assert legg_sammen(-1, 1) == 0
test_legg_sammen() print("Alle tester bestått!")
Variabel skjønte nå at testing og debugging var viktige deler av å bygge sikre og pålitelige programmer.
Kapittel 5: Kommunikasjon og API-er – Broen mellom applikasjoner
Når Variabel beveget seg videre i Kodeland, møtte han igjen API Magnus. Denne gangen lærte Magnus ham mer avanserte teknikker for å kommunisere mellom ulike applikasjoner. Han forklarte at API-er ikke bare kunne brukes for å hente data fra eksterne tjenester, men også for å sende data til andre systemer og samhandle med dem.
Magnus viste hvordan Variabel kunne lage sitt eget API ved hjelp av Python-verktøy som Flask eller FastAPI. Dette lot ham bygge applikasjoner som kunne samhandle med andre systemer på en effektiv måte.
Eksempel på et enkelt API med Flask:
from flask import Flask, jsonify
app = Flask(name)
@app.route('/api/data') def get_data(): data = {"melding": "Hei fra API!"} return jsonify(data)
if name == "main": app.run()
Variabel forstod nå at API-er var kraftige verktøy for å bygge systemer som kunne snakke med hverandre.
Oppsummering av Del 4
I denne episoden har vi sett hvordan Variabel har fått innsikt i flere avanserte konsepter:
-
UML – Hvordan planlegge og visualisere koden før man skriver den.
-
Objektorientert programmering – Hvordan bruke klasser og objekter til å strukturere koden.
-
Datasikkerhet – Hvordan beskytte koden og dataene mot trusler utenfra.
-
Testing og Debugging – Hvordan sikre at koden er feilfri og fungerer som forventet.
-
API-er – Hvordan bygge bro mellom applikasjoner og sende data mellom systemer.
Neste episode
I den siste episoden i denne serien skal Variabel sette sammen alt han har lært og bygge et fullverdig prosjekt. Vi vil se hvordan alle konseptene henger sammen, og hvordan man kan bruke Python til å løse store og små utfordringer i den