OOP의 마법으로 JavaScript 기술 향상

Dec 18 2022
자바스크립트 효율성 극대화
OOP(Object-Oriented Programming)는 보다 논리적이고 관리하기 쉬운 방식으로 코드를 구성하는 데 도움을 줄 수 있으며 향후 코드를 더 쉽게 재사용하고 확장할 수 있습니다. JavaScript에서 객체 지향 프로그래밍(OOP)은 특정 작업을 수행하기 위해 함께 작동하는 데이터 및 함수 모음인 "객체" 개념을 기반으로 하는 프로그래밍 패러다임입니다.

OOP(Object-Oriented Programming)는 보다 논리적이고 관리하기 쉬운 방식으로 코드를 구성하는 데 도움을 줄 수 있으며 향후 코드를 더 쉽게 재사용하고 확장할 수 있습니다.

JavaScript에서 객체 지향 프로그래밍(OOP)은 특정 작업을 수행하기 위해 함께 작동하는 데이터 및 함수 모음인 "객체" 개념을 기반으로 하는 프로그래밍 패러다임입니다.

OOP에서 객체는 객체가 생성하는 객체의 속성과 메서드를 정의하는 템플릿인 "클래스"에서 생성됩니다.

OOP의 장점

JavaScript에서 OOP를 사용하는 주요 이점 중 하나는 보다 논리적이고 관리하기 쉬운 방식으로 코드를 구성할 수 있다는 것입니다. OOP를 사용하면 실제 개체를 나타내는 클래스를 만들고 해당 개체가 가진 속성과 메서드를 정의할 수 있습니다. 이렇게 하면 특히 코드가 복잡해질 때 코드를 더 쉽게 이해하고 작업할 수 있습니다.

JavaScript 또는 프로그래밍에서 OOP의 또 다른 이점은 코드 재사용 및 확장성을 허용한다는 것입니다.

클래스를 정의한 후에는 해당 클래스에서 필요한 만큼 개체를 만들 수 있습니다. 이렇게 하면 각 개체에 대해 동일한 코드를 반복해서 작성할 필요가 없기 때문에 많은 시간과 노력을 절약할 수 있습니다.

또한 기존 클래스에서 상속하는 새 클래스를 만들 수 있으므로 기존 코드의 기능을 재사용하고 확장할 수 있습니다.

OOP 시작하기

JavaScript에서 OOP를 시작하려면 먼저 클래스의 개념을 이해해야 합니다. JavaScript에서 클래스는 생성하는 개체의 속성과 메서드를 정의하는 템플릿입니다. 다음은 사람을 나타내는 간단한 클래스의 예입니다.

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  greet() {
    console.log(`Hi, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

이 클래스에서 개체를 만들려면 다음과 같이 new키워드 다음에 클래스 이름을 사용합니다.

const person1 = new Person("John", 25);
const person2 = new Person("Jane", 30);

console.log(person1.name);  // Output: "John"
console.log(person2.age);  // Output: 30
person1.greet();  // Output: "Hi, my name is John and I am 25 years old."

클래스를 정의하고 객체를 생성하는 것 외에도 JavaScript의 OOP는 상속도 허용합니다. 즉, 기존 클래스의 속성과 메서드를 상속하는 새 클래스를 만들 수 있습니다. 예를 들어 Student학교에서 학생을 나타내는 클래스를 만들고 싶다고 가정해 보겠습니다. 클래스는 다음 과 같이 클래스 Student에서 상속할 수 있습니다 .Person

class Student extends Person {
  constructor(name, age, school) {
    super(name, age);
    this.school = school;
  }
  info() {
    console.log(`${this.name} is ${this.age} years old and goes to ${this.school}.`);
  }
}

OOPS의 4가지 기둥

JavaScript에서 객체 지향 프로그래밍(OOP)의 네 가지 기둥은 다음과 같습니다.

캡슐화:

캡슐화는 개체 내부에서 데이터와 기능을 함께 래핑하는 아이디어를 나타냅니다. OOP에서 객체는 코드의 기본 빌딩 블록이며 각 객체에는 고유한 속성과 메서드가 있습니다. 이를 통해 이해하고 작업하기 쉬운 방식으로 코드를 구성할 수 있습니다.

예를 들어 and 와 같은 속성과 and 와 같은 메서드 Person가 있는 클래스를 만들 수 있습니다 .nameagegreet()introduce()

추출:

추상화는 개체 구현의 세부 정보를 숨기고 필요한 정보만 사용자에게 노출하는 프로세스입니다. OOP에서는 추상화를 사용하여 코드를 보다 모듈화하고 유연하게 만들 수 있습니다.

예를 들어 관련 개체의 구현 방법을 지정하지 않고 관련 개체 그룹에 대한 공통 인터페이스를 제공하는 추상 클래스를 정의할 수 있습니다.

계승:

상속은 기존 클래스의 속성과 메서드를 상속하는 새 클래스를 만드는 과정입니다. 이를 통해 기존 코드를 재사용하고 확장할 수 있으므로 시간과 노력을 절약할 수 있습니다.

예를 들어 사람에 대한 공통 속성 및 메서드를 정의하는 클래스가 있는 경우 클래스에서 상속 하고 추가 기능을 추가 Person하는 클래스를 만들 수 있습니다 .StudentPerson

다형성:

다형성(Polymorphism)은 서로 다른 개체가 동일한 메서드 호출에 대해 서로 다른 방식으로 응답하는 기능입니다. OOP에서 다형성을 사용하면 공통 인터페이스를 공유하지만 구현이 다른 개체를 만들 수 있습니다. 이렇게 하면 코드가 더 유연해지고 유지 관리 및 확장이 더 쉬운 코드를 작성할 수 있습니다.

예를 들어 Shape공통 메서드를 정의하는 클래스를 만든 다음 각각 고유한 방식으로 메서드를 구현하는 draw()다양한 유형의 도형(예: Circle, Rectangle등)에 대한 하위 클래스를 만들 수 있습니다.draw()

다음은 이러한 OOP의 기둥이 JavaScript 프로그램에서 어떻게 사용될 수 있는지에 대한 예입니다.

// Encapsulation: define a Person class with properties and methods
class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  greet() {
    console.log(`Hi, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

// Inheritance: define a Student class that inherits from the Person class
class Student extends Person {
  constructor(name, age, school) {
    super(name, age);
    this.school = school;
  }
  info() {
    console.log(`${this.name} is ${this.age} years old and goes to ${this.school}.`);
  }
}

// Abstraction: define an abstract Shape class with a common draw() method
abstract class Shape {
  abstract draw(): void;
}

// Polymorphism: define subclasses of Shape that implement the draw() method in their own way
class Circle extends Shape {
  draw() {
    console.log("Drawing a circle...");
  }
}
class Rectangle extends Shape {
  draw() {
    console.log("Drawing a rectangle...");
  }
}


객체 지향 프로그래밍은 JavaScript의 기본 개념이며 코드의 구조와 구성을 크게 향상시킬 수 있습니다. 캡슐화, 상속 및 다형성과 같은 개념을 이해하고 구현함으로써 보다 효율적이고 유지 관리 가능한 프로그램을 만들 수 있습니다.

초보자이든 숙련된 개발자이든 시간을 들여 JavaScript에서 OOP를 마스터하면 장기적으로 성과를 거둘 것입니다. 읽어 주셔서 감사합니다. 즐거운 코딩하세요.

CSS FlexBox 에 대해 자세히 알아보려면 이 전자책 을 확인하십시오.