20230721

Moon-Tree·2023년 7월 21일
0

Q : 객체 지향에서 상속이란 무엇인지 설명하시오.
A :

  • 상속은 한 클래스의 속성과 메소드를 다른 클래스가 물려받는 기능을 말합니다.
  • 상속을 사용하면 기존의 코드를 재사용하여 중복을 줄이고 프로그램의 구조를 간결하게 만들 수 있습니다.
  • 학교에서 선생님과 학생을 예시로 들어보겠습니다.
    선생님과 학생 모두 이름, 나이, 성별과 같은 공통된 특성을 가지고 있습니다.
    이러한 공통된 특성을 "사람"이라는 클래스로 묶을 수 있습니다.
    이제 "선생님" 클래스와 "학생" 클래스를 만들 때, "사람" 클래스의 특성을 그대로 물려받게 할 수 있는 것을 상속이라고 할 수 있습니다.
  1. 재사용: 상속을 통해 기반 클래스의 속성과 메소드를 그대로 사용하거나 확장하여 코드의 중복을 줄일 수 있습니다.
  2. 확장성: 파생 클래스는 기반 클래스의 기능을 수정하거나 추가하여 새로운 기능을 쉽게 구현할 수 있습니다.
  3. 유지보수: 기반 클래스의 변경이 파생 클래스에도 자동적으로 반영되므로, 전체적인 유지보수가 용이해집니다.
  4. 계층 구조: 클래스간의 계층 구조를 만들어서 관련성이 있는 클래스들을 쉽게 이해하고 관리할 수 있습니다.

Q : 객체 지향에서 추상화(Abstraction)란 무엇인지 설명하시오.
A :

  • 현실 세계의 객체를 간단한 개념이나 모델로 일반화시키는 과정을 말합니다.

  • 이 과정에서 불필요한 세부 정보를 제거하고 필요한 핵심 특징만을 남겨놓아 프로그램이 더 쉽게 이해할 수 있도록 도와줍니다.
    (- 이를 바탕으로 클래스와 인터페이스를 설계합니다.)

  • 추상화는 코드의 중복을 줄이고 가독성을 높이며, 소프트웨어 유지보수와 확장성을 향상시키는 데 도움이 됩니다.

  • 추상화를 사용하는 대표적인 예시 중 하나는 그림 그리기 프로그램입니다.
    사용자가 그림판 소프트웨어를 사용하여 모양, 색상, 굵기 등을 선택하게 되면, 프로그램은 그것을 추상화하여 픽셀 단위의 데이터로 변환하고, 사용자가 화면에 그림을 그리면 그것을 다시 추상화하여 저장합니다.
    이러한 추상화 과정을 거쳐, 사용자는 복잡한 그림을 그리는 데에도 쉽게 접근할 수 있게 됩니다.


Q : 객체 지향에서 캡슐화(Encapsulation)란 무엇인지 설명하시오.
A :

  • 객체의 속성(변수)과 메서드(함수)를 하나로 묶고, 객체의 내부 구현을 외부에 감추는 것을 말합니다.
    (- 객체를 마치 캡슐 안에 감추듯이 구현 내용을 숨기고, 객체의 인터페이스를 통해 상호작용함으로써 보다 안정적이고 유지보수가 용이한 코드를 만들 수 있게 해줍니다.)
    (- 이는 마치 사용자가 자동차의 조작 부분만 다루고, 자동차 엔진이나 기타 내부 부품들은 건드리지 않는 것과 같은 원리입니다.)

(- 이렇게 캡슐화를 통해 객체가 다른 객체와 독립적으로 작동하게 함으로써 코드의 유지보수와 확장성이 용이해집니다.)

  • 캡슐화를 구현하기 위해 클래스의 멤버 변수를 private 또는 protected로 선언하고, 외부에서 이 변수들에 접근할 수 있는 getter와 setter 메서드를 제공합니다. 이 방법을 통해 객체 내의 데이터와 기능을 묶고, 객체와 객체 사이의 결합도를 낮추어 코드의 유지 관리가 쉬운 구조를 만들어 줍니다.

Q : 추상화와 캡슐화의 차이점이 무엇인가요?
A :

  • 추상화는 불필요한 부분을 제거하고, 복잡한 것을 단순화하여 이해하기 쉽게 만들어주는 역할을 합니다.
  • 캡슐화는 객체 내부의 구현 내용을 외부에서 접근하지 못하도록 감추는 것을 말합니다.
profile
Backend Developer

0개의 댓글