Mörkt tema
Objektorienterad programmering
I kursplanen står det att ni även ska lära er grundläggande objektorienterad programmering. Här kommer en kort förklaring på de vanligaste begreppen (som ni sedan kommer att bli bekanta med när ni läser C#).
Klasser & instanser
Klasser är ett sätt att "gruppera kod" kan man säga, och beskriva hur någonting ska fungera. Du kan tänka dig att det är som ett recept för hur någonting ska fungera.
OBS! Klass är i detta fallet inte en skolklass utan ett programmeringskoncept.
Enklast är kanske att exemplifiera via kod:
javascript
// Skapa klassen
class Student {
// Variabel för studentens namn
name;
constructor(name) {
this.name = name;
}
introduceSelf() {
console.log(`Hi! I'm ${this.name}!`);
}
}
// Skapa två studenter (två instanser av klassen)
const janeDoe = new Student('Jane');
const johnDoe = new Student('John');
// Introducera studenterna i konsolen
janeDoe.introduceSelft();
johnDoe.introduceSelft();1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Vad händer ovan
Ovan skapar vi alltså en "klass" som har till uppgift att lagra egenskaper för en student (namn), och en funktion som heter introduceSelf(). Funktioner som finns i klasser kallas metoder, men i praktiken är metod = funktion.
Konstruktor (constructor)
constructor är en "speciell" metod som är inbyggd, en "magic function". Den körs automatiskt när vi sedan skriver nyckelordet new när vi skriver new Student().
I exemplet ovan tar den emot en funktionsparameter, name. Den lagrar sedan namnet i den "lokala" variabeln name: this.name.
Arv (inheritance)
Ett koncept inom objektorienterad programmering är "arv". Det innebär att vi kan "kopiera" egenskaperna från en klass och återanvända dom i en annan. Vi behöver alltså inte upprepa oss själva/kopiera koden.
Exempelkod:
javascript
class GreatStudent extends Student {
grade;
constructor(name, grade) {
super(name);
}
introduceSelf() {
console.log(`Hello! I'm ${name} and my grade is ${grade}.`);
}
brag() {
console.log(`I'm the best!`);
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Här skapar vi då en klass som ärver alla egenskaper från Student-klassen (name). Vi skriver också över metoden introduceSelf och skriver ut ett annat meddelande, och lägger till ytterligare en metod, brag.
Skulle vi göra såhär:
javascript
const student1 = new Student('Alex');
student1.brag(); // ERROR!1
2
2
Då får vi ett fel på brag-metoden, för den finns bara OM vi skapar en instans av klassen GreatStudent.
javascript
const student2 = new GreatStudent('Alexa');
student2.brag();1
2
2
Privata metoder
Det går också att skapa s.k. "privata metoder", som inte går att anropa.
javascript
class Example {
somePublicMethod() {
this.#somePrivateMethod();
}
#somePrivateMethod() {
console.log("You called me?");
}
}
const myExample = new Example();
myExample.somePublicMethod(); // 'You called me?'
myExample.#somePrivateMethod(); // SyntaxError1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15