Java 입문:제10회 클래스의 정의와 이용

※여기에서 오브젝트 지향으로 들어가지만, 안드로이드 어플리케이션을 배웠지만 Java를 잘 모르는 사람을 위한 해설이 됩니다.

8 번까지 Java의 기본 문법을 살펴 보았습니다. 7회까지는 main 메소드라고 불리는 실행 가능 장소에 어떤 명령을 쓰면 좋을까 하는 이야기였습니다. 8회는 메소드를 스스로 만들고 main 메소드 밖에 처리를 기술했습니다. 모든 처리를 main 메소드 안에 기술할 수도 있습니다만, 재이용을 할 수 없는 등의 이유로부터 스스로 메소드를 만들어 호출해 보았던 것입니다.

여러 명(여러명~세계의 참가자)이 모여 애플리케이션을 구축하는 것을 이미지해 보세요. 모두가 하나의 파일안에, 처리를 기술하거나 메소드를 정의하거나 하면 무엇이 쓰여지고 있는지 모르게 되어 혼란해 버립니다. 그래서 자바에서는 클래스 단위로 파일을 나눌 수 있습니다 (주 : 1 파일내에 복수의 클래스를 정의할 수도 있습니다만 여기에서는 파일 단위라고 해 설명합니다).

다른 파일로 나눈 클래스에는 제8회와 같이 메소드를 기술할 수 있습니다. 예를 들어 의사가 Android에서 자주 사용하는 Activity를 정의한다면 다음과 같습니다.
public class Activity {

}

이 Activity 클래스를 이용하려면, main 메소드내에서 다음과 같이 이용합니다.
static public  void main(String [] args) {
  Activity actA = new Activity();
}

Java에서는 new 연산자를 이용하는 것으로, 그 클래스를 이용할 수 있게 됩니다. 다음과 같이 여러 개의 Activity 클래스를 활용할 수도 있습니다.
static public  void main(String [] args) {
  Activity actA = new Activity();
  Activity actB = new Activity();
}

이러한 개념도는 다음과 같습니다.



new 연산자를 이용해 생성한 것을 객체 또는 인스턴스라고 부릅니다. 객체에는 이름을 붙일 수 있고, actA나 actB라는 이름을 붙이고 있습니다. 이러한 이름을 오브젝트 변수 또는 인스턴스 변수라고합니다. 객체 변수를 이용하여 객체가 가지는 다양한 기능을 이용할 수 있습니다.

actA와 actB는 각각 다른 객체에 연결되어 있습니다. 시험에 다음과 같이 작성해 봅시다.
static public  void main(String [] args) {
  Activity actA = new Activity();
  Activity actB = new Activity();
  System.out.println(actA);
  System.out.println(actB);
}

실행하면 다음과 같이 표시됩니다.
Activity@5127a6bc
Activity@233aa44

Activity라는 클래스 이름 뒤에 숫자와 알파벳이 늘어서 있습니다. 이 숫자와 알파벳은 실행 타이밍과 환경에 따라 다릅니다. 이것은 객체의 일련 번호와 같으며, actA와 actB는 각각 Activity 클래스이지만 별도의 존재임을 나타냅니다.

비유한다면 Android의 Nexus5를 말하는 기종이 있다고 합니다. 이 Nexus5를 나와 당신이 가지고 있었다고 생각했을 때, 둘 다 Nexus5라는 것은 변하지 않지만 다른 존재인 것과 같은 상황입니다. 이와 같이 생각하면 클래스는 그 존재를 정의한 것이며, 그 존재를 정의한 설계도라고 할 수 있습니다. 또 오브젝트는 클래스라고 하는 설계도로부터 실제로 만들어낸 물건이라고 할 수 있습니다.

이와 같이 오브젝트(사물)의 사고방식을 주체로 프로그래밍을 행하는 것을 오브젝트 지향 프로그래밍이라고 부릅니다.

좋은 웹페이지 즐겨찾기