JavaScript Class & Inheritance
by Rafa Ola
JavaScript
/** Composition EG. 1: The Author and Book Classes */
class Author {
// The constructor i.e Similar to Java
// Giving the construtor a default value
constructor({name = 'yo', email = 'yo', gender = 'yo'}){
// private instance variables
// This. -> will make them public
this.name = name;
this.email = email;
this.gender = gender;
}
// Setters and getters
getName(){
//document.write(this.name)
return this.name;
}
getEmail(){
document.write(this.email);
return this.email;
}
getGender(){
document.write(this.gender);
return this.gender;
}
setEmail(newEmail){
this.email = newEmail;
}
}
class Book{
constructor (bookName, author = {}, price, qty){
this.bookName = bookName;
this.author = author;
this.price = price;
this.qty = qty;
}
getBookName(){
document.write(this.bookName)
return this.bookName;
}
getAuthor(){
document.write(this.author)
return this.author;
}
getPrice(){
document.write(this.price)
return this.price;
}
setPrice(p){
this.price = p;
}
getQty(){
document.write(this.qty)
return this.qty;
}
setQty(q){
this.qty = q;
}
}
/** Test Driver Program for Author & Book classes*/
// We need an Author instance to create a Book instance
let ahTeck = new Author({name:"Tan Ah Teck", email: "[email protected]", gender:'m'});
console.log(ahTeck);
// Test Book's constructor
dummyBook = new Book("Java for dummies", ahTeck, 9.99, 99);
console.log(dummyBook);
// Test Setters and Getters
dummyBook.setPrice(8.88);
dummyBook.setQty(88);
console.log(dummyBook);
console.log("name is: " + dummyBook.getBookName());
console.log("price is: ", dummyBook.getPrice());
console.log("qty is: ", dummyBook.getQty());
console.log("author is: " , dummyBook.getAuthor());
console.log("author's name is: " + dummyBook.getAuthor().getName());
console.log("author's email is: " + dummyBook.getAuthor().getEmail());
console.log("author's gender is: " +...