본문 바로가기

프로그래밍 일반/JAVA

[JAVA] 객체스럽다란? class란?

클래스는 변수와 메소드로 구성된 하나의 범주이다.

포켓몬스터에서 이브이는 여러마리가 될 수 있지만 공통되는 이브이의 모습을 class로 표현한다.

 

변수는 대상에 대한 정보이다. 피카츄의 이브이의 체력상태가 예시이다.

메소드는? 변수를 바꾸는 연산이다.

만약 이브이가 공격을 당했다면 체력이 깎인다. 이것은 메소드로 표현할 수 있다.

 

마치 계산기에서 숫자는 변수이고, 계산을 하는 행위는 메소드와 같다.

 

 

 

JAVA에서 자주쓰이는 class로는 String이 있다. String의 내부 변수들은 케릭터의 배열이다.

연산에는 length()가 있는데, 이것은 케릭터배열의 상태를 알려준다는 행동이다.

 

 

 

 

변수는 객체의 정보이고, 메소드는 객체와 관련된 연산이라는 관점을 갖는 것이 왜 중요한가?

 

프로그래밍을 설계할 때, 꼬북이가 파이리를 공격한다고 하자.

그럴때 꼬북이가 파이리를 공격했다는 것을 표현한다면,

공격 : 꼬북이 -> 파이리

이 되고, 공격은 하나의 메소드가 된다. 이럴 때 꼬북이 객체가 파이리 객체의 상태를 변경하는데,

해당 메소드를  1.꼬북이가 파이리의 정보를 직접 변경한다고 표현할 수도 있고,

2. 파이리가 꼬북이의 공격을 당해서 정보가 변했다라고 표현할 수도 있다.

 

꼬부기 객체{
int 체력
public void attack_firy(int damage){
파이리.체력 -= damage;
}
}

파이리 객체{
int 체력
public void being_attack(int damage){
체력 -= damage;
}
}

 

객체스럽게 표현하는 것은 후자이다. 객체의 메소드는 관련 변수의 상태를 변화시키는 것이기 때문이다.

그리고 후자로 설계해야 코드의 재생산성이 좋아진다. 파이리는 꼬북이나 이상해씨에게 다 공격받을 수 있기 때문이다.