티스토리 뷰

주의 사항!

  • 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
  • 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
  • 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.


현실 세계에서 어떤 제품을 만들 때, 부품을 먼저 개발하고 이 부품들을 하나씩 조립해서 완성된 제품을 만들 듯이, 소프트웨어를 개발할 때에도 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍이라고 합니다.

 

객체

객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말합니다. 예를 들어 물리적으로 존재하는 자동차, 자전거, 사람, 책 등과 추상적인 학과, 강의, 주문 등이 모두 객체가 될 수 있습니다.

 

(저는 여기서 하나 신기했습니다. 물리적인 것들을 객체로 생각할 수 있는 건 당연한 것으로 생각했습니다. 그런데 추상적인 것까지 객체로 생각할 수 있는 줄은 몰랐습니다. 위에서 든 추상적인 객체의 예로 학과, 강의, 주문 등을 들었습니다. 그런데 학과는 어떤 학생이 기계공학과인가 전자공학과인가 하는 등의 속성으로 생각할 수 있고, 강의는 교수님이 주최하고 학생들이 참여하는 어떠한 동작, 그리고 주문은 손님이 매장에서 취하는 여러 선택지 중 하나, 즉, 동작으로 생각했습니다. 즉, 추상적인 예들이 물리적인 실체를 가지는 다른 객체의 속성이나 동작으로 존재할 수 있다고 생각했지, 이 자체가 객체가 될 수 있다고는 생각하지 않았습니다.) 

 

객체는 속성과 동작으로 구성되어 있습니다. 예를 들어 사람은 이름, 나이 등의 속성과 웃다, 걷다 등의 동작이 있고, 자동차는 색상, 모델명 등의 속성과 달린다, 멈춘다 등의 동작이 있습니다. 자바에서는 이 속성과 동작들을 각각 '필드(field)''메서드(method)'라고 부릅니다.

 

현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 '객체 모델링'이라고 합니다. 객체 모델링은 현실 세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메서드로 정의하는 과정이라고 볼 수 있습니다.

 

객체의 상호작용

객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용을 하면서 동작합니다. 객체들 사이의 상호작용 수단은 메서드입니다. 객체가 다른 객체의 기능을 이용하는 것이 바로 메서드 호출입니다. 

 

예를 들어, 수진과 철수라는 두 객체가 있습니다. 두 객체 모두 어떤 물건을 준다는 메서드와 물건을 받는다는 메서드가 정의되어 있습니다. 이때 수진이 철수에게 빼빼로를 주는 것은, 수진 객체에서 물건을 준다는 메서드를 호출하고, 철수 객체에서 물건을 받는다는 메서드를 호출함으로써 구현할 수 있습니다. 더 나아가서 수진이 누구에게 어떤 물건을 줄 것인지의 두 정보를 매개 값으로 전달하여 수진 객체의 물건을 준다는 메서드를 호출할 때, 해당 메서드 안에서 매개 값으로 받은 객체(누구에게)의 물건을 받는다는 메서드를 호출할 수 있다면 프로그래밍은 더욱 깔끔해질 것입니다.

 

객체 간의 관계

객체 간의 관계에는 집합 관계, 사용 관계, 상속 관계 세 가지가 있습니다. 우선 집합 관계는 자동차 - 바퀴, 엔진, 핸들, 브레이크 등과 같이 완성품과 부품 사이의 관계를 의미합니다. 사용 관계는 사람 - 자동차, 계산기, 휴대폰 등과 같이 한 객체에 의해 사용되는 다른 객체의 관계를 의미합니다. 상속 관계는 기계 - 자동차, 로봇, 컴퓨터 등과 같이 어느 큰 범주 안에 포함되어 있는 세부 객체들의 관계를 의미합니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함