Object Oriented Programming(OOP)
캡슐화(Encapsulation)
- 캡슐화란 하나의 객체가 특정한 목적을 달성하기 위해 변수, 함수를 하나로 묶는 것
- 클래스를 만들 때 목적을 명확하게 정하고 그에 따른 기능들을 관련성 있게 변수나 함수를 만들 것
- 데이터에 접근할 때 외부에서 직접적으로 접근하면 안되고 함수를 통해서만 접근할 것캡슐화를 통해 쪼개져 있는 여러가지 기능을 한데 묶어서 사용한다면 복잡하고 커다란 코드들도 이해하기가 쉬워진다.
그리고 내부를 숨김으로써 정보들을 은닉하여 사용을 할 수 있다.
자바스크립트에서는 private 한 변수 혹은 메소드가 없기 때문에
위의 캡슐화의 특징인 은닉화를 이용하여 private 한 변수나 메소드를 만들 수 있다.
상속(Inheritance)
- 상위의 부모 객체(개념)의 속성을 하위 객체(개념)가 물려 받는 것
- 상속은 객체 지향의 가장 큰 특징부모 클래스가 가지고 있는 속성(프로퍼티, 메소드) 등을 그대로 자식 클래스가 물려 받아 재사용이 가능하다.
물론 물려 받은 기능을 자식 클래스에서 기능을 재정의 할 수 있다.
추상화(Abstraction)
- 추상화란 현실 세계를 빗대어 공통의 속성이나 기능을 묶어 이름을 붙이는 것이다.
- 기린, 코뿔소, 사자, 소 라는 것들이 각각의 객체라고 한다면 이 객체를 하나로 묶으려 할 때 동물이라는
추상적인 객체로 정의할 수 있다. - 객체지향에서는 객체에서 공통된 속성과 행위를 추출하는 것을 추상화라고 한다.
다형성(Polymorphism)
- 다형성은 상속을 받은 기능을 변경하거나 확장하는 것
- 코드의 재사용성이 높아져 코드의 길이가 감소하고 유지보수가 용이해짐
다형성을 구현하는 방법 두 가지
- 오버 라이딩(OverRiding)
- 부모 클래스를 상속받은 자식 클래스에서 부모 클래스의 메소드의 이름, arguments를 받아서 새롭게 정의 하는 것을 말한다.
- 하나의 부모 클래스에서 상속 받는 여러 자식 클래스에서 같은 이름을 가지고 있지만 다른 기능을 하는 메소드를 정의할 수 있다.
- 부모의 기능을 그대로 사용하면서 동시에 기능을 추가할 수도 있다.
- 정리하면 상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의해서 사용하는 것이다.
- 오버 로딩(OverLoding)
- 같은 클래스에서 같은 이름을 가진 메소드가 여러개가 존재하고 있는 상태이다.
- 메소드의 이름은 같아도 되지만 매개변수(arguments)가 같으면 안된다.
- 자바스크립트는 문법적으로 오버로딩을 사용할 수 없다.
- 다만 arguments를 이용해 오버로딩을 흉내낼 수 있다.
개인 의견 : 한마디로 귀찮은 행동, 불필요한 행동들을 없애기 위해서이다.