객체 지향 프로그래밍: 객체란?

정소이·2023년 1월 17일
0

OOP를 향해서

목록 보기
1/10

객체지향프로그래밍, OOP는 무엇인가요?

그런데,

객체?

객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것들 중에 자신의 상태(state)와 행동(behavior)을 갖고있는 것이다.
우리 주변에는 이런 객체들이 아주 많이 존재하는데 예를 들면, 우리집에는 고양이 세마리와 강아지 한마리가 있다.
하지만 공식문서를 참고하여 자전거로 예를 들어보겠다.

자전거는 이런 상태를 가진다.

  • cadence
  • gear
  • speed

그리고 고양이는 이런 행동을 한다.

  • 기어 변경
  • 브레이크 작동
  • 속도 올리기

이렇게 현실세계에서 OOP의 개념을 적용하는 것이 학습에 좋은 출발이 될 수 있다.
잠시 시간을 내어 가까이 있는 객체를 관찰해보면 질문 두개가 생긴다.
"이 객체에 어떤 상태가 가능할까?"
"이 객체가 어떤 행동을 할 수 있을까?"

소프트웨어 객체도 현실세계와 비슷한 컨셉을 가진다. 상태와 행동으로 이루어져있다.
객체는 필드에 상태를 저장하고, 메서드를 통해 동작한다. 메서드는 객체 내부에서 동작하면서 객체 간 소통을 위한 메커니즘을 제공한다. 내부 상태는 객체 안에 숨기고, 메서드를 통해 외부와 상호작용을 하도록 요구하는것이 객체 지향 프로그래밍의 기본 원칙 중 하나인 캡슐화(encapsulation)다.

이렇게 코드를 객체로 묶으면 다음과 같은 장점이 있다.

  1. 모듈화
    • 객체를 위한 소스코드는 다른 객체와 독립적으로 생성되고 유지된다. 한번 만들어지면, 객체는 시스템 내부에서 쉽게 전달된다.
  2. 은닉화
    • 객체는 메서드를 통해서 외부와 상호작용하므로 객체 내부의 세부정보가 외부에 숨겨진 상태로 유지할 수 있다.
  3. 코드 재사용성
    • 객체가 이미 존재하는 경우, 프로그램에서 해당 객체를 사용할 수 있다. 이 객체는 전문가들이 복잡한 작업들을 개발, 테스트, 디버그할 수 있다. 그리고 우리는 이 객체를 신뢰하고, 코드 내에서 사용할 수 있다.
  4. 연결 가능성 및 디버그 용이
    • 특정 객체에 문제가 있다고 판단될 경우 해당 객체를 간단히 제거하고 다른 객체를 연결할 수 있다.

출처
https://docs.oracle.com/javase/tutorial/java/concepts/object.html

profile
프로그래밍 학습에 왕도는 없다! 내가 컴퓨터를 닮아갈때까지!

0개의 댓글