-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInheritance.js
More file actions
101 lines (100 loc) · 2.13 KB
/
Inheritance.js
File metadata and controls
101 lines (100 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
class Media{
constructor(title)
{
this._title=title;
this._isCheckedOut=false;
this._ratings=[];
}
get title(){
return this._title;
}
get isCheckedOut()
{
return this._isCheckedOut;
}
get ratings(){
return this._ratings;
}
set isCheckedOut(isCheckOut)
{
this._isCheckedOut=isCheckOut;
}
addRating(num){
this._ratings.push(num);
}
getAverageRating(){
let total=this._ratings.reduce((a,s)=>a+s,0);
console.log('total: '+total)
let avg=total/this._ratings.length;
return Math.floor(avg);
}
toggleCheckOutStatus(){
let chk=this._isCheckedOut;
// console.log('method status '+chk)
if(chk===true)
{
this._isCheckedOut=false;
}
else{
this._isCheckedOut=true;
}
// this._booleanProperty = !this._booleanProperty;
}
}
class Book extends Media{
constructor(author,title,pages)
{
super(title);
this._author=author;
this._pages=pages;
}
get author(){
return this._author;
}
get pages(){
return this._pages;
}
}
class Movie extends Media{
constructor(director,title,runTime)
{
super(title);
this._director=director;
this._runTime=runTime;
}
get director(){
return this._director;
}
get runTime(){
return this._runTime;
}
}
class Cd extends Media{
constructor(artist,title,isCheckedOut,ratings,songs)
{
super(title,isCheckedOut,ratings);
this._artist=author;
this._songs=songs;
}
get artist(){
return this._artist;
}
get songs(){
return this._songs;
}
}
const historyOfEverything=new Book('Bill Bryson','A short history of nearly everything',544);
historyOfEverything.toggleCheckOutStatus();
console.log(historyOfEverything.isCheckedOut)
historyOfEverything.addRating(4)
historyOfEverything.addRating(5)
historyOfEverything.addRating(5)
console.log(historyOfEverything.ratings)
console.log(historyOfEverything.getAverageRating());
const speed=new Movie('Jan de Bont','Speed',116);
speed.toggleCheckOutStatus();
console.log(speed.isCheckedOut)
speed.addRating(1)
speed.addRating(5)
speed.addRating(5)
console.log(speed.getAverageRating());