본문 바로가기

프로그래밍 언어/JAVA

JAVA 입문 - 객체 간 협력

지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - this 예약어

 

객체 간 협력

더보기

객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만든다고 했다.

그러면 실제로 객체의 협력이 어떻게 이루어지는지 살펴보자.

 

학생이 버스나 지하철을 타고 등교하는 것을 객체 지향 프로그래밍 해보자.

우선 학생, 버스, 지하철 세 객체를 만든다.

학생 클래스 생성

학생 클래스는 이름, 가진 돈, 학년을 멤버 변수로 갖는다.

그리고 '버스에 탄다', '지하철에 탄다', '현재 정보를 보여준다'를 멤버 함수(메서드)로 갖는다.

학생 클래스를 하나 생성하면 가진 돈과 이름을 초기화한다.

디폴트 생성자를 제공하지 않으므로 학생 클래스를 생성하려면 매개 변수가 있는 Student(String, int) 생성자를

호출해야한다.

 

takeBus( ) 는 학생이 버스를 탄 경우를 구현한 메서드이며, 학생이 버스를 타면 가진 돈이 1,000원 줄어든다.

takeSubway( )는 학생이 지하철을 탄 경우를 구현한 메서드이며, 가진 돈이 1,500원 줄어든다.

버스 클래스 구현

 

 

버스 클래스의 멤버 변수에는 버스 번호, 승객 수, 버스 수입이 있다.

take( ) 메서드는승객이 한 명 탄 경우를 말한다. 

요금을 매개 변수로 받고, 요금이 들어오면 버스 수입이 증가, 승객 수도 1 증가한다.

8행 Bus(int) 생성자는 버스 번호를 매개 변수로 받아 버스 클래스가 생성될 때 버스 번호를 초기화한다.

 

지하철 클래스 생성

지하철 클래스는 멤버 변수로 노선 번호, 승객 수, 지하철 수입을 갖고 있다.

Subway(String) 생성자가 노선 번호를 매개 변수로 받아 지하철 클래스를 생성하며, 노선 번호를 초기화한다.

take( )는 버스 클래스와 마찬가지로 승객이 한 명 탄 경우를 구현한 메서드이다.

요금을 매개 변수로 받아 요금이 들어오면 지하철 수입이 증가, 승객 수도 1 증가한다.

 

이제 Student, Bus, Subway 클래스를 기반으로 학생이 버스나 지하철을 탄 경우를 구현해보자.

두 학생 Choi와 Kim이 있다. 둘은 각각 버스와 지하철을 타고 등교한다.

출력 결과

생성된 두 학생 인스턴스 중 studentChoi는 이름이  Choi, 가진 돈이 5,000원으로 초기화되었다.

studentKim 인스턴스에서 이름은 Kim, 가진 돈은 10,000으로 초기화되었다.

그리고 bus6628 변수가 가리키는 버스와 subwayPurple이 가리키는 지하철이 생성되었다.

studentChoi는 takeBus( ) 메서드에서 버스를 타고, studentKim은 takeSubway( ) 메서드에서 지하철을 탄다.

이렇게 객체를 클래스로 구현하면 객체 사이에는 서로 어떤 값을 주고받고 메서드를 호출하는 일이 생긴다.

이 부분에서 '객체 간 협력'이 일어났다.

 

참고 서적: 자바 프로그래밍 입문 - 박은종

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

JAVA 입문 - 변수 유효 범위  (0) 2022.05.14
JAVA 입문 - static 변수  (0) 2022.05.13
JAVA 입문 - this 예약어  (0) 2022.05.11
JAVA 입문 - 정보 은닉  (0) 2022.05.10
JAVA 입문 - 참조 자료형  (0) 2022.05.10