[아이티센 부트캠프] 실습 정리 (클래스 & 객체 생성)

이언덕·2026년 3월 23일

아이티센 부트캠프

목록 보기
12/115
post-thumbnail

클래스 정의와 객체 생성 실습

문제

이번 실습은 Product 클래스를 만들고, 생성자와 일반 메서드를 작성한 뒤 Product 객체 여러 개를 배열에 저장해서 출력하는 문제다.

문제에서 요구한 내용은 다음과 같다.

  • Product 클래스에 name, balance, price 멤버변수를 만든다.

  • 생성자는 두 개를 만든다.
    • Product(String, int, int)
    • Product()

  • 기본 생성자 Product()는 "듀크인형", 5, 10000으로 초기화한다.

  • getName(), getBalance(), getPrice() 메서드를 만든다.

  • main()에서는 Product 타입 배열 5칸을 만들고, Product 객체 5개를 저장한다.

  • 마지막에는 상품명, 재고량, 가격을 한 줄씩 출력한다. (Ex => 듀크인형 5 10,000원)

  • 가격은 천 단위마다 ,를 붙이고 금액 끝에 원을 붙여야 한다.


풀이 순서

앞으로 항상 실습을 하기 전에 어떤 순서로 구현을 할지 미리 정해놓고 진행할 예정이다.
만약 잘못된 순서라면 그거에 대해서도 정리를 할 예정이다!
1. Product 클래스 생성해서 멤버변수 생성
2. 기본값 생성자 생성 & 생성자 생성
3. 상품명 리턴 일반 메서드 생성
4. 재고량 리턴 일반 메서드 생성
5. 가격 리턴 일반 메서드 생성
6. Product 타입의 5개의 원소를 갖는 배열 생성
7. Product 객체 5개 생성
8. Product 객체 배열 1개씩 뽑기 & 각 객체 문구 출력
8-1. 천단위마다 ,를 찍기 위해 printf 사용



1. Product 클래스 생성해서 멤버변수 생성

가장 먼저 Product 클래스를 만들고, 상품 정보를 저장할 멤버변수 3개를 선언했다.

class Product {
	String name;
	int balance;
	int price;
}

여기서

  • name은 상품명
  • balance는 재고량
  • price는 가격

을 저장하는 변수다.
즉, 이 단계는 상품 객체의 틀을 먼저 만드는 단계다.



2. 기본값 생성자 생성 & 생성자 생성

다음으로 생성자 두 개를 만들었다.

먼저 전달받은 값으로 멤버변수를 초기화하는 생성자를 작성했다.

Product(String name, int balance, int price) {
	this.name = name;
	this.balance = balance;
	this.price = price;
}

그리고 기본 생성자는 이렇게 만들었다.

Product() {
	this("듀크인형", 5, 10000);
}

기본 생성자 안에서 this()를 사용하면
같은 클래스 안의 다른 생성자를 호출할 수 있다.


여기서는 "듀크인형", 5, 10000을 기본값으로 넘겨서
문제에서 요구한 초기값이 자동으로 들어가게 만들었다.



3. 상품명 리턴 일반 메서드 생성

이제 상품명을 반환하는 일반 메서드를 만들었다.

String getName() {
	return name;
}

이 메서드는 객체 안에 저장된 name 값을 그대로 반환한다.

문제에 getName()이라고 정확히 적혀 있으므로,
메서드 이름도 그대로 맞춰야 한다.



4. 재고량 리턴 일반 메서드 생성

다음은 재고량을 반환하는 메서드다.

int getBalance() {
	return balance;
}

이 메서드는 balance 값을 반환한다.

즉, 객체마다 가지고 있는 재고량을 꺼내는 역할이다.



5. 가격 리턴 일반 메서드 생성

마지막으로 가격을 반환하는 메서드를 만들었다.

int getPrice() {
	return price;
}

이렇게 해서 문제에서 요구한 일반 메서드 3개를 모두 작성했다.

