Skip to content

Commit

Permalink
changed links
Browse files Browse the repository at this point in the history
  • Loading branch information
TrollRoll2 committed Aug 19, 2024
1 parent 8281597 commit ec5e596
Show file tree
Hide file tree
Showing 15 changed files with 29 additions and 29 deletions.
2 changes: 1 addition & 1 deletion data/osa-10/2-atkamstmodifierare.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ Osynliga Olle, specialförmågor: Osynlighet

</sample-output>

[Detta](/osa-9/3-kapselointi#asetus--ja-havainnointimetodit) kapitel kan vara användbart.
[Detta](https://rage.github.io/ohjelmointi-24-sv/osa-9/3-inkapsling) kapitel kan vara användbart.

</programming-exercise>

Expand Down
4 changes: 2 additions & 2 deletions data/osa-10/3-objektorienterade-programmeringstekniker.md
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@ print(e1)

</sample-output>

[Inkapsla](/osa-9/3-kapselointi#kapselointi) implementeringen av de attribut som definieras i klassen så att fusket ovan inte är möjligt. Klassen ska inte ha några offentliga attribut och inga getter- eller sätter-metoder för euro eller cent.
[Inkapsla](https://rage.github.io/ohjelmointi-24-sv/osa-9/3-inkapsling) implementeringen av de attribut som definieras i klassen så att fusket ovan inte är möjligt. Klassen ska inte ha några offentliga attribut och inga getter- eller sätter-metoder för euro eller cent.

</programming-exercise>

Expand Down Expand Up @@ -619,7 +619,7 @@ C-värdheter på nätet

<programming-exercise name='Itererbar affärslista' tmcname='osa10-09_itererbar_affarslista'>

I uppgiftsbotten finns klassen `Affarslista` från [övningen i modul 8](/osa-8/2-luokat-ja-oliot#programming-exercise-kauppalista). Ändra klassen så att den är itererbar och därmed kan användas på följande sätt:
I uppgiftsbotten finns klassen `Affarslista` från [övningen i modul 8](https://rage.github.io/ohjelmointi-24-sv/osa-8/2-klasser-och-objekt). Ändra klassen så att den är itererbar och därmed kan användas på följande sätt:

```python
lista = Affarslista()
Expand Down
8 changes: 4 additions & 4 deletions data/osa-10/4-storre-applikation.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Objekt och klasser är långt ifrån nödvändiga i alla programmeringssammanhan

När programmen blir allt mer komplexa blir mängden detaljer snabbt ohanterlig, såvida inte programmet är organiserat på något systematiskt sätt. Även några av de mer komplicerade övningarna på den här kursen hittills skulle ha haft nytta av de exempel som ges i den här delen av materialet.

I flera decennier har begreppet [Separation of concerns](https://en.wikipedia.org/wiki/Separation_of_concerns) varit en av de centrala principerna inom programmering och inom datavetenskapen i stort. Citat från Wikipedia:
I flera decennier har begreppet [Separation of concerns](https://sv.wikipedia.org/wiki/Inkapsling_(Separation_of_Concerns)) varit en av de centrala principerna inom programmering och inom datavetenskapen i stort. Citat från Wikipedia:

_Separation of concerns is a design principle for separating a computer program into distinct sections such that each section addresses a separate concern. A concern is a set of information that affects the code of a computer program_

Expand All @@ -38,9 +38,9 @@ En annan vanlig metod för att hantera större program är objekt, genom objekto

## Ett fungerande exempel: telefonkatalog

Hur ska ett program delas in i klasser och objekt? Det här är inte alls en enkel fråga med ett enda godtagbart svar, så vi fortsätter med ett exempel. I del fem genomförde du en [telefonkatalogsapplikation](/osa-5/3-dictionary#programming-exercise-puhelinluettelo-versio-2), och nu ska vi genomföra något liknande med hjälp av objektorienterade programmeringsprinciper.
Hur ska ett program delas in i klasser och objekt? Det här är inte alls en enkel fråga med ett enda godtagbart svar, så vi fortsätter med ett exempel. I del fem genomförde du en [telefonkatalogsapplikation](https://rage.github.io/ohjelmointi-24-sv/osa-5/3-lexikon), och nu ska vi genomföra något liknande med hjälp av objektorienterade programmeringsprinciper.

Enligt principen om separation of concerns bör ett program delas upp i sektioner som var och en har sin egen sak att ta hand om. I objektorienterad programmering översätts detta till [principen om ett ansvar](https://en.wikipedia.org/wiki/Single-responsibility_principle). Utan att gå in på detaljerna framgår det grundläggande syftet redan av namnet: en enda klass och de objekt som skapas utifrån den ska ha ett enda ansvar i programmet.
Enligt principen om separation of concerns bör ett program delas upp i sektioner som var och en har sin egen sak att ta hand om. I objektorienterad programmering översätts detta till [principen om ett ansvar](https://sv.wikipedia.org/wiki/Single_responsibility_principle). Utan att gå in på detaljerna framgår det grundläggande syftet redan av namnet: en enda klass och de objekt som skapas utifrån den ska ha ett enda ansvar i programmet.


Objektorienterad programmering används ofta som ett sätt att modellera objekt och fenomen i den verkliga världen. Ett enskilt objekt i den verkliga världen modelleras med en enda klass i programkoden. I fallet med en telefonkatalog kan sådana objekt vara
Expand Down Expand Up @@ -323,7 +323,7 @@ class FilHanterare():

Konstruktormetoden tar namnet på filen som sitt argument. Metoden `ladda(self)` läser innehållet i filen. Varje rad delas upp i två delar: ett namn och en lista med siffror. Sedan läggs dessa till i en ordbok, med namnet som nyckel och listan som värde.

Metoden använder en smidig Python-funktion: det är möjligt att först välja några objekt från en lista separat och sedan ta resten av objekten i en ny lista. Du kan se ett exempel på detta nedan. Du kanske minns från [modul 6](osa-6/1-tiedostojen-lukeminen#csv-tiedoston-lukeminen) att strängmetoden `split` returnerar en lista.
Metoden använder en smidig Python-funktion: det är möjligt att först välja några objekt från en lista separat och sedan ta resten av objekten i en ny lista. Du kan se ett exempel på detta nedan. Du kanske minns från [modul 6](https://rage.github.io/ohjelmointi-24-sv/osa-6/1-lasa-filer) att strängmetoden `split` returnerar en lista.

```python
lista = [1, 2, 3, 4, 5]
Expand Down
2 changes: 1 addition & 1 deletion data/osa-11/1-list-comprehension.md
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ Ofta när vi har en villkorlig sats inkluderar vi också en else-gren. Eftersom

`<uttryck 1> if <villkor> else <uttryck 2>`

Vi stötte på dessa enradiga villkor, eller ternära operatorer, redan i [modul 7](https://programming-24.mooc.fi/part-7/6-more-features). Uttrycket ovan utvärderas till antingen `uttryck 1` eller `uttryck 2`, beroende på om villkoret är sant eller falskt.
Vi stötte på dessa enradiga villkor, eller ternära operatorer, redan i [modul 7](https://rage.github.io/ohjelmointi-24-sv/osa-7/6-funktionaliteter-python). Uttrycket ovan utvärderas till antingen `uttryck 1` eller `uttryck 2`, beroende på om villkoret är sant eller falskt.

Som en uppfräschning av ämnet kan vi säga att om vi behöver skriva ut det större av två tal och vi bara vill använda en enda utskriftssats, kan vi få plats med allt på en enda rad:

Expand Down
6 changes: 3 additions & 3 deletions data/osa-11/2-mer-om-comprehensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ if __name__ == "__main__":

</sample-output>

Låt oss nu ta reda på vad som gör en serie objekt "begripliga" (“comprehendible”). I föregående del lärde vi oss hur vi kan göra våra egna klasser itererbara. Det är exakt samma funktion som också möjliggör list comprehension. Om din egen klass är itererbar kan den användas som grund för en list comprehension. Följande klassdefinitioner är kopierade direkt från [modul 10](https://programming-24.mooc.fi/part-10/3-oo-programming-techniques#iterators):
Låt oss nu ta reda på vad som gör en serie objekt "begripliga" (“comprehendible”). I föregående del lärde vi oss hur vi kan göra våra egna klasser itererbara. Det är exakt samma funktion som också möjliggör list comprehension. Om din egen klass är itererbar kan den användas som grund för en list comprehension. Följande klassdefinitioner är kopierade direkt från [modul 10](https://rage.github.io/ohjelmointi-24-sv/osa-10/3-objektorienterade-programmeringstekniker):

```python

Expand Down Expand Up @@ -301,7 +301,7 @@ if __name__ == "__main__":

<programming-exercise name='Affärslistans produkter' tmcname='osa11-09_affarslistans_produkter'>

I modul 10 skapade du en [itererbar affärslista](/osa-10/3-olio-ohjelmoinnin-tekniikoita#programming-exercise-iteroitava-kauppalista). Objekt av en itererbar klass kan användas med list comprehensions. Uppgiftsmallen innehåller en avskalad version av `Affarslista` med knappt tillräckligt funktion för denna övning.
I modul 10 skapade du en [itererbar affärslista](https://rage.github.io/ohjelmointi-24-sv/osa-10/3-objektorienterade-programmeringstekniker). Objekt av en itererbar klass kan användas med list comprehensions. Uppgiftsmallen innehåller en avskalad version av `Affarslista` med knappt tillräckligt funktion för denna övning.

Skapa en funktion med namnet `affarslistans_produkter(affarslista, antal: int)` som tar som argument ett affarslista-objekt och ett heltalsvärde. Funktionen returnerar en lista av produktnamn. Listan borde inkludera endast produkter som har åtminstone ett lika stort antal som parametern `antal`.

Expand Down Expand Up @@ -334,7 +334,7 @@ alkoholfri öl

<programming-exercise name='Billigare prisskillnad' tmcname='osa11-10_billigare_prisskillnad'>

Denna övning innehåller en aning modifierad version av klassen [Bostad](/osa-9/1-oliot-ja-viittaukset#programming-exercise-asuntovertailu) från modul 9.
Denna övning innehåller en aning modifierad version av klassen [Bostad](https://rage.github.io/ohjelmointi-24-sv/osa-9/1-objekt-och-referenser) från modul 9.

Skapa en funktion med namnet `billigare(bostader: list, jamforelse: Bostad)` som tar en lista med bostäder och ett enda Bostad-objekt som sina argument. Funktionen ska returnera en lista som endast innehåller de bostäder i den ursprungliga listan som är billigare än jämförelsebostaden, tillsammans med prisskillnaden. Föremålen i den returnerade listan bör vara tupler, där det första föremålet är själva bostaden och den andra är prisskillnaden.

Expand Down
6 changes: 3 additions & 3 deletions data/osa-11/4-fler-exempel-pa-rekursion.md
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ Klarifikationer:
- uppgiften markeras som färdig genom att anropa på metoden `markera_fardig(self)`
- uppgifternas id är ett löpande nummer som börjar med 1. Id av första uppgiften är 1, andra uppgiften 2 osv.

**Tips:** id kan implementeras med en [klassvariabel](/osa-9/5-staattiset-piirteet#luokkamuuttujat).
**Tips:** id kan implementeras med en [klassvariabel](https://rage.github.io/ohjelmointi-24-sv/osa-9/5-klassattribut).

## Uppgiftsbok

Expand Down Expand Up @@ -354,7 +354,7 @@ for bestallning in bestallningar.alla_bestallningar():

</sample-output>

Ifall det inte finns någon uppgift med det givna id:t, ska metoden åstadkomma ett `ValueError`-undantag. Ifall du behöver en påminnelse om att åstadkomma undantag kan du kolla in [modul 6](/osa-6/3-virheet#poikkeusten-tuottaminen).
Ifall det inte finns någon uppgift med det givna id:t, ska metoden åstadkomma ett `ValueError`-undantag. Ifall du behöver en påminnelse om att åstadkomma undantag kan du kolla in [modul 6](https://rage.github.io/ohjelmointi-24-sv/osa-6/3-fel).

Metoderna `fardiga_bestallningar(self)` och `ofardiga_bestallningar(self)` fungerar som förväntat: båda returnerar en lista innehållande de relevanta uppgifterna från Uppgiftsboken.

Expand Down Expand Up @@ -391,7 +391,7 @@ Ifall det inte finns någon programmerare med det angivna namnet, ska metoden å

<programming-exercise name='Uppgiftsboksapplikation' tmcname='osa11-19_uppgiftsboksapplikation'>

I den här övningen ska du skapa en interaktiv applikation för att administrera de uppgifter som beställts från ett programvaruföretag. Implementeringen är helt upp till dig, men du kan använda byggstenarna från föregående övning i din applikation. Exemplen i [det sista avsnittet av modul 10](/osa-10/4-lisaa-esimerkkeja) kan också vara till hjälp.
I den här övningen ska du skapa en interaktiv applikation för att administrera de uppgifter som beställts från ett programvaruföretag. Implementeringen är helt upp till dig, men du kan använda byggstenarna från föregående övning i din applikation. Exemplen i [det sista avsnittet av modul 10](https://rage.github.io/ohjelmointi-24-sv/osa-10/4-storre-applikation) kan också vara till hjälp.

## Utan felhantering

Expand Down
2 changes: 1 addition & 1 deletion data/osa-12/3-funktionell-programmering.md
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,6 @@ print(summa)

Implementera funktionen användandes `reduce`- och `filter`-funktionerna!

När du jobbar på den här övningen kan det vara värt att komma ihåg att [returvärdet av filter är en iterator](/osa-12/3-funktionaalista-ohjelmointia#filter-palauttaa-iteraattorin).
När du jobbar på den här övningen kan det vara värt att komma ihåg att returvärdet av filter är en iterator.

</programming-exercise>
8 changes: 4 additions & 4 deletions data/osa-12/4-reguljara-uttryck.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,9 +281,9 @@ False

## Den stora finalen

Som avslutning på denna del av materialet ska vi arbeta lite mer med objekt och klasser genom att bygga ett lite mer omfattande program. Denna övning innefattar inte nödvändigtvis reguljära uttryck, men avsnitten om [Funktioner som argument ](/osa-12/1-funktio-parametrina) och [list comprehension](/osa-11/1-koosteet) kommer sannolikt att vara användbara.
Som avslutning på denna del av materialet ska vi arbeta lite mer med objekt och klasser genom att bygga ett lite mer omfattande program. Denna övning innefattar inte nödvändigtvis reguljära uttryck, men avsnitten om [Funktioner som argument ](https://rage.github.io/ohjelmointi-24-sv/osa-12/1-funktioner-som-argument) och [list comprehension](https://rage.github.io/ohjelmointi-24-sv/osa-11/1-list-comprehension) kommer sannolikt att vara användbara.

Du kan också ha nytta av de exempel som finns i [modul 10](/osa-10/4-lisaa-esimerkkeja).
Du kan också ha nytta av de exempel som finns i [modul 10](https://rage.github.io/ohjelmointi-24-sv/osa-10/4-storre-applikation).

<programming-exercise name='Statistik i ordning' tmcname='osa12-15_statistik_i_ordning'>

Expand All @@ -307,7 +307,7 @@ Inlägget för en enskild spelare är i följande format:

Båda filerna innehållar en lista av inlägg enligt ovanstående format.

Ifall du behöver en uppfriskare när det gäller hantering av JOSN-filer, kan du ta en titt på [modul 7 i kursmaterialet](/osa-7/4-datan-kasittely#json-tiedoston-lukeminen).
Ifall du behöver en uppfriskare när det gäller hantering av JOSN-filer, kan du ta en titt på [modul 7 i kursmaterialet](https://rage.github.io/ohjelmointi-24-sv/osa-7/4-behandla-data).

## Sök och lista

Expand Down Expand Up @@ -381,7 +381,7 @@ Den sista raden i exemplet ovan är till för att hjälpa dig att beräkna bredd

Förkortningen för teamet skrivs ut från det 22:a tecknet och framåt. `+`-tecknet är det 30:e tecknet och `=`-tecknet är det 35:e tecknet. Alla fält ska vara justifierade till högerkanten. Alla blanksteg är mellanslagstecken.

F-strängar är förmodligen det enklaste sättet att uppnå den önskade utskriften. Processen är liknande som [denna övning](/osa-6/1-tiedostojen-lukeminen#programming-exercise-kurssin-tulokset-osa-3) från modul 6.
F-strängar är förmodligen det enklaste sättet att uppnå den önskade utskriften. Processen är liknande som övningen Kursresultat del 3 från [modul 6](https://rage.github.io/ohjelmointi-24-sv/osa-6/1-lasa-filer).

## Lista spelare enligt poäng

Expand Down
4 changes: 2 additions & 2 deletions data/osa-8/1-objekt-och-metoder.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Efter den här delen

</text-box>

Detta är första delen av den Avancerade Kursen inom Programmering. Materialet är designat för att bli använt med Visual Studio Code editeraren, liksom den föregående kursen Introduktion till Programming. Ifall du inte använt Visual Studio Code tidigare, så hittar du installeringsinstruktionerna [här](https://www.mooc.fi/fi/installation/vscode) och en introduktion till programmeringsomgivningen från förra kursen [här](https://programming-24.mooc.fi/part-4/1-vscode).
Detta är första delen av den Avancerade Kursen inom Programmering. Materialet är designat för att bli använt med Visual Studio Code editeraren, liksom den föregående kursen Introduktion till Programming. Ifall du inte använt Visual Studio Code tidigare, så hittar du installeringsinstruktionerna [här](https://www.mooc.fi/fi/installation/vscode) och en introduktion till programmeringsomgivningen från förra kursen [här](https://rage.github.io/ohjelmointi-24-sv/osa-4/1-vscode).

I introduktion till Programmering kursen så lade vi märke till att det ofta är logiskt att gruppera relaterad data tillsammans i våra program. Ifall vi till exemepl skulle förvara information om en bok skulle det vara logiskt att använda oss av en tupel eller en ordlista för att organisera datan till en enskild datastruktur.

Expand All @@ -39,7 +39,7 @@ namn = "Kodningsboken"
forfattare = "Peter Python"
ar = 1992

# Yhdistetään yhdeksi sanakirjaksi
# Slår ihop till en ordlista
bok = {"namn": namn, "författare": forfattare, "år": ar}

# Vi skriver ut bokens namn
Expand Down
2 changes: 1 addition & 1 deletion data/osa-8/4-metoder-i-egna-klasser.md
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ Pythonson

<programming-exercise name='Nummerstatistik' tmcname='osa08-11_nummerstatistik'>

I den här övningen ska du skapa ett program för att arbeta med siffror, på samma sätt som i [slutet av modul 2](/osa-2/4-yksinkertainen-silmukka#programming-exercise-lukujen-kasittelya) i kursen Introduktion till Programmering. Den här gången ska du definiera en klass för ändamålet.
I den här övningen ska du skapa ett program för att arbeta med siffror, på samma sätt som i [slutet av modul 2](https://rage.github.io/ohjelmointi-24-sv/osa-8/4-metoder-i-egna-klasser) i kursen Introduktion till Programmering. Den här gången ska du definiera en klass för ändamålet.

### Mängden nummer

Expand Down
4 changes: 2 additions & 2 deletions data/osa-8/5-fler-exempel.md
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ Kortets saldo är 235.0 euro

</sample-output>

Ifall kortet försöker laddas med en negativ mängd ska metoden [åstadkomma ett undantag](/osa-6/3-virheet#poikkeusten-tuottaminen) av typen `ValueError`:
Ifall kortet försöker laddas med en negativ mängd ska metoden [åstadkomma ett undantag](https://rage.github.io/ohjelmointi-24-sv/osa-6/3-fel) av typen `ValueError`:

```python
kort = Lunchkort(10)
Expand All @@ -349,7 +349,7 @@ ValueError: Det går inte att lägga till mindre än noll

</sample-output>

**OBS:** metoden ska _åstadkomma_ ett undantag, se [modul 6](/osa-6/3-virheet#poikkeusten-tuottaminen) i materialet hur man gör. Metoden får under inga omständigheter själv skriva ut nånting!
**OBS:** metoden ska _åstadkomma_ ett undantag, se [modul 6](https://rage.github.io/ohjelmointi-24-sv/osa-6/3-fel) i materialet hur man gör. Metoden får under inga omständigheter själv skriva ut nånting!

### Flera kort

Expand Down
2 changes: 1 addition & 1 deletion data/osa-9/1-objekt-och-referenser.md
Original file line number Diff line number Diff line change
Expand Up @@ -623,7 +623,7 @@ Vägningar utförda 6

<programming-exercise name='Lunchkort och betalterminal' tmcname='osa09-04_lunchkort_och_betalterminal'>

I föregående del fanns en [övning](/osa-8/5-lisaa-esimerkkeja#programming-exercise-maksukortti) där du implementerade klassen `Lunchkort`. Kortet hade separata metoder för att äta en vanlig och en speciell lunch, samt en metod för att sätta in pengar på kortet.
I föregående del fanns en [övning](https://rage.github.io/ohjelmointi-24-sv/osa-8/5-fler-exempel) där du implementerade klassen `Lunchkort`. Kortet hade separata metoder för att äta en vanlig och en speciell lunch, samt en metod för att sätta in pengar på kortet.

Klassen `Lunchkort`, så som du ombads implementera den, har dock vissa problem. Kortet självt hade kunskap om priserna på de olika lunchalternativen och visste att subtrahera rätt mängd pengar från saldot baserat på dessa. Men tänk dig att priserna ändrades eller att nya varor infördes i systemet, men att flera kort redan var registrerade i systemet. Detta skulle innebära att alla befintliga kort skulle behöva ersättas med versioner med kunskap om de nya priserna.

Expand Down
Loading

0 comments on commit ec5e596

Please sign in to comment.