31. OOP

객체지향적 프로그래밍 (Objected Oriented Programming)란?

기능(method)과 특성(property)으로 구성되어있는 독립적인 객체(Object)들이 모여있으며
객체들이 서로 상호작용하는 과정을 프로그래밍한것이다
직관적으로 코드를 분석할수있어 학습시에 이해하기 좋고
유연하여 코드 수정, 유지보수에 용이하여 대규모 협업에 자주 쓰인다


Class

사용자가 객체들의 정보(기능,특성)들을 정의할때 객체들이 공통적인 정보를 가질경우
객체를 만들때마다 매번 정보를 정의할 필요없이 공통적인 정보를 담고있는 틀을 하나 만들어
틀에 구체적인 정보를 넣어주기만하면 특정한 객체를 만들수있다

정말 쉽게 생각해보면 붕어빵을 만들때마다 붕어모양을 위해 빵을 빚어내지않고
붕어빵 틀을 만들어 구체적인 재료(팥,슈크림)를 넣어줘 하나의 붕어빵(객체)를 만들어 낸다고 생각하면된다

class 붕어빵{
  constructor(밀가루,속재료){
    this.밀가루 = 밀가루
    this.속재료 = 속재료
  }
  eaten(){
    console.log('person who eats this say "it is delicious" ')
  }
}

객체 지향 프로그래밍 4가지 특징

Encapsulation (캡슐화)

객체의 구체적인 정보를 외부로부터 감춰 접근을 못하게 숨기는 것을 말한다(은닉화)
정보에 접근하는방법은 오직 객체내 함수를 통해서만 가능하다
느슨한 결합(Loose Coupling)에 유리하여 언제든 수정할수있다

Inheritance (상속)

부모 클래스(base class)의 정보를 자식 클래스(derive class)로 그대로 가지고와
코드작성의 중복을 줄여준다

Abstraction (추상화)

클래스의 공통적인 속성 기능들을 추상적으로 묶어두는것인데
앞선 Class의 붕어빵예시중
팥과 슈크림같이 구체적인 재료(속성)의 정보없이
일단 붕어빵이라는 틀에 재료가 필요하다고 추상적으로 지정해두는 것이다

Polymorphism (다형성)

부모클래스에 의해 상속받은 특징/행동들을 재정의하여 다양한 형태로 추가할수있다
오버라이딩(overridding): 부모클래스의 메소드를 일부 자식클래스의 메소드만 변경하고싶거나 추가하고싶을때 재정의할수있다
오버로딩(overloading): 클래스 내에 매개변수만 다른 같은이름의 메소드들이 있어 매개변수에 따라 다른 역할을 하는 같은이름의 메소드를 여러개 정의하는것이다


좋은 웹페이지 즐겨찾기