객체 지향 프로그래밍
기술노트
🏛️ 객체 지향 프로그래밍 (OOP)
객체 지향 프로그래밍(Object-Oriented Programming)은 프로그램을 수많은 독립적인 객체(Object)들의 상호작용으로 보고, 이 객체들을 조립하여 전체 시스템을 완성해 나가는 프로그래밍 패러다임입니다. 현실 세계의 사물이나 개념을 객체로 모델링하여, 코드의 재사용성과 유지보수성을 높이는 것을 목표로 합니다.
🧱 OOP의 4가지 핵심 특징
- 캡슐화 (Encapsulation) : 데이터와 그 데이터를 처리하는 함수(메서드)를 하나로 묶고, 객체의 내부 구현을 외부에 감추는 것입니다. 이를 통해 데이터의 무결성을 보장하고, 객체의 자율성을 높입니다.
- 상속 (Inheritance) : 부모 클래스의 속성과 메서드를 자식 클래스가 그대로 물려받아 사용할 수 있게 하는 것입니다. 코드의 중복을 줄이고 재사용성을 높입니다.
- 다형성 (Polymorphism) : 하나의 인터페이스나 부모 클래스를 사용하여, 여러 다른 타입의 객체를 동일한 방식으로 다룰 수 있는 능력입니다. 코드의 유연성과 확장성을 높입니다.
- 추상화 (Abstraction) : 객체들의 공통적인 특징(속성, 기능)을 뽑아내어, 복잡한 내부 구현을 숨기고 핵심적인 기능에만 집중할 수 있도록 하는 것입니다.
🤔 왜 객체 지향 프로그래밍을 사용하는가?
과거의 절차 지향 프로그래밍은 데이터와 함수가 분리되어 있어, 프로그램의 규모가 커질수록 코드가 복잡해지고 유지보수가 어려워지는 문제가 있었습니다.
객체 지향 프로그래밍은 관련된 데이터와 함수를 '객체'라는 단위로 묶어 관리함으로써, 코드의 재사용성을 높이고, 각 객체가 독립적으로 역할을 수행하도록 하여 대규모 소프트웨어를 더 쉽게 설계하고 관리할 수 있게 해줍니다.
💡 정보처리기사 핵심 Point
- 정보처리기사 시험에서는 객체 지향 프로그래밍의 개념과 4가지 핵심 특징(캡슐화, 상속, 다형성, 추상화)을 묻는 문제가 자주 출제됩니다. 각 특징의 의미와 장점을 정확히 이해해야 합니다.
- Java, C++, Python, C# 등 대부분의 현대 프로그래밍 언어는 객체 지향 패러다임을 지원합니다.
- 객체 지향 설계 원칙인 SOLID 원칙(단일 책임, 개방-폐쇄, 리스코프 치환, 인터페이스 분리, 의존관계 역전)을 이해하는 것이 중요합니다.