# Programmering 2 - Inför prov & Övning
###### tags: `programmering` `oop` `övning`
### Att tänka på inför provet
- Det är en teoridel samt en praktisk del
- Teori: [Programmering 2 - Rehearsal OOP](https://hackmd.io/xR55VLhETRqJLZHORClEPA?both)
- Praktisk: Se exam.net (deefKR)
- Ett bra exempel på kod att kunna utantill:
```python
class City:
def __init__(self, name, population, country):
self.name = name
self.population = population
self.country = country
def display_info(self):
print(f"City: {self.name}")
print(f"Population: {self.population}")
print(f"Country: {self.country}")
city1 = City("New York", 8400000, "USA")
city1.display_info()
```
- Kunna de mest grundläggande koncepten (abstrahering, polymorphism, inheritance, objekt)
- Kunna skriva lätt implementation av klasser (self.variable)
- Kunna loopa och lägga till objekt i en lista
+ Notera att:
+ A = Abstract base class
+ I = Interface
+ C = Class
+ Init = initialize
+ Variables = red rectangle
+ Se till att det finns en print med i slutet av erat program så man kan se att det går att köra
---
### Gemensam uppgift
#### Instruktioner
+ Läs koden nedan och **förklara för din granne** alla de 7 stegen
+ Förklara för grannen vad de punkterna nedan gör
+ Skriv ned dina svar för vi kommer att gå igenom detta igen i helklass.
+ Vi följer tidsangivelserna nedan
+ Jag kommer i slutet av lektionen att slumpa elever som får gå fram och förklara en slumpad fråga (1-7)
```md!
1 min: Instruktioner
2 min: Läs igenom och anteckna dina tankar kort
10 min: Par diskussion
10 min: Grupperna tar och svarar på en av de 7 punkterna
5 min: Analys
5 min: Öva så att ni kan koden utantill
```
---
#### Kod
```python
class City:
def __init__(self, name, population, country):
self.name = name
self.population = population
self.country = country
def display_info(self):
print(f"City: {self.name}")
print(f"Population: {self.population}")
print(f"Country: {self.country}")
city1 = City("New York", 8400000, "USA")
city1.display_info()
```
#### Frågor
1. Förklara vad `class`innebär.
```python!
class City:
```
2. Här skapar vi en variabel som vi sen lägger `City` i, så här skapar man en instans av ett klass. Varför kan man aldrig köra en klass?
```python!
city1 = City("New York", 8400000, "USA")
```
3. Förklara vad `__init__` är för något och vad det ordet gör i koden.
```python!
def __init__(self, name, population, country):
```
4. Förklara vad `self` innebär och hur den skall användas korrekt.
```python!
self.name = name
self.population = population
self.country = country
```
5. Förklara varför vi behöver `self.name` och så vidare i denna koden nedan.
```python!
def display_info(self):
print(f"City: {self.name}")
print(f"Population: {self.population}")
print(f"Country: {self.country}")
```
6. Vad innbär koden nedan egentligen, vad är det som händer här?
```python!
city1.display_info()
```
7. I vilken ordning hade ni själva skrivit (*hela*) kodstycket? Finns det ett sätt som gör det lättare att komma ihåg?
## Skriv av koden och lär dig den utantill
```python
class City:
def __init__(self, name, population, country):
self.name = name
self.population = population
self.country = country
def display_info(self):
print(f"City: {self.name}")
print(f"Population: {self.population}")
print(f"Country: {self.country}")
city1 = City("New York", 8400000, "USA")
city1.display_info()
```
+ Jag kommer att kolla så att ni kan den utantill under lektionens gång. Om ni klarar att skriva koden utantill, förklara den och utan syntaxfel så bockar jag av er som klara.