class Person { constructor(firstName, lastName, age, country, city) { this.firstName = firstName this.lastName = lastName this.age = age this.country = country this.city = city this.score = 0 this.skills = [] } getFullName() { const fullName = this.firstName + ' ' + this.lastName return fullName } get getScore() { return this.score } get getSkills() { return this.skills } set setScore(score) { this.score += score } set setSkill(skill) { this.skills.push(skill) } getPersonInfo() { let fullName = this.getFullName() let skills = this.skills.length > 0 && this.skills.slice(0, this.skills.length - 1).join(', ') + ` and ${this.skills[this.skills.length - 1]}` let formattedSkills = skills ? `He knows ${skills}` : '' let info = `${fullName} is ${this.age}. He lives ${this.city}, ${this.country}. ${formattedSkills}` console.log(this) return info } static favoriteSkill() { const skills = ['HTML', 'CSS', 'JS', 'React', 'Python', 'Node'] const index = Math.floor(Math.random() * skills.length) console.log('hi') return skills[index] } } console.log(Person.favoriteSkill()) class Student extends Person { constructor(firstName, lastName, age, country, city, gender) { super(firstName, lastName, age, country, city) this.gender = gender } saySomething() { console.log('I am a child of the person class') } getPersonInfo() { let fullName = this.getFullName() let skills = this.skills.length > 0 && this.skills.slice(0, this.skills.length - 1).join(', ') + ` and ${this.skills[this.skills.length - 1]}` let formattedSkills = skills ? `He knows ${skills}` : '' let pronoun = this.gender == 'Male' ? 'He' : 'She' let info = `${fullName} is ${this.age}. ${pronoun} lives in ${this.city}, ${this.country}. ${formattedSkills}` console.log(this) return info } } const s1 = new Student( 'Asabeneh', 'Yetayeh', 250, 'Finland', 'Helsinki', 'Male' ) const s2 = new Student('Lidiya', 'Tekle', 28, 'Finland', 'Helsinki', 'Female') s1.setScore = 1 s1.setSkill = 'HTML' s1.setSkill = 'CSS' s1.setSkill = 'JavaScript' s2.setScore = 1 s2.setSkill = 'Planning' s2.setSkill = 'Managing' s2.setSkill = 'Organizing' console.log(s1) console.log(s2) console.log(s1.saySomething()) console.log(s1.getFullName()) console.log(s1.getPersonInfo()) console.log(s2.saySomething()) console.log(s2.getFullName()) console.log(s2.getPersonInfo()) // Exercises Level 1 // 1- Create an Animal class. The class will have name, age, color, legs properties and create different methods class Animal{ constructor(name, age, color, legs) { this.name = name; this.age = age; this.color = color; this.legs = legs; } afficher(){ console.log("name: "+this.name+" / age: "+this.age+" / color: "+this.color+" / legs: "+this.legs); } } var animal = new Animal("Bosconovitch", 23, "red", 4); animal.afficher(); // 2- Create a Dog and Cat child class from the Animal Class. class Dog extends Animal{ constructor(name, age, color, legs, sexe){ super(name, age, color, legs, sexe) this.sexe = sexe; } afficher(){ console.log("name: "+this.name+" / age: "+this.age+" / color: "+this.color+" / legs: "+this.legs+" / sexe: "+this.sexe); } } class Cat extends Animal{ } // Exercises Level 2 // 1- Override the method you create in Animal class var chien = new Dog("milou", 15, "white", 4, "male"); chien.afficher(); // Exercises Level 3 // 1- Let's try to develop a program which calculate measure of central tendency of a sample(mean, median, mode) // and measure of variability(range, variance, standard deviation). In addition to those measures find // the min, max, count, percentile, and frequency distribution of the sample. // You can create a class called Statistics and create all the functions which do // statistical calculations as method for the Statistics class. Check the output below. class Statistics{ constructor(sample) { this.sample = sample; } get getSample(){ return this.sample; } set setSample(sample){ this.sample = sample; } count() { return this.getSample.length; } sum() { var retour = 0; this.getSample.forEach(function(value){ retour += value; }) return retour; } min() { var retour = 0; var tab = this.getSample tab.sort(function(a,b){ return a-b; }) retour = tab[0] return retour } max() { var retour = 0; var tab = this.getSample tab.sort(function(a,b){ return b-a; }) retour = tab[0] return retour } range() { } } var ages = [31, 26, 34, 37, 27, 26, 32, 32, 26, 27, 27, 24, 32, 33, 27, 25, 26, 38, 37, 31, 34, 24, 33, 29, 26]; var statistics = new Statistics(ages); console.log('Count:', statistics.count()) // 25 console.log('Sum: ', statistics.sum()) // 744 console.log('Min: ', statistics.min()) // 24 console.log('Max: ', statistics.max()) // 38 // console.log('Range: ', statistics.range() // 14 // console.log('Mean: ', statistics.mean()) // 30 // console.log('Median: ',statistics.median()) // 29 // console.log('Mode: ', statistics.mode()) // {'mode': 26, 'count': 5} // console.log('Variance: ',statistics.var()) // 17.5 // console.log('Standard Deviation: ', statistics.std()) // 4.2 // console.log('Variance: ',statistics.var()) // 17.5 // console.log('Frequency Distribution: ',statistics.freqDist()) // [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)]