처음 객체지향을 공부한다면?
문법적인 형식을 일단 알아보도록 하자..!
하나의 프로그램은 하나의 취지를 가지고 있는 로직으로 이루어져 있는 것이 아니라 여러개의 속성을 가지고 있는 로직의 집합이다..!
처음에 어플리케이션을 만들게 될 때는 코드가 많지않다
그런데 사이트의 규모가 커지고 동원되는 인원이 많아지고 프로젝트 기간이 늘어난다면??
이 복잡한 로직들을 기능별로 그룹핑하고 싶어진다..!
ex) 글목록, 본문, 댓글 등등..
그렇다면? 이 사이트를 구성하고 있는 기능들을 나눠서
기능상으로 연관되어있는 코드끼리 모아놓는다 이것을 일종의 그룹핑, 분류화라고한다!
이렇게 사이트가 커지고 복잡해질때 여러가지 문제가 생길 수 있는데
이를 해결해 줄수 있는 방법중 하나가 객체지향 프로그래밍이라고 할 수 있다!
예를 들어 본문에 필요한 변수와 메소드를 그룹핑해놓은 것을 객체라고 할 수 있다!
재활용성 : 이렇게 기능별로 필요한 변수와 메소드를 분리 해놓으면
다른 어플리케이션을 제작할때도 그대로 가져와서 사용할 수 있다! 로직을 재활용
하나의 객체안에는 그 객체가 가지고 있는 취지에 맞는 변수와 메소드를 넣어놔
다른 로직과 구분해준다
실용적으로 직접 코드를 살펴보자
예를 들어 리그오브레전드를 캐릭터들을 객체 지향으로 만든다고 가정해보자..!
자료형에다가 먼저 정보들을 담아둬야한다!
var nunu = {
q : 'consume',
w : 'snowball'
},
var garen = {
q : 'strike',
w : 'courage'
}
이런 작업을 쉽게하는 방법은??
비슷한 object를 많이 만들일 있다면 class를 써보자
쉽게 말해 class는 object를 뽑아내는 기계
함수로 class 구현해보기
function 기계() {
this.q = 'consume' >> 새로생성 되는 object에 {q:'consume'} 추가해주세요 라는 뜻!
this.w = 'snowball'
}
new 기계() >> {q:'consume'} ,{w:'snowball'}가 남는다
var nunu = new 기계() // 아까 위에 만든 것과 똑같다
var nunu = {
q : 'consume',
w : 'snowball'
},
/////
var garen = new 기계() >> nunu의 스킬 object가 찍힌다
해결해보자!
>>>
function 기계(스킬) {
this.q = 스킬
this.w = 'snowball'
}
이런식으로 단순하게 파라미터롤 값을 넘겨주면 된다..
var garen = new 기계('consume')
this는 기계로 부터 생성되는 object라고 알아두자
class Hero {
constructor(구멍){
this.q = 구멍;
this.w = 'snowball'
}
}
new Hero() >> {q: 구멍}, {w :'snowball'}