[Java] 4.1 클래스 정의

4.1 클래스 정의

Java 언어에서 클래스를 정의할 때 캡슐화 대상은 멤버 필드와 멤버 메서드입니다. 멤버 필드는 개체의 상태를 나타내는 필드로 데이터로 생각할 수 있습니다. 멤버 메서드는 개체의 상태를 제어하는 기능입니다.

그리고 클래스의 멤버에는 접근 지정을 통해 클래스 내부에서만 접근할 수 있는지, 클래스 내부와 파생 클래스에서 접근할 수 있는지, 다른 클래스에서도 접근할 수 있는지를 결정할 수 있습니다.  이를 통해 개체의 정보를 은닉하여 신뢰성을 높일 수 있습니다.

클래스는 클래스 이름과 멤버 필드와 멤버 메서드로 구성합니다. OOP 프로그램을 설계할 때 클래스는 세 개의 칸으로 구분하는 사각형으로 표시하는데 맨 위칸에는 클래스 이름을 표시하고 두 번째 칸에는 멤버 필드, 세 번째 칸에는 멤버 메서드를 표시합니다.

그리고 멤버의 접근 지정도 같이 표시하는데 +는 다른 클래스에서도 접근할 수 있다는 표시로 코드 상에서는 public으로 지정합니다. #은 클래스 내부와 파생 클래스에서 접근할 수 있다는 표시로 코드 상에서는 protected로 지정하며 다음 장에서 다룰 것입니다. 마지막으로 -는 클래스 내부에서만 접근할 수 있다는 표시로 private으로 지정합니다.

[그림 4.2] UML에서 클래스 표시
[그림 4.2] UML에서 클래스 표시

예를 들어 음악가를 정의해 보기로 합시다. 프로그램에서는 음악가마다 이름과 연주 스킬, 음악가 번호를 기억하고 연주하다, 소개하다 및 음악가의 상태 정보를 확인할 수 있도록 합시다. 또한 음악가 개체를 생성할 때 음악가 이름과 번호를 전달하기로 합시다.

이를 위해 음악가를 클래스로 정의하고 이름과 연주 스킬, 음악가 번호는 음악가 개체 상태 정보이므로 멤버 필드로 캡슐화합니다. 그리고 음악가 개체를 생성하기 위한 전용 메서드(생성자)와 연주하다, 소개하다 및 음악가의 상태 정보를 확인하는 메서드를 캡슐화합니다.

먼저 Java 프로젝트를 생성한 후에 진입점 클래스를 작성할 Program 클래스를 추가하세요. 그리고 Musician 클래스를 추가하세요.

클래스를 정의할 때 class 키워드와 클래스 이름을 명시하고 블럭을 지정하여 블록 내부에 멤버 필드와 멤버 메서드를 캡슐화합니다.

public class Musician {

}