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