JavaScript는 객체 기반의 스크립트 프로그래밍 언어이다. JavaScript에서의 객체 지향 프로그래밍은 다른 프로그래밍 언어에서의 객체 지향 프로그래밍과 다른 부분이 있다. JavaScript에는 객체(object)라는 자료형이 있는데, 이는 객체 지향 프로그래밍에서 객체의 의미와 다르다. JavaScript의 클래스(class)와 인스턴스 객체(instance object)가 객체 지향 프로그래밍에서 객체와 인스턴스의 의미와 같다.
먼저 객체 지향 프로그래밍이 무엇인지 알아보자.
객체 지향 프로그래밍(Object-oriented Programing, OOP)은 프로그램을 '객체' 단위로 나누고 이들이 상호작용하는 방식으로 프로그래밍하는 것이다.
프로그래밍 초기에는 절차적 프로그래밍으로 코드를 작성하였다. 절차적 프로그래밍은 입력을 받은 후 순서대로 처리한 후 결과를 내는 방식이다. 이 방식은 코드가 복잡해지면 가독성이 떨어지고, 유지보수가 어려우며, 재사용이 불가능한 방식이었다. 이를 보완하기 위해 객체 지향 프로그래밍이 등장하게 되었다.
객체 지향 프로그래밍에는 4가지 기본개념이 있다. 이에 대해 더 자세히 알아보자.
캡슐화(Encapsulation)는 하나의 객체에 데이터(속성)와 기능(메서드)을 넣어서 묶는 것이다. 이때, 데이터와 기능을 느슨하게 결합해야 한다.
캡슐화에는 은닉화 개념도 포함되어 있다. 은닉화는 객체의 내부 데이터나 구현이 외부로 노출되지 않도록 만드는 것이다. 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 필요한 메서드만 노출시켜야 한다.
추상화(Abastraction)는 복잡한 내부 구현은 숨기고, 실제로 노출되는 부분은 단순하게 만드는 것이다.
예를 들어, 카카오톡으로 친구에게 메시지 보내는 상황을 생각해보자. 실제로 노출되는 부분은 카카오톡으로 친구에게 메시지를 보내면, 친구는 메시지를 받을 수 있다는 것이다. 이때의 복잡한 내부 구현은 내 스마트폰이 기지국에 데이터를 보내고, 친구 스마트폰이 기지국에서 데이터를 받는 복잡한 과정이다. 사용자는 복잡한 내부 구현을 알 필요는 없고, 친구에게 메시지를 보내는 방법만 알면 된다.
즉, 사용자의 단순한 행동이, 복잡한 과정을 거쳐서, 사용자에게 단순한 결과로 나타나는 것이다.
캡슐화의 은닉 개념과 추상화 개념은 비슷한 부분이 있어 헷갈리기 쉽다. 캡슐화는 코드나 데이터의 은직에 집중하고, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드, 데이터를 노출시키지 않고 단순한 이름으로 정의하는 것에 집중한다는 차이가 있다.
클래스를 정의할 때, 메서드와 속성만 정의한 것을 인터페이스라 부르는데, 이는 추상화의 본질이다.
상속(Inheritance)은 부모 클래스의 특징을 자식 클래스가 물려받는 것이다.
class Human {
constructor (name, gender, age) {
this.name = name;
this.gender = gender;
this.age = age;
}
sleep() {
console.log(`${this.name}이 잠에 들었습니다.`);
}
eat() {
console.log(`${this.name}이 밥을 먹었습니다.`);
}
}
class Student extends Human {
constructor (name, gender, age, subject) {
super(name, gender, age);
this.subject = subject;
}
learn() {
console.log(`${this.name}이 ${this.subject}을(를) 공부합니다.`);
}
}
Human이라는 클래스는 속성으로 name, gender, age를 갖고 있고, 메서드로 sleep, eat을 갖고 있다. Student라는 클래스는 Human 클래스로부터 상속받는 자식 클래스로 추가적으로 속성으로 subject, 메서드로 learn을 가지고 있다.
다형성(Polymorphism)은 여러 인스턴스가 같은 이름의 메서드를 호출하여도 각자의 방식으로 동작하는 것을 뜻한다. 예를 들어, Human이라는 클래스로 국적별로 한국인, 미국인, 인도인 인스턴스를 생성하였다. Human에는 eat이라는 메서드를 갖고 있어서 각각의 인스턴스에서 eat 메서드를 호출할 수 있다. 하지만, 한국인은 젓가락을 사용하고, 미국인은 포크를 사용하며, 인도인은 손을 사용하므로 eat 메서드를 호출했을 때 각기 다른 결과가 나타나게 된다. 이를 다형성이라 한다.
Craving some company during your stay in Delhi? Our Delhi Escorts Service provides you with the opportunity to book sexy and VIP hot girls 24/7. Indulge in intimate desires and erotic services with our call girls in Delhi who are ready to fulfill your every need at your hotel.