가장 고귀한 곤충인 꿀벌은, 일생 동안 특정 발달 단계를 하나하나 거칩니다. 각 단계에는 꿀벌이 갖는 고유한 특징이 있습니다. 이 repository에는 다양한 종류의 꿀벌 Class가 존재합니다. 각 단계별로 꿀벌 Class가 있고, 이를 통해 class keyword를 이용한 상속을 학습합니다. (상속은 종종 subclassing 이라고 표현합니다.)
├── Grub
│ └── Bee
│ ├── HoneyMakerBee
│ └── ForagerBee
Grub.js
//의사코드 //defaultValue는 숫자 또는 문자열로 입력 //construct(){}안에 클래스 Grub의 속성 작성 //eat(){} 메서드 작성 //메서드 eat, `Mmmmmmmmm jelly` 로 리턴
class Grub { // TODO.. constructor(){ this.age = 0; this.color = 'pink'; this.food = 'jelly'; } eat(){ return `Mmmmmmmmm jelly`; } } module.exports = Grub;
Bee.js
//의사코드 //extends 부모클래스 지정(상속) //super() 부모클래스의 함수 호출 *construct(){}안에 작성 //construct(){}안에 클래스 Grub의 속성 작성
const Grub = require('./Grub'); class Bee extends Grub { // TODO.. constructor(){ super(); this.age = 5; this.color = 'yellow' this.job = `Keep on growing`; } } module.exports = Bee;
ForagerBee.js
//의사코드 //extends 부모클래스 지정(상속) //super() 부모클래스의 함수 호출 *construct(){}안에 작성 //construct(){}안에 클래스 ForagerBee의 속성 작성 //forage(){} 메서드 작성 //메서드 forage, push => treasureChest 속성에 배열값을 넣어준다.
const Bee = require('./Bee'); class ForagerBee extends Bee{ // TODO.. constructor(){ super(); this.age = 10; this.job = 'find pollen'; this.canFly = true this.treasureChest = []; } forage(treasure){ this.treasureChest.push(treasure); return this.treasureChest; } } module.exports = ForagerBee;
HoneyMakerBee.js
//의사코드 //extends 부모클래스 지정(상속) //super() 부모클래스의 함수 호출 *construct(){}안에 작성 //construct(){}안에 클래스 HoneyMakerBee의 속성 작성 //makeHoney(){} , giveHoney(){} 메서드 작성 //메서드 makeHoney : honeyPot 1씩 증가 //메서드 giveHoney : honeyPot 1씩 감소
const Bee = require('./Bee'); class HoneyMakerBee extends Bee { // TODO.. constructor(){ super(); this.age = 10; this.job = 'make honey'; this.honeyPot = 0 } makeHoney(){ this.honeyPot++; } giveHoney(){ this.honeyPot--; } } module.exports = HoneyMakerBee;