-클래스 : 설계도
-객체 / 인스터스 : 설계도인 클래스를 사용해서 실제 메모리에 만들어진 실체
인스턴스가 좀 더 클래스 관계지향적 단어
변수 선언 > 객체 생성 > 참조값 보관 > 객체 사용
public class ProductOrdermain {
public static void main(String[] args) {
ProductOrder [] orders = new ProductOrder[3]; //배열 부분에서 코드 짜는 방법 이해하기
ProductOrder order1 = new ProductOrder(); //변수 선언 & 객체 생성 & 참조값 보관
order1.productName="두부"; // dot을 사용해서 객체에 접근
order1.price=2000;
order1.quantity=2;
orders[0]=order1;
ProductOrder order2 = new ProductOrder();
order2.productName="김치";
order2.price=5000;
order2.quantity=1;
orders[1]=order2;
ProductOrder order3 = new ProductOrder();
order3.productName="콜라";
order3.price=1500;
order3.quantity=2;
orders[2]=order3;
int sum = 0; // sum의 초기화를 어디서 해야할지 항상 고민하는 듯. 위치를 기억하자
for (ProductOrder order : orders) { //향상된 for문, iter
System.out.println("상품명: "+order.productName+", 가격: "+order.price+", 수량: "+order.quantity);
sum += order.price * order.quantity;
}
System.out.println("총 결제 금액: "+sum); //여기에 적어야 중복 출력되지 않음
}
}
배열을 이용하여 출력을 더 용이하게 할수 있음.
위에 ProductOrder의 객체를 이용하여 인스턴스들을 만들었는데
저 부분이 중복되는 걸 보아 매서드를 이용할 수 있을 것 같다.
저 부분도 더 간단하게 되는 걸까?
▶매서드를 이용하여 다시 코딩 > 잘 돌아감
public class Order {
public static void main(String[] args) {
ProductOrder order1 = new ProductOrder(); //매서드를 이용하여 간편하게 입력할 수 있음
initProductOrder(order1,"두부",2000,2);
ProductOrder order2 = new ProductOrder();
initProductOrder(order2,"김치",5000,1);
ProductOrder order3 = new ProductOrder();
initProductOrder(order3,"콜라",1500,2);
printOrder(order1); //밑에서 참조값을 가져올 수 있음
printOrder(order2);
printOrder(order3);
int sum = 0; //위에서 고민했던 부분 다시 복습해보기. for문을 나와도 왜 sum이
for (int i=1;i<=3;i++){ //잘 작동되는지 모르겠지만 이런 형태가 맞는 것 같다.
sum += order1.price * order1.quantity;}
System.out.println("총 결제 금액: "+sum);
}
static void initProductOrder(ProductOrder order, String name, int price, int quantity){
order.productName = name; //매서드를 이용해서 구현
order.price = price;
order.quantity = quantity;
}
static void printOrder(ProductOrder order){ //항상 "어떻게" 짜야하는 지를 기억하자
System.out.println("상품명: "+order.productName+", 가격: "+order.price+", 수량: "+order.quantity);
}
}
고민했던 부분(매서드를 어떻게 사용해야할지)을 바로 적용해보니 프로세스가 좀 더 이해되는 것 같다.
하지만 여전히 직접 치면서 코딩 연습하는 것에 대한 필요성을 느끼는 중.
코드를 직접 짜보고 궁금한 부분을 찾아볼수록 이해가 안가던 부분도 갑자기 이해가 된다!
하지만 여전히
ProductOrder order1 = new ProductOrder();
initProductOrder(order1,"두부",2000,2);
ProductOrder order2 = new ProductOrder();
initProductOrder(order2,"김치",5000,1);
ProductOrder order3 = new ProductOrder();
initProductOrder(order3,"콜라",1500,2);
이 부분이 반복되어서 이 부분도 줄일 수 없을지 고민.
이 부분도 매서드에 좀 더 추가해서 줄여보자 .
public class Order02 {
public static void main(String[] args) {
ProductOrder order1 = createOrder ("두부",2000,2);
ProductOrder order2 = createOrder("김치",5000,1);
ProductOrder order3 = createOrder("콜라",1500,2);
printOrder(order1);
printOrder(order2);
printOrder(order3);
int sum = 0;
for (int i=1;i<=3;i++){
sum += order1.price * order1.quantity;}
System.out.println("총 결제 금액: "+sum);
}
static ProductOrder createOrder(String name, int price, int quantity){
ProductOrder order = new ProductOrder();
order.productName = name;
order.price = price;
order.quantity = quantity;
return order;
}
static void printOrder(ProductOrder order){
System.out.println("상품명: "+order.productName+", 가격: "+order.price+", 수량: "+order.quantity);
}
ProductOrder order1 = new ProductOrder();
이 부분 자체를 매서드에 넣었다. static ProductOrder createOrder 이 부분을 짜는게 아직 많이 헷갈린다
책을 보면서 어디서 저것들이 참조되는 것인지를 정확하게 이해해야 할 것 같다.
'Develop > Java' 카테고리의 다른 글
StringBuilder / StringBuffer / String 비교 (1) | 2024.08.23 |
---|---|
\n이 남아 있는 경우 (1) | 2024.01.26 |
public void / int (0) | 2023.12.15 |
배열 (0) | 2023.12.11 |
switch문 (0) | 2023.12.11 |