Classes
Class Basics
Classes group data and behavior so related code can move together.
class
A class is a blueprint for objects that share properties and methods.
Class Basics
basics.ts
Replay: real traced execution (multi-file project)
class Counter {
value: number = 0;
increment(): void {
this.value = this.value + 1;
}
}
const increments: number = 2;
const counter: Counter = new Counter();
for (let i = 0; i < increments; i++) {
counter.increment();
}
console.log(`value=${counter.value}`);
class Counter {
value: number = 0;
increment(): void {
this.value = this.value + 1;
}
}
const increments: number = 1;
const counter: Counter = new Counter();
for (let i = 0; i < increments; i++) {
counter.increment();
}
console.log(`value=${counter.value}`);
class Counter {
value: number = 0;
increment(): void {
this.value = this.value + 1;
}
}
const increments: number = 4;
const counter: Counter = new Counter();
for (let i = 0; i < increments; i++) {
counter.increment();
}
console.log(`value=${counter.value}`);
increments ← 2, counter ← [object Object]
6 }7}89const increments→ 2: number = 2; //@increments=1, 410const counter→ [object Object]: Counter = new Counter();for (let i = 0; i < increments; i++)
pass 1 of 29const increments: number = 2; //@increments=1, 410const counter: Counter = new Counter();1112for (let i0 = 0; i < increments2; i++) {13 counter.increment();14}values this step[object Object]counterthis.value ← 1
pass 1 of 21class Counter {2 value: number = 0;34 increment(): void {5 this.value = this.value→ 1 + 1;6 }for (let i = 0; i < increments; i++)
12for (let i = 0; i < increments; i++) {13 counter.increment();14}values this step[object Object]counterfor (let i = 0; i < increments; i++)
pass 2 of 29const increments: number = 2; //@increments=1, 410const counter: Counter = new Counter();1112for (let i1 = 0; i < increments2; i++) {13 counter.increment();14}values this step[object Object]counterthis.value ← 2
pass 2 of 21class Counter {2 value: number = 0;34 increment(): void {5 this.value = this.value→ 2 + 1;6 }for (let i = 0; i < increments; i++)
12for (let i = 0; i < increments; i++) {13 counter.increment();14}values this step[object Object]counterconsole.log(`value=${counter.value}`);
13 counter.increment();14}1516console.log(`value=${counter.value2}`);outputvalue=2
increments ← 1, counter ← [object Object]
6 }7}89const increments→ 1: number = 1;10const counter→ [object Object]: Counter = new Counter();for (let i = 0; i < increments; i++)
9const increments: number = 1;10const counter: Counter = new Counter();1112for (let i0 = 0; i < increments1; i++) {13 counter.increment();14}values this step[object Object]counterthis.value ← 1
1class Counter {2 value: number = 0;34 increment(): void {5 this.value = this.value→ 1 + 1;6 }for (let i = 0; i < increments; i++)
12for (let i = 0; i < increments; i++) {13 counter.increment();14}values this step[object Object]counterconsole.log(`value=${counter.value}`);
13 counter.increment();14}1516console.log(`value=${counter.value1}`);outputvalue=1
increments ← 4, counter ← [object Object]
6 }7}89const increments→ 4: number = 4;10const counter→ [object Object]: Counter = new Counter();for (let i = 0; i < increments; i++)
pass 1 of 49const increments: number = 4;10const counter: Counter = new Counter();1112for (let i0 = 0; i < increments4; i++) {13 counter.increment();14}All 4 passes — pass 1 is the card above pass i1 0 2 1 3 2 4 3 this.value ← 1
pass 1 of 41class Counter {2 value: number = 0;34 increment(): void {5 this.value = this.value→ 1 + 1;6 }All 4 passes — pass 1 is the card above pass this.value1 1 2 2 3 3 4 4 for (let i = 0; i < increments; i++)
12for (let i = 0; i < increments; i++) {13 counter.increment();14}values this step[object Object]counterfor (let i = 0; i < increments; i++)
12for (let i = 0; i < increments; i++) {13 counter.increment();14}values this step[object Object]counterfor (let i = 0; i < increments; i++)
12for (let i = 0; i < increments; i++) {13 counter.increment();14}values this step[object Object]counterfor (let i = 0; i < increments; i++)
12for (let i = 0; i < increments; i++) {13 counter.increment();14}values this step[object Object]counterconsole.log(`value=${counter.value}`);
13 counter.increment();14}1516console.log(`value=${counter.value4}`);outputvalue=4
Follow the Object
- A new counter starts with value
0. incrementsstarts at2.- The loop calls
increment()twice. - Each call adds
1to the counter. - The program prints
value=2. | increments | calls made | final value | | --- | --- | --- | | 1 | 1 | 1 | | 2 | 2 | 2 | | 4 | 4 | 4 |
Exercise: basics.ts
Reproduce value=2, then use increments 1 and 4 to predict each final value.