객체지향 프로그래밍

Yong Lee·2025년 9월 30일

OOP가 뭔지 설명해주세요.

  • OOP는 오브젝트를 가지고 프로그램을 만드는 방법입니다.
    현실 세계를 모방해서 사물을 객체화하여 정의하고, 이 객체들의 상태와 행동을 중심으로 프로그램을 구성합니다.
    덕분에 코드 재사용성, 유지보수, 확장성이라는 장점을 가지게 됩니다.

  • 핵심키워드:

    • 클래스: 객체를 만드는 템플릿(설계도)
    • 객체: 클래스 설계도에 따라 실제로 만들어진 실체. 자기만의 고유한 속성과 행동을 가지고 있음
    • 추상화: 복잡한 내용을 다 보여주지 않고, 핵심 기능만 제공
    • 캡슐화: 객체 내부 구현을 숨기고 외부에서는 접근 불가능하게 막는 것
    • 상속: 부모 클래스의 속성과 메서드를 자식 클래스가 물려받아 사용하는 것
    • 다형성: 똑같은 기능이더라도 내부 동작을 다르게 하는 것
    • SOLID 원칙: 아래에서 자세히 설명

Class와 Object에 대해 설명해주세요.

  • class는 어떤 완성체를 만들기 위한 설계도같은 존재입니다. 그리고 이 클래스로 찍어내서 만들어낸 것이 오브젝트라고 할 수 있습니다.
  • 추가로 그 오브젝트가 메모리에 올라가서 실제로 사용 가능한 상태가 되면 그걸 인스턴스라고 합니다.

다형성 개념을 설명하고, 프로젝트에 적용한 사례가 있다면 얘기하세요.

  • 다형성은 똑같은 기능이더라도 내부 구조를 여러 방법으로 하는 것을 말합니다. 하나의 인터페이스나 부모 클래스를 통해서 여러 형태의 객체를 다룰 수 있게 해주는 기능입니다.
  • 저는 헬스 첼린지라는 프로그램에서 로그인 기능을 만들 때 소셜로그인과 id비번으로 로그인하는 두가지 방법을 만들었습니다.
    이때 로그인을 하기 위해 JWT 토큰을 받기위한 방법을 달리하기 위해 인터페이스를 만들었고 원하는 토큰만 응답받을 수 있게하였습니다.

캡슐화란 무엇인가요?

  • 클래스의 속성과 메서드를 외부에서 접근을 막는 것을 캡슐화라고 합니다.
    접근 단계로는 public private protected가 있으며,
    private을 하게 된다면 해당 클래스 내부에서만 해당 데이터를 수정할 수 있습니다.
  • 캡슐화를 하는 이유는 객체 외부에서 잘못된 데이터 사용을 막아서 데이터 보호할 수 있기 때문입니다.

상속의 개념을 설명하고, 장단점을 얘기하세요.

  • 개념은 부모클래스가 자식클래스에게 속성과 메서드를 물려주는 것을 말합니다.
  • 주로 상속은 IS-A 관계일 때 많이 사용됩니다. (Car IS-A Vehicle)
  • 장점으로는 코드 재사용성이 증가하여 반복된 코드를 줄일 수 있습니다. 자식 클래스 코드는 변경하지 않고 부모 클래스 하나만 수정하면 되기 때문에 유지보수성이 높습니다.
  • 단점으로는 강한 결합도가 있습니다.
    부모 클래스 하나에 결집되어 있기 때문에 유연성이 떨어집니다.
    설계 자체가 까다로울 수 있습니다.

SOLID 원칙이란 무엇인가요?

  • 클린코드를 위한 5가지 객체지향 설계 원칙을 말합니다.
    이 5가지는 단일 책임, 개방 폐쇄, 리스코프 치환, 인터페이스 분리, 의존성 역전이라는 원칙입니다.

단일 책임 원칙을 설명하세요.

  • SRP(Single Responsibility Principle)
profile
오늘은 어떤 새로운 것이 나를 즐겁게 할까?

0개의 댓글