Skip to content

Instantly share code, notes, and snippets.

@codecademydev
Created April 28, 2019 09:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codecademydev/3bf0944cff64c2c196abc306c007bd05 to your computer and use it in GitHub Desktop.
Save codecademydev/3bf0944cff64c2c196abc306c007bd05 to your computer and use it in GitHub Desktop.
Codecademy export
class School {
constructor(name, level, numberOfStudents) {
this._name = name;
this._level = level;
this._numberOfStudents = numberOfStudents;
}
get name(){
return this._name;
}
get level(){
return this._level;
}
get numberOfStudents(){
return this._numberOfStudents;
}
set numberOfStudents(newNumberOfStudents) {
if (newNumberOfStudents.isNaN()){console.log('Invalid input: numberOfStudents must be set to a Number.');}
else {this._numberOfStudents = newNumberOfStudents};
}
quickFacts(){
console.log(`${this._name} educates ${this._numberOfStudents} students at the ${this._level} school level.`)
}
static pickSubstituteTeacher(substituteTeachers){
const randInt = Math.floor(Math.random() * substituteTeachers.length);
return substituteTeachers[randInt];
}
}
class PrimarySchool extends School {
constructor(name, numberOfStudents, pickupPolicy, averageTestScores){
super(name, 'primary', numberOfStudents);
this._pickupPolicy = pickupPolicy;
this._averageTestScores = [];
}
get pickupPolicy(){
return this._pickupPolicy;
}
get averageTestScores(){
return this._averageTestScores;
}
getAverageTestScore(){
//let testScoresSum = this._averageTestScores.reduce((currentSum, scores) => currentSum + scores, 0);
//let lengthOfTestScores = this._averageTestScores.length;
//return testScoresSum /= lengthOfTestScores;
//???? doesn't work
return this._averageTestScores.reduce((a, b) => {a + b}) / this._averageTestScores.length;
}
addScore(getAverageTestScore){
this._averageTestScores.push(getAverageTestScore);
}
}
class HighSchool extends School {
constructor(name, numberOfStudents, sportsTeams){
super(name, 'high', numberOfStudents);
this._sportsTeams = sportsTeams;
}
get sportsTeams(){
return this._sportsTeams;
}
}
const lorraineHan = new PrimarySchool('Lorraine Hansbury', 514, 'Students must be picked up by a parent, guardian, or a family member over the age of 13.');
lorraineHan.quickFacts();
lorraineHan.averageTestScore;
lorraineHan.addScore(9.0);
lorraineHan.addScore(9.9);
lorraineHan.addScore(8.9);
lorraineHan.addScore(9.1);
console.log(lorraineHan.averageTestScores);
console.log(lorraineHan.numberOfStudents);
const subTeacher = School.pickSubstituteTeacher(['Jamal Crawford', 'Lou Williams', 'J.R. Smith', 'James Harden', 'Jason Terry', 'Manu Genobli']);
console.log(subTeacher);
const alSmith = new HighSchool('Al E. Smith', 415, ['Baseball', 'Basketball', 'Volleybal', 'Track and Field']);
console.log(alSmith.sportsTeams);
console.log(alSmith.numberOfStudents);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment