-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuildAlibrary.js
More file actions
77 lines (72 loc) · 1.52 KB
/
buildAlibrary.js
File metadata and controls
77 lines (72 loc) · 1.52 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
//Build a Library with classes
class Media {
constructor(title, isCheckedOut, ratings) {
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(value){
this._isCheckedOut = value
}
toggleCheckOutStatus(){
this.isCheckedOut=!this.isCheckedOut
}
getAverageRating(){
let ratingsSum =
this.ratings.reduce ((currentSum,rating)=>
currentSum + rating)
return ratingsSum/this._ratings.length
}
addRating(value){
this.ratings.push(value)
}
}
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
}
}
const story = new Book ('HP','Piedra filosofal',550)
story.toggleCheckOutStatus()
console.log(story.isCheckedOut)
story.addRating(4)
story.addRating(5)
story.addRating(5)
console.log(story.getAverageRating())
const speed = new Movie ('Jan de Bont','speed',116)
speed.toggleCheckOutStatus()
console.log(speed.isCheckedOut)
speed .addRating(1)
speed .addRating(1)
speed .addRating(5)
console.log(speed.getAverageRating())