OOP

김형진·2024년 8월 12일
post-thumbnail

객체 지향 프로그래밍(OOP)은 Java 및 C++을 비롯한 많은 프로그래밍 언어의 기본이 되는

프로그래밍 패러다임  

클래스와 인스턴스상속캡슐화라는 세 가지 주요 개념에 대해 설명

객체지향 프로그래밍 4가지 요소

  1. 자료 추상화

    • 객체의 복잡성을 줄이고, 필요한 부분만을 노출시키는 개념

    • 자바스크립트에서는 인터페이스나 추상 클래스를 명시적으로 제공하지 않지만,

      메서드를 통해서 필요한 기능만 노출하고 불필요한 세부 사항을 숨길 수 있음.

  2. 상속

    • 상속은 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 것 자식 클래스는 부모 클래스의 기능을 재사용하거나 확장할 수 있음
    class Animal {
      constructor(name) {
        this.name = name;
      }
    
      speak() {
        console.log(this.name + " makes a sound.");
      }
    }
    
    class Dog extends Animal {
      speak() {
        console.log(this.name + " barks.");
      }
    }
    
    let dog = new Dog("Rover");
    
    console.log(dog); //Dog { name: 'Rover' }
    dog.speak(); //Rover barks.
    

    위 코드에서 class Dog은 Animal class를 상속 받아 사용한다.

  3. 다형성

    • 동일한 메서드가 서로 다른 객체에서 다르게 동작할 수 있는 능력
    class Animal {
      speak() {
        console.log("The animal makes a sound.");
      }
    }
    
    class Dog extends Animal {
      speak() {
        console.log("The dog barks.");
      }
    }
    
    class Cat extends Animal {
      speak() {
        console.log("The cat meows.");
      }
    }
    
    let dog = new Dog();
    let cat = new Cat();
    
    dog.speak(); // The dog barks.
    cat.speak(); //The cat meows.
    
  4. 캡슐화

    • 객체의 특정 프로퍼티와 메소드에 직접 접근하지 못하도록 막는 것
    • 서로 연관 있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것(정보 은닉)
    const Person = function (arg) {
      let name = arg ? arg : "zzoon"; // 내부 변수 'name' 선언
    //함수 내부에 선언한 변수 이기에 함수 외부에서 Pserson 함수가 반환하는 객체 내부의 메서드를 통해서만 접근 가능
      return {
        getName: function () {
          return name; // 클로저를 통해 'name'에 접근
        },
        setName: function (arg) {
          name = arg; // 클로저를 통해 'name'을 수정
        },
      };
    };
    
    const me = Person(); // Person 함수를 호출하여 객체를 생성
    console.log(me.getName()); // zzoon 출력
    me.setName("Kim"); // 'name'을 "Kim"으로 변경
    console.log(me.getName()); // Kim 출력

0개의 댓글