Hva er egentlig programmering?
sammenlignet med
- kakeoppskrifter
- reparasjonshåndbok for en bil
Dermed er programmering
- en serie med instruksjoner som en datamaskin kan følge
- med programmering kan vi bestemme hva datamaskinen skal gjøre
Abstraksjonsprinsippet
- når har vi egentlig bruk for et dataprogram?
- når vi begynner å gjenta oss selv
- når oppgaver/beregninger begynner å bli rutine
- da kan vi begynne å se etter det generelle i problemet - det som kan abstraheres
Derfor:
DRY
Don't Repeat Yourself
Programmering handler om å bruke metoder som gjør at du slipper å repetere deg selv.
Vi skal se på byggeklosser i et programmeringsspråk.
Ta vare på dataene ved hjelp av variabler
var w1 = 2;
var h1 = 4;
Generaliser oppgavene som skal gjøres ved hjelp av funksjoner
function area(width, height) {
return width * height;
};
var a1 = area(4,2);
Ting i den virkelige verden kan beskrives med objekter
var r1 = {};
var r1 = {};
r1.width = 2;
r1.height = 3;
r1.area = function() {return this.width * this.height};
Her utvides objektet r1 med to variabler og en funksjon
Objekter - literal notation
var r1 = {
width: 2,
height: 3,
area: function() {return this.width * this.height}
}
Object - literal notation, men alt på en gang
var r1 = new Object();
r1.width = 2;
r1.height = 3;
r1.area = function () {return this.width * this.height};
Object - constructor notation
Object - constructor notation
function Rectangle(width, height) {
this.width = width;
this.height = height;
this.area = function () {return this.width * this.height};
}
var r1 = new Rectangle(2,3);
var r2 = new Rectangle(4,5);
Funksjonen Rectangle fungerer her som en prototype for nye objekter.
I Javascript er funksjoner også objekter
Merk at med denne metoden trenger vi ikke å gjenta kode for hvert nytt rektangel: DRY i praksis!
Hva kjennetegner Javascript?
- laget for å brukes i nettlesere
- Javascript kjøres på klienten
- imperativt
- funksjonelt
- loose typing (krever ikke deklarering av datatyper)
- objektorientert
- har prototypebasert, ikke klassebasert arv