[Java] 2_6_클래스와 객체2(2)

Haeun Noh·2022년 8월 15일
0

0815


오늘은 광복절을 맞이하여 집에 있는 날이다. 물론 방학이지만 내일이면 개학이기 때문에 개학이 광복절 덕분에 뒤로 미뤄졌다고 생각하는 중이다. 대한독립만세!

이번 강의에서는 객체 간의 협력에 대해서 배울 것이다. 객체를 여러 개를 만들 수 있는데 이렇게 만들어진 객체들이 어떻게 협력을 하고 또 어떠한 상관관계를 가지는지에 대해서 배운다. 처음 배우는 개념이지만 뭔가 예시를 들면서 설명을 들었더니 꽤나 흥미로웠다. 그럼 바로 정리를 시작해보도록 하자.



객체 간의 협력

객체 간의 협력이 어떻게 이루어지는지에 대해서 학생이 버스나 지하철을 타는 상황을 객체 지향으로 예시를 들어보도록 하자.

학생이라는 클래스, 버스라는 클래스, 지하철이라는 클래스가 있다. 각 클래스에 있는 속성들을 보도록 하자.

  • 학생 : 학생 이름, 돈, 학년 등등
  • 버스 : 버스 번호, 승객 수, 벌어들인 돈 등등
  • 지하철 : 노선 번호, 승객 수, 벌어들인 돈 등등

학생이 지하철을 탄다, 학생이 버스를 탄다 라고 할 때 이 사이에서 무슨일이 일어날까?

학생이 버스를 탄다 라는 상황을 한 번 가정해보자. 학생이 어떠한 버스를 타게 되면 학생은 버스에 돈을 지불할 것이다. 그것이 현금이 되었든 버스 카드가 되었든 말이다. 학생이 돈을 지불하면 학생 입장에서는 - 이고, 버스 입장에서는 + 가 될 것이다. 또한 학생이 버스에 탑승함으로써 버스의 승객 수는 + 일 것이고 이는 지하철도 동일하게 적용된다.

여기에서 우리는 하나의 공통된 속성을 찾을 수 있겠다. 이것이 메서드가 되는데 과연 위의 상황에서는 어떠한 메서드가 필요하게 될까? 바로 탄다 정보 등등이 필요할 것이고 이 것들이 메서드가 될 것이다.

버스와 지하철은 둘 다 운송 수단이다. 운송수단이 하는 일은 사람을 태우고 돈을 받는 일을 한다. 이것을 상속을 쓴다라고 하면 상위 클래스를 하나 만들 수 있고, 상속을 받는 구조를 만들 수 있게 된다.

만약 상위 클래스Trans라고 만들고 하위 클래스에는 Bus Subway를 두고, take()라는 메서드추상 클래스로 둔다라고 가정해보자. 학생이 Trans라는 상위 클래스와 협업을 할 수 있게 코딩을 하면 나중에 운송수단들을 하나로 모아서 관리할 수 있게 될 것이다. 이 것이 바로 상속의 장점이라고 할 수 있겠다.



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글