본문 바로가기
Frontend

객체 지향 프로그래밍

by (╯✧▽✧)╯┻━┻ 2024. 3. 6.

 

객체 지향 프로그래밍

 

 

객체 지향 프로그래밍(Object-Oriented Programming, OOP)

소프트웨어 개발에서 널리 사용되는 프로그래밍 패러다임 중 하나

이 접근 방식은 프로그램을 객체들의 모임으로 보고,

객체 간의 상호작용을 통해 애플리케이션을 구축하는 것을 목표로 한다

객체는 데이터와 이 데이터를 조작할 수 있는 메서드(함수)를 캡슐화한 것으로 정의된다

 

OOP의 핵심 개념

  1. 클래스(Class)와 객체(Object)
    • 클래스
      • 객체를 생성하기 위한 템플릿 또는 블루프린트
      • 클래스는 객체의 구조와 행동을 정의
    • 객체
      • 클래스에 정의된 속성(상태)과 행동(메서드)을 실제로 가지고 있는 인스턴스
  2. 상속(Inheritance)
    • 한 클래스(부모 클래스)의 속성과 메서드를 다른 클래스(자식 클래스)가 상속받아 사용할 수 있게 하는 메커니즘
    • 코드 재사용성을 높이고, 중복을 줄일 수 있음
  3. 캡슐화(Encapsulation)
    • 객체의 데이터(속성)와 그 데이터를 조작하는 메서드를 하나로 묶고, 객체의 일부 구현 세부 사항을 외부로부터 숨기는 기법
    • 데이터의 직접적인 접근을 제한함으로써 데이터 무결성을 보장할 수 있음
  4. 다형성(Polymorphism)
    • 같은 이름의 메서드가 다른 클래스에서 다른 동작을 할 수 있게 하는 능력
    • 컴파일 시간(정적) 다형성과 실행 시간(동적) 다형성이 있으며, 오버로딩과 오버라이딩을 통해 구현됨
  5. 추상화(Abstraction)
    • 복잡한 내부 구현 세부 사항을 숨기고, 필요한 부분만을 간략화하여 표현하는 과정
    • 사용자에게는 인터페이스만을 제공하여 사용의 단순화를 추구

 

OOP의 장점

  • 재사용성
    • 코드의 재사용이 용이하여 개발 시간과 비용을 절약할 수 있다
  • 확장성
    • 시스템의 일부를 변경해야 할 때, 해당 부분만을 수정하거나 확장함으로써 전체 시스템에 미치는 영향을 최소화할 수 있다
  • 유지보수성
    • 캡슐화와 추상화를 통해 시스템의 복잡성을 관리할 수 있으며, 이로 인해 유지보수가 용이해진다
  • 명확한 구조
    • 객체 지향 프로그래밍은 사람이 세계를 인식하는 방식과 유사하게 시스템을 여러 객체로 나누어 설계하기 때문에, 프로그램의 구조가 명확해진다

 

객체 지향 프로그래밍은 소프트웨어 개발에 있어 강력하고 유연한 설계를 가능하게 하는 중요한 패러다임이다

Java, C++, Python, JavaScript 등 다양한 프로그래밍 언어가 OOP의 원칙을 지원한다