Programming/Java

Class 의 개념

 

클래스의 개념을 알아보기에 앞서서 객체지향언어 을 잠깐 짚고 들어가보자.

객체지향이론의 기본 개념 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.' 라는 것 이다. 이 기본 개념을 이용하여, 자바에서 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능해졌다.

 

자바 하면 객체 지향 언어, 객체 지향 프로그래밍 (OOP, Object-Oriented Programming) 가 떠오를 것 이다.

 

객체 지향 언어의 주요 특징은 다음과 같다.

1. 코드의 재사용성이 높다.
: 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.

2. 코드의 관리가 용이하다.
: 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경 할 수 있다.

3. 신뢰성이 높은 프로그래밍을 가능하게 한다.
: 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.

 

이러한 장점으로 프로그램의 개발과 유지보수에 드는 시간과 비용을 획기적으로 개선이 가능해졌다.

 

객체지향개념을 학습할 때 재사용성과 유지보수 그리고 중복된 코드의 제거, 이 세 가지 관점에서 보면 보다 쉽게 이해할 수 있을 것이다.


그럼 이제 클래스에 대해 알아보자.

클래스란 '객체를 정의해놓은 것.' 또는 '객체의 설계도 또는 틀' 이라고 정의 할 수 있다.

클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다.

 

객체의 사전적인 정의는 '실제로 존재하는 것' 이지만, 프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다. 즉, 사물과 같은 유형적인 것 뿐만 아니라, 개념이나 논리와 같은 무형적인 것들도 객체로 간주한다.

 

클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 설계도를 통해서 제품을 만드는 이유와 같다. 하나의 설계도만 잘 만들어 놓으면 제품을 만드는 일이 쉬워진다는 것과 같다고 생각하자.

 

클래스의 객체를 사용한다는 것은 객체가 가지고 있는 속성과 기능을 사용한다는 뜻이다.

 

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화 라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스 라고 한다.

 

클래스란 객체를 정의한 것 이므로 클래스에는 객체의 모든 속성과 기능이 정의되어 있다. 클래스로부터 객체를 생성하면, 클래스에 정의된 속성과 기능을 가진 객체가 만들어 지는 것 이다.

속성과 기능은 아래와 같이 같은 뜻의 여러 가지 용어가 있으며, 이 중에서도 '속성' 보다는 '멤버변수'를, '기능' 보다는 '메서드'를 주로 사용한다.

객체의 속성과 기능
속성(property)
멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
기능(function) 메서드(method), 함수(function), 행위(behavior)

 

보다 쉽게 이해 할 수 있도록, TV를 예로 들어보자.

TV의 속성으로는 전원상태, 크기, 길이, 높이, 색상, 볼륨, 채널 과 같은 것들이 있으며,

기능으로는 켜기, 끄기, 볼륨 높이기, 채널 변경하기 등이 있다.

Class Tv{
	//TV의 속성 (멤버변수)
    String color;	// 색상
    boolean power;	// 전원상태 (on/off)
    int channel;	//채널
    
    //TV의 기능(메서드)
    //TV를 켜거나 끄는 기능을 하는 메서드
    void power(){
    	power = !power;
    }
    
    //TV의 채널을 높이는 기능을 하는 메서드
    void channelUp(){
    	++channel;
    }
    
    //TV의 채널을 낮추는 기능을 하는 메서드
    void channelDown(){
    	--channel;
    }
}

이러한 속성과 기능들을 각각 변수와 메서드로 표현을 하면 위와 같은 코드가 짜여진다.

 

자바에서는 어떤 프로그래밍이든 클래스 안에 속해있다. 또한, 다른 클래스에서 다른 클래스를 선언 하여 사용할 수 있다.

사람에 따라 같은 프로그램을 만들더라도, 여러가지 관점으로 만들 수 있다.

 

JDK(Java Development Kit)에서는 프로그래밍을 위해 많은 수의 유용한 클래스(Java API)를 기본적으로 제공하고 있으며, 우리는 이 클래스들을 이용해서 원하는 기능의 프로그램을 보다 쉽게 작성 할 수 있게된다.

 


[참고자료]

Java의 정석 - 남궁 성 지음