KITRI/JAVA

Java ν”„λ‘œκ·Έλž˜λ° - MVC νŒ¨ν„΄

λ˜νš¨λ‹ˆ 2020. 5. 15. 14:16

MVC - Model(Oracle, MSSQL, MySQL /  RDBMS)
       - View(HTML, CSS)
       - Controller

 

μ™„μ „ν•œ MVCνŒ¨ν„΄μ€ μ•„λ‹ˆμ§€λ§Œ κ°œλ…μ„ 작고 κ°€μž.

 

예제 ) μ€ν–‰μ‹œμŠ€ν…œ 

 

Account.java -> 고객 κ³„μ’Œ(κ³„μ’Œλ²ˆν˜Έ, 이름, μž”μ•‘) /  λ°μ΄ν„°λ§Œ λ„£μ—ˆλ‹€ 뺐닀(DTO)

package api11.MVC.Bank;

/**
 * @Author : κΉ€μ†Œν˜„
 * @Date   : 2020. 5. 15.
 * @Description : MVC - Model(Oracle, MSSQL, MySQL /  RDBMS)
 *                    - View
 *                    - Controller
 */
public class Account {
	private int id;       //κ³„μ’Œλ²ˆν˜Έ
	private String name;  //이름
	private long balance; //μž”μ•‘
	
	public Account() {}
	
	public Account(int id, String name, long balance) {
		super();
		this.id = id;
		this.name = name;
		this.balance = balance;
	
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

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

	public long getBalance() {
		return balance;
	}

	public void setBalance(long balance) {
		this.balance = balance;
	}

	@Override
	public String toString() {
		return "Account [id=" + id + ", name=" + name + ", balance=" + balance + "]";
	}
}

 

DTO(Data Transfer Object)λŠ” VO(Value Object)둜 λ°”κΏ” 말할 수 μžˆλŠ”λ° 계측간 데이터 κ΅ν™˜μ„ μœ„ν•œ μžλ°”λΉˆμ¦ˆλ₯Ό λ§ν•œλ‹€.

μ—¬κΈ°μ„œ λ§ν•˜λŠ” κ³„μΈ΅κ°„μ˜ Controller, View, Business Layer, Persistent Layerλ₯Ό λ§ν•˜λ©° 각 계측간 데이터 κ΅ν™˜μ„ μœ„ν•œ 객체λ₯Ό DTO λ˜λŠ” VO 라고 λΆ€λ₯Έλ‹€. 일반적으둜 VO λŠ” DTO 와 λ™μΌν•œ κ°œλ…μ΄μ§€λ§Œ read only 속성을 가진닀.

 

일반적인 DTOλŠ” λ‘œμ§μ„ κ°–κ³  μžˆμ§€ μ•ŠλŠ” μˆœμˆ˜ν•œ 데이터 객체이며 속성과 κ·Έ 속성에 μ ‘κ·Όν•˜κΈ° μœ„ν•œ getter, setter λ©”μ†Œλ“œλ§Œ 가진 클래슀λ₯Ό λ§ν•œλ‹€.

 

AccountManager.java -> κ³„μ’Œ 계섀 /  (DAO)

package api11.MVC.Bank;

import java.util.ArrayList;
import java.util.Scanner;

public class AccountManager {		
	private ArrayList<Account> list;//DB연동 μ „μ΄μ–΄μ„œ listλ₯Ό ν™œμš©
	private Scanner sc;

	public AccountManager() {
		list = new ArrayList<Account>();
		sc = new Scanner(System.in);
	}
	
	public void makeAccount() {		//κ³„μ’Œκ°œμ„€
		Account account = new Account();
		
		Scanner sc = new Scanner(System.in);
		System.out.print("κ³„μ’Œλ²ˆν˜Έ:");
		account.setId(sc.nextInt());
		
		System.out.print("이름:");
		account.setName(sc.next());
		
		System.out.print("μž…κΈˆμ•‘:");
		account.setBalance(sc.nextLong());
		
		list.add(account);
		
		System.out.println("κ³„μ’Œκ°€ κ°œμ„€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.");
		System.out.println(list.toString() +"\t");
		
	}
	
	public void deposit() {		//μž…κΈˆ
		System.out.print("κ³„μ’Œλ²ˆν˜Έ:");
		int id = sc.nextInt();
		
		System.out.print("μž…κΈˆμ•‘:");
		long money = sc.nextLong();
		
		for(int i=0; i<list.size(); i++) {
			Account account = list.get(i);
			
			if(account.getId()==id) {
				long balance = account.getBalance();
				money += balance;
				
				account.setBalance(money);
				System.out.println("μž…κΈˆμ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.");
				return;
			}
		}
		System.out.println("ν•΄λ‹Ή κ³„μ’Œλ²ˆν˜Έκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
	}
	
	public void withdraw() { //좜금
		System.out.print("κ³„μ’Œλ²ˆν˜Έ:");
		int id = sc.nextInt();
		
		System.out.print("μΆœκΈˆμ•‘:");
		long money = sc.nextLong();
		
		for(int i=0; i<list.size(); i++) {
			Account account = list.get(i);
			
			if(account.getId()==id) {
				if(account.getBalance() < money) {
					System.out.println("μž”μ•‘μ΄ λΆ€μ‘±ν•©λ‹ˆλ‹€.");
					return;
				}else {
					long balance = account.getBalance();
					money = balance - money;
					
					account.setBalance(money);
					System.out.println("μΆœκΈˆμ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.");
					return;
				}
			}
		}
		System.out.println("ν•΄λ‹Ή κ³„μ’Œλ²ˆν˜Έκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
		
	}
	
	public void inquire() {	//μž”μ•‘μ‘°νšŒ
		System.out.print("κ³„μ’Œλ²ˆν˜Έ:");
		int id = sc.nextInt();
		
		for(int i=0; i<list.size(); i++) {
			Account account = list.get(i);
			
			if(account.getId()==id) {
				System.out.println(account.getId() + "\t" + account.getName() + "\t" + account.getBalance());
				return;
			}
		}
		System.out.println("ν•΄λ‹Ή κ³„μ’Œλ²ˆν˜Έκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
	}
	
	public void disp() {	//좜λ ₯
		for(int i=0; i<list.size(); i++) {
			Account account = list.get(i);
			System.out.println(account.getId() + "\t" + account.getName() + "\t" + account.getBalance());
		}
	}
}

 

AccountView.java -> 메인화면

package api11.MVC.Bank;
import java.util.Scanner;
public class AccountView {
	public static void main(String[] args) {
		
		AccountManager manager = new AccountManager();
		Scanner sc = new Scanner(System.in);
		
		while(true) {
			printMenu();
			System.out.print("선택:");
			
			int choice = sc.nextInt();
			switch(choice) {
			case 1:
				manager.makeAccount();
				break;
			case 2:
				manager.deposit();
				break;
			case 3:
				manager.withdraw();
				break;
			case 4:
				System.out.println("κ³„μ’Œλ²ˆν˜Έ\tμ„±λͺ…\tμž”μ•‘");
				manager.inquire();
				break;
			case 5:
				System.out.println("κ³„μ’Œλ²ˆν˜Έ\tμ„±λͺ…\tκΈˆμ•‘");
				manager.disp();
				break;
			case 6:
				System.out.println("μ’…λ£Œν•©λ‹ˆλ‹€.");
				sc.close();
				return;
			default:
				System.out.println("잘λͺ»λˆ„λ₯΄μ…¨μŠ΅λ‹ˆλ‹€.\nλ‹€μ‹œμ„ νƒν•΄μ£Όμ„Έμš”.");
				break;
			}
		}
	}
	public static void printMenu() {
		System.out.println("============Menu============");
		System.out.println("1. κ³„μ’Œκ°œμ„€");
		System.out.println("2. μž…κΈˆ");
		System.out.println("3. 좜금");
		System.out.println("4. μž”μ•‘μ‘°νšŒ");
		System.out.println("5. μ „μ²΄μΆœλ ₯");
		System.out.println("6. ν”„λ‘œκ·Έλž¨μ’…λ£Œ");
		System.out.println();
	}
}

 

 

 

 

λ°˜μ‘ν˜•