// 상품 번호, 상품 이름, 제조사, 상품 가격의 정보를 담는 객체를 위한 설계도
public class Product {

    // 비공개된 필드 정의
    private int no;
    private String name;
    private String maker;
    private int price;

    // 기본 생성자 정의
    public Product() {
    }

    // Getter/Setter 메소드 정의
    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setNo(String name) {
        this.name = name;
    }

    public String getMaker() {
        return maker;
    }

    public void setMaker(String maker) {
        this.maker = maker;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

}
​

 

public class ProductService {
    private Product[] database = new Product[10]; // 상품 객체 10개를 담는 배열
    private int position = 0; // 상품 객체를 담는 위치

    // 새로운 상품 정보를 배열에 저장하는 기능
    public void addProduct(Product product) {
        if (position < database.length) {
            database[position] = product;
            position++;
        }
    }

    // 모든 상품 정보를 화면에 출력하는 기능
    public void printAllProducts() {
        for (Product p : database) {
            printProduct(p);
        }
    }

    // 전달받은 순서(인덱스)에 해당하는 상품 정보를 제공하는 기능
    public void printProductByIndex(int index) {
    // Product product = null;
        Product p = database[index];
        printProduct(p);
    // return product;
    }

    // 전달받은 상품 번호에 해당하는 상품 정보를 출력하는 기능
    public void printProductByNo(int productNo) {
        for (Product p : database) {
            if (p != null && p.getNo() == productNo) {
                printProduct(p);
            }
        }
    }

    public void printProduct(Product p) {
        if (p != null) {
                System.out.println("상품번호 : " + p.getNo());
                System.out.println("상품이름 : " + p.getName());
                System.out.println("제 조 사 : " + p.getMaker());
                System.out.println("가    격 : " + p.getPrice());
                System.out.println();
        }
    }
}
​

 

import java.util.Scanner;

public class ProductSerivceApp {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 상품 정보 저장/출력/조회 기능을 제공하는 객체를 생성한다.
        // 아래의 각 선택메뉴에서는 ProductService 객체의 기능을 활용한다.
        ProductService service = new Scanner(System.in);

        for (;;) {
            System.out.println("1. 상품 등록 | 2. 전체 상품 출력 | 3. 순서별 상품 출력 | 4. 상품 번호별 출력 | 0. 종료");
            
            System.out.print("메뉴 선택> ");
            int menuNo = scanner.nextInt();

            if (menuNo == 1) {
                System.out.println("[새 상품 등록]");
                
                System.out.println("번호 입력> ");
                int no = scanner.nextInt();
                System.out.println("이름 입력> ");
                String name = scanner.next();
                System.out.println("제조사 입력> ");
                String maker = scanner.next();
                System.out.println("가격 입력> ");
                int price = scanner.nextInt();

                // 상품 정보를 담는 Product 객체 생성하고 setter를 활용해서 필드에 정보 저장
                Product product = new Product();
                product.setNo(no);
                product.setName(name);
                product.setMaker(maker);
                product.setPrice(price);
                // ProductService 객체가 제공하는 상품 정보를 배열에 저장하는 기능을 실행
                service.addProduct(product);
                // 1. 상품 정보를 입력 받는다.
                // 2. Product 객체를 생성한다.
                // 3. 입력받은 상품 정보를 Product에 담는다.
                // 4. 위에서 생성한 ProductService의 addProduct(Product product) 메소드를 실행해서
                //    상품 정보를 담고 있는 Product가 배열에 저장되게 한다.

            } else if (menuNo == 2) {
                System.out.println("[전체 상품 정보 출력]");
                service.printAllProducts();

            } else if (menuNo == 3) {
                System.out.println("[지정된 인덱스의 상품 정보 출력]");
                System.out.println("인덱스 입력> ");
                int index = scanner.nextInt();
                service.printProductByIndex(index);

            } else if (menuNo == 4) {
                System.out.println("[지정된 상품 번호의 상품 정보 출력]");
                System.out.println("상품 번호 입력> ");
                int no = scanner.nextInt();
                service.printProductByNo(no);

            } else if (menuNo == 0) {
                System.out.println("프로그램 종료");
                break;

            }
            System.out.println();
        }

    }

}
​

 

public class StaticService {
    int x;                // 설계도 로딩 후 -> 객체 생성 후 사용 가능한 필드
    static int y;        // 설계도 로딩 후 사용 가능한 필드
    static final int z = 10;

    public void m1() {
        System.out.println("x의 값: " + x);
        System.out.println("y의 값: " + StaticService.y);
    }

    public static void m2() {
        // static 메소드는 static 필드, static 메소드만 사용(접근) 가능하다.
        // System.out.println("x의 값: " + x);            // 컴파일 오류
        System.out.println("y의 값: " + StaticService.y);
    
    }
}
​

 

public class StaticServiceApp {
    public static void main(String[] args) {

        // 정적 필드 정적 메소드는 객체 생성없이 즉시 사용가능하다.
        // 클래스명.필드명
        // 클래스명.메소드명(); 과 같은 형태로 사용한다.
        StaticService.y = 10;    // 정적 필드 사용하기
        StaticService.m2();        // 정적 메소드 사용하기

        StaticService.z = 20;
        System.out.println(StaticService.z);
        
    }
}
​

 

import java.util.Date;
import java.text.SimpleDateFormat;

public class StringUtils {
    
    // 홍길동 ---> 홍**
    public static final String NORMAL_DATE_FORMAT = "yyyy-MM-dd";
    public static final String DETAIL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

    public static String getNormalDate() {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat(NORMAL_DATE_FORMAT);
        return sdf.format(now);
    }

    public static String getDetailDate() {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat(StringUtils.DETAIL_DATE_FORMAT);
        return sdf.format(now);
    }

    public static String hideName(String username) {
        StringBuilder sb = new StringBuilder();
        sb.append(username.substring(0, 1));

        for (int i=0; i<username.length()-1; i++) {
            sb.append("*");
        }
        return sb.toString();
    }
}​

 

public class StringUtilsApp {
    public static void main(String[] args) {
        String name1 = StringUtils.hideName("홍길동");
        System.out.println(name1);

        String name2 = StringUtils.hideName("김구");
        System.out.println(name2);

        String date1 = StringUtils.getNormalDate();
        System.out.println(date1);

        String date2 = StringUtils.getDetailDate();
        System.out.println(date2);
    }
}
​

 

public class Subject {
    int no; // 과목 번호
    String name; // 과목명
    String professor; // 담당 교수

    public Subject() {

    }

    public Subject(int no, String name, String professor) {
    this.no = no;
    this.name = name;
    this.professor = professor;
    }

    // 과목번호(int타입의 값)을 제공하는 메소드
    public int getNo() {
    return no;
    }

    // 새 과목번호(int 타입의 값)을 전달받아서 그 객체의 필드값을 변경하는 메소드
    public void setNo(int no) {
    this.no = no;
    }

    // 과목명(String 타입의 값)을 제공하는 메소드
    public String getName() {
    return name;
    }

    // 새 과목명(String 타입의 값)을 전달받아서 그 객체의 필드값을 변경하는 메소드
    public void setName(String name) {
    this.name = name;
    }

    public String getProfessor() {
    return professor;
    }

    public void setProfessor(String professor) {
    this.professor = professor;
    }

    public void displayInfo() {
        System.out.println("과목번호 : "+ no);
        System.out.println("과목명 : " + name);
        System.out.println("담당교수 : " + professor);

    }
}
​

 

public class SubjectApp {
    public static void main(String[] args) {
    
    Subject s1 = new Subject(10, "전자기학", "홍길동");
    // getter 메소드 사용
    int no1 = s1.getNo();
    String name1 = s1.getName();
    String professor1 = s1.getProfessor();
    System.out.println("과목번호 -> " + no1);
    // setter 메소드 사용
    s1.setProfessor("김유신");
    // s1.displayInfo();
    
    Subject s2 = new Subject(20, "회로이론", "이순신");
    int no2 = s2.getNo();
    String name2 = s2.getName();
    String professor2 = s2.getProfessor();
    System.out.println("과목번호 -> " + no2);

    // s2.displayInfo();    

    }
}​

+ Recent posts