여기서 다시 느낀 건,
문제에서 요구한 메서드 이름을 정확히 보는 게 정말 중요하다는 점이다. (왜냐하면 그냥 마음대로 일반메서드명을 지정했다가 다시 제출하는 상황이 발생했기 때문 ㅜㅜ)



6. Product타입의 5개의 원소를 갖는 배열 생성

이제 main()으로 와서 Product 타입 배열을 만들었다.

Product[] ary = new Product[5];

이 코드는 Product 객체 5개를 만든 것이 아니라,
Product 객체를 저장할 수 있는 칸 5개를 만든 것이다.

즉, 아직 각 칸에는 실제 객체가 들어 있지 않다.
그래서 다음 단계에서 new Product(...)로 객체를 따로 넣어줘야 한다.



7. Product 객체 5개 생성

배열을 만든 뒤에는 각 칸에 Product 객체를 생성해서 저장했다.

ary[0] = new Product("우사기", 5, 500000000);
ary[1] = new Product("치이카와", 3, 36000000);
ary[2] = new Product("하치와레", 15, 72000);
ary[3] = new Product("춘식이", 8, 9000);
ary[4] = new Product();

앞의 네 개는 값을 직접 넣어서 생성했고,
마지막 하나는 기본 생성자를 호출했다.

그래서 ary[4]는 자동으로

  • 상품명: "듀크인형"
  • 재고량: 5
  • 가격: 10000

으로 초기화된다.



8. Product 객체 배열 1개씩 뽑기 & 각 객체 문구 출력

이제 배열에 저장된 Product 객체를 하나씩 꺼내서 출력해야 한다.
그래서 향상된 for문을 사용해 각 객체를 순서대로 꺼냈다.



8-1. 천단위마다 ,를 찍기 위해 printf 사용

문제의 마지막 조건은 가격에 천 단위마다 ,를 붙이는 것이었다.

이 부분은 처음에는 바로 떠오르지 않았는데,
구글링을 통해 찾아보니 printf를 사용하면 쉽게 처리할 수 있었다.
참고 자료
최종 출력 코드는 이렇게 정리했다.

for(Product elem: ary) {
	System.out.printf("%s %d %,d원 \n",
			elem.getName(), elem.getBalance(), elem.getPrice());
}

여기서

  • %s는 문자열
  • %d는 정수
  • %,d는 천 단위 구분기호가 들어간 정수

를 의미한다.

그래서 500000000은 500,000,000처럼 출력되고,
금액 끝에 원도 붙일 수 있다.



최종 코드

package day6;

class Product {
	String name;
	int balance;
	int price;
	
	Product(String name, int balance, int price) {
		this.name = name;
		this.balance = balance;
		this.price = price;
	}
	
	Product() {
		this("듀크인형", 5, 10000);
	}
	
	String getName() {
		return name;
	}
	
	int getBalance() {
		return balance;
	}
	
	int getPrice() {
		return price;
	}
}

public class ProductTest {

	public static void main(String[] args) {
		Product[] ary = new Product[5];
		ary[0] = new Product("우사기", 5, 500000000);
		ary[1] = new Product("치이카와", 3 , 36000000);
		ary[2] = new Product("하치와레", 15, 72000);
		ary[3] = new Product("춘식이", 8, 9000);
		ary[4] = new Product();
		
		for(Product elem: ary) {
			System.out.printf("%s %d %,d원 \n", elem.getName(), elem.getBalance(), elem.getPrice());
		}
	}
}


실습하면서 정리한 점

이번 실습에서는 다음 흐름을 한 번에 연습할 수 있었다.

  • 기본 생성자에서 this()로 다른 생성자를 호출하는 방법
  • 객체 배열을 만들고 각 칸에 객체를 저장하는 방법
  • 향상된 for문으로 배열 요소를 꺼내는 방법
  • printf로 출력 형식을 맞추는 방법

특히 이번 실습에서는
문제에서 요구한 메서드 이름을 정확히 지켜야 한다는 점과
가격 출력 형식은 printf로 해결할 수 있다는 점을 확실히 익혔다.

0개의 댓글