본문 바로가기
카테고리 없음

기술면접 대비 자료 정리

by 집요한 개발자 2020. 6. 22.

1. OOP란?

데이터를 객체로 취급하여 프로그램에 반영한 것이며, 순차적으로 프로그램이 동작하는 기존의 것들과는 다르게 객체의 상호작용을 통해 프로그램이 동작하는 것을 말합니다. 캡슐화, 다형성, 상속 을 이용하여 코드 재사용을 증가시키고, 유지보수를 감소시키는 장점을 얻기 위해서 객체들을 연결 시켜 프로그래밍 하는 것 입니다.

캡슐화(Encapsulation)

  • 캡슐화란 하나의 객체가 특정한 목적을 달성하기 위해 변수, 함수를 하나로 묶는 것

  • 클래스를 만들 때 목적을 명확하게 정하고 그에 따른 기능들을 관련성 있게 변수나 함수를 만들 것

  • 데이터에 접근할 때 외부에서 직접적으로 접근하면 안되고 함수를 통해서만 접근할 것

    캡슐화를 통해 쪼개져 있는 여러가지 기능을 한데 묶어서 사용한다면 복잡하고 커다란 코드들도 이해하기가 쉬워진다.
    그리고 내부를 숨김으로써 정보들을 은닉하여 사용을 할 수 있다.
    자바스크립트에서는 private 한 변수 혹은 메소드가 없기 때문에
    위의 캡슐화의 특징인 은닉화를 이용하여 private 한 변수나 메소드를 만들 수 있다.

상속(Inheritance)

  • 상위의 부모 객체(개념)의 속성을 하위 객체(개념)가 물려 받는 것

  • 상속은 객체 지향의 가장 큰 특징

    부모 클래스가 가지고 있는 속성(프로퍼티, 메소드) 등을 그대로 자식 클래스가 물려 받아 재사용이 가능하다.
    물론 물려 받은 기능을 자식 클래스에서 기능을 재정의 할 수 있다.

추상화(Abstraction)

  • 추상화란 현실 세계를 빗대어 공통의 속성이나 기능을 묶어 이름을 붙이는 것이다.
  • 기린, 코뿔소, 사자, 소 라는 것들이 각각의 객체라고 한다면 이 객체를 하나로 묶으려 할 때 동물이라는
    추상적인 객체로 정의할 수 있다.
  • 객체지향에서는 객체에서 공통된 속성과 행위를 추출하는 것을 추상화라고 한다.

다형성(Polymorphism)

  • 다형성은 상속을 받은 기능을 변경하거나 확장하는 것
  • 코드의 재사용성이 높아져 코드의 길이가 감소하고 유지보수가 용이해짐

다형성을 구현하는 방법 두 가지

  1. 오버 라이딩(OverRiding)
    • 부모 클래스를 상속받은 자식 클래스에서 부모 클래스의 메소드의 이름, arguments를 받아서 새롭게 정의 하는 것을 말한다.
    • 하나의 부모 클래스에서 상속 받는 여러 자식 클래스에서 같은 이름을 가지고 있지만 다른 기능을 하는 메소드를 정의할 수 있다.
    • 부모의 기능을 그대로 사용하면서 동시에 기능을 추가할 수도 있다.
    • 정리하면 상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의해서 사용하는 것이다.
  2. 오버 로딩(OverLoding)
    • 같은 클래스에서 같은 이름을 가진 메소드가 여러개가 존재하고 있는 상태이다.
    • 메소드의 이름은 같아도 되지만 매개변수(arguments)가 같으면 안된다.
    • 자바스크립트는 문법적으로 오버로딩을 사용할 수 없다.
    • 다만 arguments를 이용해 오버로딩을 흉내낼 수 있다.

댓글