PromleeBlog
sitemap
aboutMe

posting thumbnail
객체 지향 프로그래밍(OOP)의 4가지 핵심 원칙
The Four Core Principles of Object-Oriented Programming (OOP)

📅

🚀

들어가기 전에 🔗

이번 시간에는 프로그래밍의 패러다임을 바꾼 혁신적인 아이디어이자, 현대 소프트웨어 개발의 근간을 이루는
객체 지향 프로그래밍(OOP)
에 대해 알아보겠습니다.
자바, 코틀린, C++ 등 수많은 언어가 바로 이 OOP 사상을 기반으로 하고 있습니다.

OOP는 단순히 코드를 작성하는 기술이 아니라, 복잡한 현실 세계의 문제들을 어떻게 컴퓨터 세상으로 옮겨와 질서정연하게 해결할 수 있을지에 대한 하나의
철학
입니다.
오늘은 이 철학을 떠받치고 있는 네 개의 거대한 기둥,
캡슐화, 상속, 다형성, 추상화
에 대해 깊이 있게 탐구해 보겠습니다.

🚀

OOP 🔗

OOP의 가장 기본적인 아이디어는, 세상의 모든 것을 속성(데이터)과 행동(메서드)을 가진
객체(Object)
로 바라보는 것입니다.
그리고 이 객체들을 만들기 위한 '설계도'가 바로
클래스(Class)
입니다.

마치 '붕어빵 틀(클래스)'이 있으면 수많은 '붕어빵(객체)'을 만들어낼 수 있는 것과 같습니다.
모든 붕어빵은 '팥'과 '반죽'이라는 속성을 공유하지만, 각각은 세상에 단 하나뿐인 고유한 존재입니다.

OOP는 이렇게 현실 세계를 컴퓨터 속으로 옮겨와, 객체들이 서로 상호작용하며 문제를 해결하도록 프로그램을 설계하는 방식입니다.
이 설계를 더욱 견고하고 유연하게 만들어주는 것이 바로 4가지 핵심 원칙입니다.

🚀

1. 캡슐화 (Encapsulation) 🔗

캡슐화는
서로 관련된 데이터와 그 데이터를 처리하는 함수(메서드)를 하나의 '객체'라는 캡슐 안에 함께 묶는 것
을 의미합니다.
그리고 중요한 것은, 캡슐 안에 있는 데이터(속성)를 외부에서 직접 접근하지 못하도록 숨기고, 오직 객체가 허용한 메서드를 통해서만 접근하도록 제한하는 것입니다.


🚀

2. 상속 (Inheritance) 🔗

상속은
부모 클래스가 가진 속성과 메서드를 자식 클래스가 그대로 물려받아 사용할 수 있게 하는 기능
입니다.
자식 클래스는 부모의 특징을 물려받으면서, 동시에 자신만의 새로운 특징을 추가하여 확장할 수 있습니다.


🚀

3. 다형성 (Polymorphism) 🔗

다형성은 '여러 가지 형태를 가진다'는 의미로,
같은 이름의 메서드라도 객체의 종류에 따라 다르게 동작
하는 것을 말합니다.
주로 부모 클래스의 메서드를 자식 클래스에서 재정의(Overriding)하여 구현합니다.


🚀

4. 추상화 (Abstraction) 🔗

추상화는 객체의
복잡한 내부 구현은 숨기고, 외부에는 실제 동작에 필요한 핵심적인 기능만 노출
하는 것을 의미합니다.
사용자는 그 기능이 내부적으로 어떻게 동작하는지 전혀 알 필요 없이, 단순히 사용법만 알면 됩니다.

OOP의 4가지 원칙
OOP의 4가지 원칙

🚀

주요 면접 예상 질문 🔗

OOP는 모든 개발자의 기본 소양이므로, 그 철학을 깊이 있게 이해하고 있는지 반드시 확인합니다.

1. 객체 지향 프로그래밍이란 무엇이며, 4가지 주요 특징을 설명해주세요. 🔗

OOP의 핵심을 요약하여 설명하는 가장 기본적인 질문입니다.
객체 지향 프로그래밍은 현실 세계의 사물이나 개념을 속성과 행동을 가진 '객체'로 모델링하고, 이 객체들 간의 상호작용으로 프로그램을 설계하는 패러다임입니다.
주요 특징으로는 데이터와 메서드를 하나로 묶고 정보를 은닉하는
캡슐화
, 부모의 특징을 물려받아 코드를 재사용하는
상속
, 같은 메시지에 대해 객체가 각기 다른 방식으로 반응하는
다형성
, 그리고 불필요한 내부 구현을 숨기고 핵심 기능만 노출하는
추상화
가 있습니다.

2. OOP의 장점은 무엇이라고 생각하시나요? 🔗

각 특징이 어떤 실질적인 이점으로 이어지는지 설명하는 것이 중요합니다.
OOP를 통해 얻을 수 있는 가장 큰 장점은
유지보수하기 좋고 유연한 소프트웨어
를 만들 수 있다는 점입니다.
캡슐화를 통해 코드의 안정성을 높이고, 상속을 통해 코드의 재사용성을 극대화하며, 다형성과 추상화를 통해 변화에 쉽게 적응하고 확장할 수 있는 구조를 만들 수 있습니다.
이는 결국 대규모의 복잡한 애플리케이션을 더 효율적으로 개발하고 관리할 수 있게 해줍니다.s

🚀

결론 🔗

오늘은 객체 지향 프로그래밍의 근간을 이루는 네 가지 핵심 원칙에 대해 알아보았습니다.

참고 🔗