JAVA 2011. 6. 9. 23:26
객체의 생성하는 방법

객체를 생성하기 위해서는 자바의 new 연산자를 사용해야 한다.

객체를 생성하는 식의 제일 앞에 new 를 쓰고 다음에 클래스이름, 그다음에 (데이터값)을

써야한다. StringBuffer 클래스는 객체를 생성할 때 문자열을 필요로 하니 다음과 같이 

문자열을 써넣어야 한다.

new StringBuffuer("Hey, Java")

하지만 이렇게 객체를 생성하는 식만가지고 명령문을 만들어서는 소용이 없고 자바에서는

객체도 데이터로 취급하기 때문에 변수에 대입한다.

obj =  new StringBuffuer("Hey, Java")

저 클래스를 담은 변수는 뭘까? int 나 byte 는 당연히 아닐 거고 바로 클래스 이름이다.

클래스의 이름인 동시에 클래스를 담는 변수의 타입이 된다. 

StringBuffuer obj =  new StringBuffuer("Hey, Java")

이렇게 말이다. 

객체의 기능을 사용하는 방법

앞서 말한것 중에 StringBuffer는 문자열을 조작할 수 있다고 했다. 일단 이 클래스가 어떤

기능을 제공하는지 찾아보자 (기능보러가기)

가운데 쯤 보면 Method Summary 라는 제목이 쓰여진 부분이 있는데 이 부분이 클래스의 

기능이 쓰여있는 부분이다. 

이 중에 deleteCharAt 매소드와 insert 매소드를 알아 볼 것인데 deleteCharAt 매소드는 

문자열의 특정 위치에 있는 문자 하나를 삭제하는 매소드이고, insert 매소드는 

int 와 char 타입의 파라미터를 하나씩 받는 insert매소드를 사용 할 것이고 기능은

문자열의 특정위치에 문자하나를 삽입하는 것이다.

이제 호출을 해야하는데 호출 방법은 매소드 이름 앞에 그 객체를 담고 있는 변수이름(obj)와

마침표(.) 를 써주어야 한다.

obj.deleteCharAt(1);
obj.insert(1,'i');

위 deleteCharAt 매소드의 1은 문자열에서 두번째 문자를 가리킨다, 이유는  왼쪽으로 시작하여

0부터 세어지기 때문이다, deleteCharAt 매소드에 1이라는 값을 넘기면 "Hey, Java"에서 

e가 지워진다, 두번째 문자열을 지우라는 매소드 이기 때문이다. 여기서 한번더 호출하면

y 마저 지워지고 "H, Java"만 남는다. 여기서 insert(1,'i')를 보면 우선 첫번째 파라미터의 1은

deleteCharAt 매소드와 같이 두번째 문자열자리를 가리키는 것이고 두번째 파라미터의 'i'는 

그 두번째 문자열자리에 i 를 넣으라는 것이다 . 그럼 H다음에 i가 들어가서

"Hi, Java" 가 찍힐 것이다. 

class objExam {
public static void main(String args[]){
StringBuffer obj;
obj = new StringBuffer("Hey, Java");
obj.deleteCharAt(1);
obj.deleteCharAt(1);
obj.insert(1,'i');
System.out.println(obj);
}
}
위 소스 이다. 돌려보면 정말 Hi, Java 가 찍힌다.


클래스 선언의 기초 문법

클래스를 선언하는 방법이다. 쇼핑몰의 재고관리 프로그램을 작성한다고 가정하자. 

[이름] 상품 재고 클래스    ---->  GoodsStock        클래스 이름은 대문자로 시작.
[데이터]
상품코드                         ---->  goodsCode         필드 이름은 소문자로 시작.
재고수량                         ---->  stockNum
[기능]
재고를 더한다                  ---->  addStock            메소드이름은 소문자로시 작하는 동사.
재고를 뺀다                     ---->  subtrackStock

이런식으로 이름들을 정했으면 그 다음에는 필드의 타입과 메소드의 파라미터 변수타입,

리턴 타입을 정해야 한다. 그렇게 하고 클래스를 선언한 것을 보자.

class GoodsStock {
String goodsCode;
int stockNum;
void addStock(int amount){
stockNum += amount;
}
int subtractStrock(int amount){
if(stockNum < amount)
return 0;
stockNum -= amount;
return amount;
}
}

이런 식이 된다. 보면 알수 있듯 객체를 만드는데 사용할 클래스도 지금까지 보았던 

main 매소드를 포함하는 클래스처럼 제일 앞에 class 키워드를 써줘야 한다.

String 타입의 goodsCode와 int 타입의 stockNum  이 있다. 

재고를 더한다에 해당하는 void addStock 매소드와 뺀다에 해당하는 substractStock이 

있는데 둘다 정수이기 때문에 int 형의 파라미터를 받고 addStock에 void가 붙는 이유는

앞서 말했듯 리턴값이 없어서 정도로 알아 두면 된다.

직접 선언한 클래스를 사용하는 프로그램의 작성 방법

앞에서 보았던 StringBuffer 클래스를 호출 할 때와 별반 다르지않다. 

변수를 만들고 담으면 된다.

obj = new GoodsStock(); 

이렇게 써준다. 이제 goodsCode와 stockNum 필드에 값을 대입해야 한다.

obj.goodsCode = "52135";
obj.stockNum = 200;

필드에 값을 대입 했으면 매소드를 호출해 본다.

obj.addStock(1000);

public class classExample {
public static void main(String args[]){
GoodsStock obj;
obj = new GoodsStock();
obj.goodsCode="52135";
obj.stockNum = 200;
System.out.println("상품 코드  :" + obj.goodsCode);
System.out.println("재고 수량  :" + obj.stockNum);
obj.addStock(1000);
System.out.println("상품 코드  :" + obj.goodsCode);
System.out.println("재고 수량  :" + obj.stockNum);
}
}

최종 소스이다. 이 소스가 아까그 클래스를 사용하여 결과값을 출력 하는 것이다.

상품 코드  :52135
재고 수량  :200
상품 코드  :52135
재고 수량  :1200

이런식의 결과값이 나온다.

이렇게해서 이 절에서는 클래스를 선언하고, 그 클래스를 이용해서 객체를 생성하고 사용하는

간단한 예제를 짜보았다. 

자바에서는 기초였지만 난 아직도 헷갈리는 부분이 있고, 아 이게 그런거였구나 .. 하는 

부분이 많았던 포스팅이다.. 기초가 부족하다기 보다 없다는얘기 -_-..










출판사 : 한빛미디어 , 저자 : 김윤명 님의 뇌를 자극하는 Java프로그래밍에서 공부한 내용입니다.
 

'JAVA' 카테고리의 다른 글

자바에서의 인스턴스란?  (1) 2011.06.13
JAVA] 17. 생성자  (0) 2011.06.13
JAVA] 15. 자바의 연산자 -2  (0) 2011.06.09
JAVA] 14. 자바의 연산자 -1  (0) 2011.06.08
JAVA] 13. 자바의 타입 분류 체계와 프리미티브 타입  (0) 2011.06.07
posted by 젊은쎄오
: