// 상품 번호, 상품 이름, 제조사, 상품 가격의 정보를 담는 객체를 위한 설계도
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();
}
}
'자바 > oop2' 카테고리의 다른 글
Account(App2), Book(App), Car(App), Employee(App), EmployeeService(App).java (0) | 2019.06.07 |
---|