객체 지향 프로그래밍 (Object Oriented Programin)

binary·2022년 5월 26일
1

OOP

💡 객체 지향 프로그래밍 (Object Oriented Programin) : 데이터와 기능, 함수들을 묶어 하나의 객체로 만들어 사용한다.

💡 절차적 프로그래밍 (Procedural Programming) : 데이터를 중심으로 함수를 만들어 사용한다.

객체 지향 프로그래밍 (Object Oriented Programin) 의 주요 개념

좋은 설계를 하기 위해서는 객체지향을 이해하고 응용하는 것이 중요하다.

💊 캡슐화

  • 데이터와 기능을 하나의 단위로 묶는 것
  • 디테일한 구현과 데이터는 숨기고 동작만 노출하는 것
  • 언제든 구현한 것 수정 가능
  • 👩‍💻
    var speaker = (function () {
      var volume = 0;
    
      return {
        volumeUp: function () {
          volume += 10;
        },
        volumeDown: function () {
          volume -= 10;
        }
    	}
    })();
    
    speaker.volumeUp();
    speaker.volumeDown();
    speaker 함수 외부에서 volumeUp(), volumeDown() 함수를 이용하여 volume 의 값을 올리거나 내릴 수는 있지만, 외부에서 volume 변수에 직접 접근하여 바꾸는 것은 불가능하다. 이렇게 마음대로 변수의 값을 바꿀 수 없도록 내부의 정보를 외부로부터 은폐하는 것을 캡슐화라고 한다.

🎨 추상화

  • 내부 구현은 복잡한데 노출되는 것은 단순하게 만드는 것
  • 👩‍💻
    var speaker = (function () {
      var volume = 0;
    
      return {
        volumeUp: function () {
          volume += 10;
        },
        volumeDown: function () {
          volume -= 10;
        },
    		autoVolumeOff: function () {
          setTimeout(function () {
            volume = 0;
          }, 5000);
        }
      }
    })();
    autoVolumeOff() 이라는 함수를 추가했다. 이 함수는 5초후 volume 의 값을 0으로 만들어준다.
    speaker.volumeUp(); // 10
    speaker.volumeUp(); // 20
    speaker.volumeUp(); // 30
    speaker.volumeUp(); // 40
    speaker.volumeDown(); // 30
    console.log("5초후");
    speaker.autoVolumeOff(); // 0

| 실행화면

사용자는 어떤 원리에 의해 volume 이 0이 되는지 함수를 호출한 부분만 보고선 알 수 없다. 복잡한 원리나 구동 방식을 노출시키지 않고 단순한 이름으로 정의하여 추상화시켰기 때문이다.

👩‍👧 상속

  • 부모 클래스의 특징을 자식 클래스가 물려받는 것
  • 기존에 만들어둔 것을 이어받아 코드의 중복 ↓
  • 📃 정리

🫃 다형성

  • 형태는 같은데 다른 기능을 하는 것
  • 메소드 이름 낭비 ❌
  • 📃 정리

📚 참고자료


혹시나 잘못된 정보가 있다면 댓글로 알려주세요 ! 저의 성장의 큰 도움이 될 것 같습니다.🌱

0개의 댓글