[매일메일] 객체 지향 프로그래밍이란 무엇이고, 어떤 특징이 있나요?

2025. 3. 31. 12:14·CS
해당 글은 매일메일 서비스를 이용하면서 받은 질문에 대한 공부 내용을 적은 글입니다.
만약 잘못된 내용이 있으면 댓글로 남겨주세요!

https://www.maeil-mail.kr/

 

매일메일 - 기술 면접 질문 구독 서비스

기술 면접 질문을 매일매일 메일로 보내드릴게요!

www.maeil-mail.kr

객체지향 프로그래밍이란

객체지향 프로그래밍(OOP)는 프로그램 설계 방법론 중 하나입니다.

프로그램을 객체(Object)라는 단위로 나누고 이런 객체들의 상호작용으로 프로그램을 구성하는 방식을 의미합니다.

이런 객체지향이 생겨난 이유는 프로젝트의 유지 및 보수와 연결되어 있습니다.

이전에는 절차적 프로그래밍을 사용했습니다. 절차적 프로그래밍은 프로그램을 함수 단위로 나눠 함수의 호출로 프로그램을 구성하는 방식입니다. 이런 방식은 코드의 중복을 줄여주지만 데이터 자체를 구조화 할 수는 없습니다. 그래서 프로젝트의 규모가 커지면 하나의 함수가 이곳저곳에서 사용되고 이는 해당 함수를 수정할 때 변경사항의 전파로 인한 유지 및 보수의 리소스를 늘립니다.

https://study-note10.tistory.com/9

 

좋은 코드란 무엇일까 (feat. 객체지향)

이 글은 공부를 하던 중 생긴 궁금증을 해결한 내용 또는 제 생각을 적은 글입니다.만약 잘못된 내용이 있으면 댓글로 남겨주세요! 개발에 대해 공부하고 프로젝트를 진행하면서 좋은 코드에

study-note10.tistory.com

특히 GUI 프로그래밍에서 발생하는 이벤트 처리 과정에서 절차적 프로그래밍은 이런 이벤트 처리에 대한 코드가 흩어져 있지만 객체 지향 프로그래밍은 이벤트 처리 로직을 하나의 객체로 응집시켜 유지 및 보수를 더 쉽게 해주는 장점이 있습니다.

객체지향 프로그래밍 특징

1. 캡슐화

캡슐화란 변수나 메소드와 같이 연관된 속성이나 기능들을 한 곳에서 관리하는 것을 의미합니다.

변수나 메소드에 대한 구현은 캡슐처럼 내부에 두고 외부는 인터페이스만 공개하여 객체의 무결성을 유지하고 코드의 유지 및 보수를 쉽게 만들어 줍니다.

2. 추상화

추상화란 객체의 공통적인 속성을 추출하여 추상 클래스 or 인터페이스로 만들고 구체적인 로직인 구현체에서 정의하여 각각의 객체가 핵심 기능에만 집중할 수 있도록 하는 것을 의미합니다.

예를 들어 동그라미, 세모, 네모, 등... 여러 모양들에 대한 객체가 존재할 때 이를 Shape으로 추상화를 할 수 있습니다.

3. 상속

상속은 부모 클래스의 변수나 메소드를 재사용하여 자식 클래스가 물려받아 사용하는 것을 의미합니다.

이를 통해 여러 클래스에 있는 중복 코드를 부모 클래스로 이전하여 중복 제거, 코드 재사용성을 높이는 효과를 얻을 수 있습니다.

4. 다형성

다형성은 같은 인터페이스나 메서드 이름을 가지고 있어도 맥락에 따라 다른 동작을 수행하도록 하는 것을 의미합니다.

보통 메소드 오버로딩이나 오버라이딩을 통해 다형성을 구현합니다.

'CS' 카테고리의 다른 글

동기/비동기, 블로킹/논블로킹은 무엇이고 각각의 차이점은 무엇인가요?  (0) 2025.10.08
@Async는 어떻게 동작하나요?  (0) 2025.10.06
컴퓨터의 병렬 처리 기술  (5) 2025.07.27
[매일메일] PRG 패턴에 대해서 설명해 주세요.  (0) 2025.03.24
'CS' 카테고리의 다른 글
  • 동기/비동기, 블로킹/논블로킹은 무엇이고 각각의 차이점은 무엇인가요?
  • @Async는 어떻게 동작하나요?
  • 컴퓨터의 병렬 처리 기술
  • [매일메일] PRG 패턴에 대해서 설명해 주세요.
ggio
ggio
개발 공부를 하며 배운 내용을 기록합니다.
  • ggio
    기록을 하자
    ggio
  • 전체
    오늘
    어제
    • 분류 전체보기 (44)
      • SW마에스트로 (5)
      • System Architecture (8)
      • Algorithm (15)
      • Side Tech Notes (8)
      • CS (5)
      • 취준 (2)
      • 회고 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    메시지 큐
    코딩테스트
    3PC
    프로액터 패턴
    토스 면접
    객체지향
    컬쳐핏 인터뷰
    면접
    분산락
    Programming
    다중화
    시스템 아키텍쳐
    fail back
    시스템 설계
    리트코드
    Algorithm
    leetcode
    부트캠프
    멀티 코어
    비관락
    알고리즘
    코테
    소프트웨어 마에스트로
    소마
    매일메일
    취준
    토스 NEXT
    SW마에스트로
    프로그래밍
    리액터 패턴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
ggio
[매일메일] 객체 지향 프로그래밍이란 무엇이고, 어떤 특징이 있나요?
상단으로

티스토리툴바