728x90
model1
- 구분없이 필요한 내용들(절차적인요소들)을 프로그래밍)
- 주먹구구식. 작은 프로그램
model2
- 내용,형식에 따라서 파일을 분류해서 프로그래밍/ MVC)
- 나누는 기법. 여러명이 작업
Model2구조
Model(모델)
-
데이터와 관련된 일. 저장, 가공, 등등
-
비즈니스로직과 관련된 부분 처리
-
데이터베이스 관련로직 구현
-
JSP Beans, EJB Component
-
애플리케이션의 데이터를 표현
class Calculator{ public int plus(int su1, int su2){ return su1+su2; } } //데이터를 가공 처리 int result = plus(2,3); class Person{ String name; int age; String job; }// 서로 관련있는 속성을 클래스로 묶음 : JavaBeans class DBTest{ public void insert(){ } }//DB access하는 클래스
View(뷰)
-
사용자에게 알맞은 화면을 보여주는 역할 수행.
-
JSP, CustomTag
-
데이터를 시각적으로 표현하는 것
역할)
- 결과값 출력
- 사용자 요구(버튼클릭: 음료수가 먹고싶다.)
- 사용자 데이터 입력.
Controller(컨트롤러)
- Model과 View를 연결해주기 위한 매개체
- 사용자가 View(GUI)를 통해 입력을 하면 Model(데이터)을 변경해 주는것
- 애플리케이션의 흐름제어나 사용자의 처리요청을 구현
- 사용자인증, 보안설정이라든지전체 애플리케이션에 영향을 미치는 요소구현
- Servlet
- Model과 View는 나눠서, 본인일에 전념할 수 있도록 컨트롤해준다.
장점) 객체지향, 비용절감, 유지보수, 업무분담
컨트롤러의 역할
- (뷰를 통해 전달된) 사용자의 요청 분석 ex)
if(ob==bt_new){}
- (사용자가)입력한 데이터 얻어오기 ex)
tf.getText();
- 모델클래스 객체생성 ex)
Calculator c = new Calculator();
- 메소드 호출 c.plus(2,3);
- 리턴된 데이터를 저장
int result = c.plus(2,3);
- 페이지 이동(화면 하나), 이동할 페이지(프레임) 선택 ex)
f1.setVisible(false); f2.setVisible(true);
- 유효성 검사 (Valid Check) [선택사항]
Swing MVC 예시(심플계산기)
- 뷰 CalcView.java : 계산기 폼
- 모델 Calculator.java : 더하기, 빼기, 곱하기, 나누기 기능
- 컨트롤러 CalcController.java : 전체 프로그램 제어 (main()메소드 포함)
MODEL
CalcView view;
public CalcController() {
view = new CalcView();
view.bt_calc.addActionListener(this);
}//CaclController
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==view.bt_calc) {//1. 계산을 요청했다면
//2. 계산에 필요한 데이터 얻기
String su1Str = view.tf_su1.getText();
String su2Str = view.tf_su2.getText();
String oper = view.cb_oper.getSelectedItem().toString();
//5. 유효성검사
if(!su1Str.matches("[0-9]+")||!su2Str.matches("[\\d]+")) {
view.la_result.setText("숫자만 입력하세요");
return;
}else if (oper.equals("/")&&su2Str.equals("0")) {
view.la_result.setText("0으로 나눌 수 없습니다.");
return;
}
//3. 모델객체 생성
Calculator calc = new Calculator(Integer.parseInt(su1Str),Integer.parseInt(su2Str),oper);
String result = calc.getResultstr();
//3-2 변수에 저장 //3-1 메소드호출
view.la_result.setText(result);
view.reset(); //입력숫자 초기화 메소드
}//if
}
public static void main(String[] args) {
new CalcController();
}
VIEW
public class CalcView extends JFrame {
public JTextField tf_su1, tf_su2;
public JComboBox<String> cb_oper;
public JButton bt_calc;
public JLabel la_result;
JPanel panel;
public CalcView() {
setTitle("Simple Calculator");//이름설정
//컴포넌트 초기화 및 설정
tf_su1 = new JTextField(5); //5 = 너비지정
tf_su2 = new JTextField(5);
cb_oper = new JComboBox();
cb_oper.addItem("+");
cb_oper.addItem("-");
cb_oper.addItem("*");
cb_oper.addItem("/");
bt_calc = new JButton("계산");
la_result = new JLabel();
//레이아웃
setLayout(new FlowLayout());
panel = new JPanel();
panel.add(tf_su1);
panel.add(cb_oper);
panel.add(tf_su2);
panel.add(bt_calc);
add(panel);
add(la_result);
setBounds(300,200,300,120);
setVisible(true);
setResizable(false);//프레임 재설정 X
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void reset() {
tf_su1.setText("");
tf_su2.setText("");
}
}
Model
public class Calculator {
//(사칙연산관련) 기능정의. 모델(데이터관련) 클래스. 보통 결과데이터를 리턴
private int su1;
private int su2;
private String oper;
private int result; //사칙연산 결과를 담을 변수
public Calculator(int su1, int su2, String oper) {
this.su1 = su1;
this.su2 = su2;
this.oper = oper;
choice();
}
private void choice() {
if(oper.equals("+")) plus();
else if(oper.equals("-")) minus();
else if(oper.equals("*")) multi();
else if(oper.equals("/")) div();
}//choice
public void plus() {
result = su1+su2;
};
public void minus() {
result = su1-su2;
};
public void multi() {
result = su1*su2;
};
public void div() {
result = su1/su2;
};
//최종 결과값 리턴
public String getResultstr() {
return "결과값:"+su1+oper+su2+"="+result;
}
}
'Web develop > JAVA' 카테고리의 다른 글
[JAVA] 프로그램 실행시간 비교 (0) | 2019.05.06 |
---|---|
[JAVA] 자바Swing 숫자야구게임 예제 (2) | 2019.05.02 |
[JAVA] 자바 Swing Event 사용 및 예제 (0) | 2019.05.02 |
[JAVA] 자바 Swing JTable, DefaultTableModel (0) | 2019.04.30 |
[JAVA] 자바 GUI Event 처리 방법 (0) | 2019.04.30 |