Send a link to your students to track their progress
58 Terms
1
New cards
Statements
Saker som åstadkommer en effekt, när vi utför ett statement så förändras/händer något. Ex: *import *Return, break, continue, pass, raise, yield *if, while, for, try, with *def, class
2
New cards
Expressions
Utmärks av att de åstadkommer ett svar/resultat Ex: *Names(name) indexing (name[index]) *Literals ("hello", 5, 0.1, [], ...] *Method calls (method(args)) Operators(+, **, and, ...]
3
New cards
Kontrollflöde
Ordningen som programsatserna exekveras i. Kontrollflödet baseras på flera byggstenar (Se kommande slides).
4
New cards
Byggsten: Assignments
Uppdatering av variablers tillstånd (x = y)
5
New cards
Byggsten: Sequencing
Att först göra det ena och därefter det andra.
6
New cards
Byggsten: Branching
Att göra det ena ELLER det andra. (If, else)
7
New cards
Byggsten: Looping
Att upprepa ett (eller flera) steg många gånger. (for, while).
8
New cards
Byggsten: Exceptions (raise, try, except)
Ett exception är ett objekt som representerar ett felmeddelande. Ett statement: raise, kastar ett exception. Vid användning av raise så exekveras närmsta except i koden. Kod på rader mellan raise och except körs alltså aldrig. Vi kan fånga exceptions med ett annat statement: try följt av except
9
New cards
Flödesschema
En grafisk bild av ett program, vilket ger en bra överblick av hur programmet är uppbyggt.
10
New cards
Dataflöde (Implicit och Explicit)
Hur data rör sig mellan olika delar av programmets tillstånd. Detta kan ske: Explicit - ("synligt, uttalat"), genom att värden skickas som argument och returvärden mellan anropare och utförare. Implicit - ("Underförstått, outtalat"), genom att värden uppdateras i minnesutrymmen som både anropare och utförare har tillgång till.
11
New cards
Typer
En typ är en mängd av värden, som har det gemensamt att vi kan behandla dem på samma sätt i ett program. OBS! Samma sätt != samma resultat Ex, vi får olika resultat om vi multiplicerar med 2 eller 3, men vi kan använda båda för multiplikation. Alla värden av typ int låter oss använda samma operatorer.
12
New cards
Referenstyp
En referens är en adress som låter oss hitta ett objekt där det finns lagrat i minnet En referens är ett värde - en adress är begränsad i storlek och ryms i en variabel. En referens är inte muterbar, den är vad den är - men objektet den pekar på kan muteras
13
New cards
Integer (int)
Värden av typen heltal.
14
New cards
Flyttal (float)
Floattal är värden av typen rationella tal. Alltså bråk, decimaler...
15
New cards
Textsträng (str)
En textsträng kan innehålla både bokstäver och siffror. Notera att en textsträng som enbart innehåller siffror kan inte behandlas på samma sätt som en int/float.
16
New cards
Värden
Allting vi lagrar direkt i variabler är värden. Värden har begränsad storlek, för att få plats i fördefinierade boxar i minnet. Värden är inte muterbara. Vi kan uppdatera en variabel, så att den pekar på ett nytt värde. Men vi kan inte ändra e.g. värdet av siffran 42.
17
New cards
Objekt
Ett objekt är en sammansättning av data (attribut) och beteende(metoder), som lagras tillsammans som en enhet på heapen. Objekt är inte värden, och kan inte lagras direkt i variabler. Objekt kan vara godtyckligt stora (t.ex. en lista med flera miljoner element). Objekt kan (men måste inte) vara muterbara, genom uppdatering av dess attribut. Allting som inte är "primitiva" värden är objekt.
18
New cards
Variabel
En variabel är ett godtyckligt namn, exempelvis x, som kan lagra olika sorters värden.
19
New cards
Attribut
Ett attribut är en variabel inom ett objekt. Ex, Dog kan ha attribut "age" och "height"
20
New cards
Referens
En referens är en adress till den plats på heapen där ett objekt bor.
21
New cards
Alias
Flera referenser som pekar på samma objekt.
22
New cards
Stacken
Värden för variabler sparas "ovanpå varann" i en minnesarea som kallas för stack. Nya variabler staplas överst.
23
New cards
Heapen
Objekt skapas och ligger i en separat minnesarea kallad heap. Objekten kan ligga huller om buller, referenserna håller reda på dem.
24
New cards
Scope
Med scope (eller räckvidd) menas den del av ett program där en identifierare (attribut, variabel, parameter, metod etc) får användas. Ett globalt scope får inte tillgång till lokala variabler.
25
New cards
Global variabel
När man deklarerar en variabel utanför en funktion kommer det att bli en global variabel. Detta betyder att man kan nå den från vart man än befinner sig i programmet.
26
New cards
Pass-by-value (PBV)
Argument skickas alltid som värden till funktioner. Ex: Anropas calculate_area_of_sphere(radius, area) så är det värdet i area som skickas, inte variabeln själv. Uppdateringar av area i calculate_area_of_sphere påverkar inte area utanför funktionen.
27
New cards
Pass-by-reference (PBR)
Vill vi kunna uppdatera en parameter på ett sätt som märks av anroparen måste det vi skickar vara en referens, som pekar på ett muterbart objekt.
28
New cards
Funktioner och metoder
En metod är en definierad del av programmet som kan anropas för att utföra en viss uppgift.
29
New cards
Argument
Indata till en metod
30
New cards
Parameter
Indata som en metod förväntar sig få värden på vid anrop
31
New cards
Returvärde (resultat)
Genom att använda return följt av en variabel i en funktion, så får anroparen tillbaka värdet i variabeln.
32
New cards
Command Query Separation
En metod skall antingen vara en accessor eller en mutator, inte både och.
33
New cards
Class
En class är en maskin som kan producera en sorts objekt, som den kan skapa instanser av efter önskemål. Ex: classen dog kan ha två instanser, en hund med attributen: namn Max och vikt 10 kg, en annan med attributen: namn Pelle och vikt 7 kg.
34
New cards
Konstruktor
Ett anrop av en konstruktor innebär ett meddelande till en class att skapa nya instanser.
35
New cards
Klass- och Instansattribut samt Klass- och Instansmetoder
En class kan ha egna attribut och metoder som inte hör till instanserna den skapar. Attribut och metoder som tillhör classen kallas classattribut och classmetoder. Attribut och metoder som tillhör instanserna kallas instansattribut och instansmetoder.
36
New cards
Dekoratorer
Klassmetoder måste dekoreras med @staticmethod eller @classmethod, annars kommer Python tolka första argumentet som en referens till instansen (det vi brukar döpa till self).
37
New cards
Klassobjekt
En Klassdeklaration definierar alltid ett enda klassobjekt. Klassobjekt bor på heapen. En Klassdeklaration specificerar också en typ (ett gränssnitt; en mängd attribut och metoder) för de instanser (objekt) som klassobjektet kan skapa; samt en konstruktor som specificerar hur instanserna skapas.
38
New cards
Instansobjekt
Ett instansobjekt innehåller informationen som klassen anger att objektet måste ha, de attributen och egenskaper.
39
New cards
Funktionell nedbrytning
Användandet av funktioner och metoder, för att dela upp stora problem i mindre och enklare delar. Med bra namngivning på metoderna blir koden lättare att förstå, och kodduplicering undviks.
40
New cards
Gränssnitt allmänt
Gränssnitt för X = Hur kan Y kommunicera med X?
41
New cards
Gränssnitt för en funktion
Gränssnittet för en funktion är: * Dess namn. * Vilka argument som förväntas och vilka krav som ställs på dessa. * Vad som förväntas hända vid ett anrop (resultat, effekter).
42
New cards
Gränssnitt för ett objekt
Gränssnittet för ett objekt är: * Alla de publika metoder och attribut som en anropare kan använda på objektet. * Hur dessa förväntas användas, * och vad anroparen kan förvänta sig i gengäld
43
New cards
Gränssnitt för ett bibliotek
Gränssnittet för ett bibliotek är: * Alla de klasser (med metoder och attribut) och funktioner som biblioteket tillhandahåller, * Hur dessa är tänkta att fungera tillsammans. Kallas ofta för API.
44
New cards
Gränssnitt för en användare
Användargränssnitt aka User Interface (UI), avgör hur användaren (inte programmeraren) interagerar med en applikation. * IN: Vilka sätt har användaren att styra och tillhandahålla information till programmet, och vad förväntas hända när den gör det. Ex skriva input i terminalen, musklick osv... * UT: Hur presenteras information från programmet för användaren. Ex: Text, grafik, ljud, haptik
45
New cards
enum (Uppräkningstyp)
En datatyp som består av ett förbestämt begränsat antal värden. Till exempel korten i en kortlek.
46
New cards
Abstraktion
Abstraktion handlar om att förenkla, i syfte att lyfta fram det som är väsentligt. Abstraktion är ett kognitivt hjälpmedel, funktionell nedbrytning är abstraktion och gör alltså koden lättare för en människa att förstå. Att skapa klasser är också abstraktion.
47
New cards
Principle of least knowledge
Princip för systemutveckling: Varje del av systemet (varje objekt) ska veta så lite som möjligt om resten av systemet. 1 - varje objekt ska bara ha kunskap om de andra objekt som det måste utbyta meddelanden med (dess "vänner" eller "grannar"); 2 - ett objekt ska bara ta emot meddelanden från sina vänner (enligt punkt 1), inte från okända objekt; 3 - ett objekt ska bara prata med sina vänner.
48
New cards
Principle of least astonishment
Principle of least astonishment innebär att när två element i ett gränssnitt står i konflikt med varandra eller är tvetydiga, ska resultatet vara det som orsakar minst förvåning för den mänskliga användaren när konflikten uppstår, eftersom det är detta som avgör hur användbart gränssnittet är.
49
New cards
Listor [] och indexering
Listor innehåller godtyckligt många element. Varje element har ett unikt index och det första elementet i listan har index 0. Ex: some_list = [ "1", "2, "3.14", "Snus", "s"] print(some_list[3]) printar Snus
50
New cards
Listfunktioner
.append(x) lägg till x sist i listan .remove(x) ta bort den första förekomsten av x .index(x) returnera index av den första förekomsten av x .insert(k, x) lägg till x på plats k i listan .clear() ta bort alla element .reverse() vänd på ordningen till omvänd ordning .sort() sortera elementen i stigande ordning
51
New cards
Polymorfism
Polymorfism innebär att ett objekt kan anta många olika typer.
52
New cards
Arv och supertyper
En klass kan ärva funktionalitet av en annan klass. Den klass som ärver kallas för subklass, och den klass vi ärver ifrån kallas superklass. En subklass ärver samtliga publika metoder och attribut från sin superklass. Arv ger polymorfism för instanserna av subtyperna.
53
New cards
Subklasser
• Vi kan se en subklass Sub(Sup) som en vidareutveckling av sin superklass Sup. • Maskinen som skapar instanser av Sub kommer (explicit eller implicit) börja med att skapa en instans av Sup, och sen bygga vidare på denna • Maskinen Sub skickar anrop till ärvda klassmetoder vidare till maskinen Sup. • Instanser av Sub består delvis av (är vidareutvecklingar av) en instans av Sup, och använder denna för ärvda instansmetoder.
54
New cards
Overriding
Overriding låter subtyper definiera egna beteenden för den funktionalitet de delar med sin supertyp. De "skriver över" det de annars hade ärvt, med något eget.
55
New cards
Komposition
Implementera den gemensamma funktionaliteten i en hjälpklass. Låt klasser och instanser som behöver funktionaliteten ha ett attribut med en referens till (en instans av) hjälpklassen. Återanvänd funktionaliteten genom att delegera anrop.
56
New cards
Delegering
Delegering implementeras genom en metod som skickar anropet vidare till hjälpklassen.
57
New cards
Overloading
Samma metod kan användas flera gånger genom att skicka olika antal argument till funktionen.
58
New cards
Inkapsling
• Varje objekt har ett publikt gränssnitt, och en intern implementation. •Anropare bör inte ha tillgång till de variabler som hör till implementationen, bara väl utvalda metoder (och ibland attribut) som utgör det publika gränssnittet. • Vi kan dölja eller kapsla in metoder och attribut inuti en klass, så de inte kan användas utanför klassen självt, genom att låta deras namn börja med __ ("dunder", double underscore).