- IT에서 전반적으로 선호하는 구조 - 각 언어별 개발을 용이하고 쉽게 표준화해서 개발 가능한 구조를 제공하는 Framework 등의 default 구조 - Framework란? 정형화된 개발 구조(틀)
1. M - Model
- 데이터 관리하는 핵심 로직 - 데이터를 표현 할 수 있는 구조 - Value Object[Value Object Pattern] / Data Transfer Object[DTO pattern] oracle DB에서 부서 정보 표현 table SCOTT/TIGER 계정에 dept table
* ex) 하나의 부서 정보만 프로그램 상에서 활용하기 위해 java 클래스 설계 개발 방법 1 (권장) - 3개의 멤버 변수를 보유한 DeptValue.java 개발 - 하나의 객체 생성해서 Controller에게 반환 개발 방법 2 - 모든 Model 로직을 하나의 Model.java 클래스에 개발 - 하나의 메소드에서 한 부서의 3개의 검색 결과값을 문자열 배열로 반환 개발 방법 3 - 모든 Model 로직을 하나의 Model.java 클래스에 개발 - 부서 번호 반환하는 메소드/부서명 반환하는 메소드/부서 위치 반환하는 메소드를 개별로 만들어서 하나의 부서 정보 검색 요청임에도 3개의 메소드를 controller에서 호출해서 반환하게 구현
2. V - View
3. C - Controller
실습
//Model 클래스
package mvc.model;
import mvc.model.dto.Director;
import mvc.model.dto.Name;
public class Model {
//영화 이름, 감독
//연도
//주요 등장인물
public static Name[] getNames() {
Name[] names = {new Name("분노의 질주:더 얼티메이트"),
new Name("랑종"),
new Name("크루엘라")};
return names;
}
public static Director[] getDirector() {
Director[] dr = {new Director("저스틴 린"),
new Director("반종 피산다나쿤"),
new Director("크레이그 질레스피")};
return dr;
}
public static int[] getYear() {
int[] year = {2021,2021,2021};
return year;
}
}
//Start View 클래스
package mvc.view;
import mvc.controller.Controller;
public class StartView {
public static void main(String[] args) {
System.out.println("***영화 제목***");
Controller.req(1);
System.out.println("***영화 감독***");
Controller.req(2);
System.out.println("***개봉 연도***");
Controller.req(3);
}
}
//End View 클래스
package mvc.view;
import mvc.model.Model;
import mvc.model.dto.Director;
import mvc.model.dto.Name;
public class EndView {
public static void printName(Name[] name2) {
for(Name name : name2) {
System.out.println(name);
}
}
@SuppressWarnings("unused")
public static void printDirector(Director[] dr2) {
for(Director dr : dr2) {
System.out.println("제목 : " + Name.getNames() + " 감독 : " + Model.getDirector());
}
}
public static void printYear(int[] y) {
for(int year : y) {
System.out.println(year);
}
}
public static void printMsg(String msg) {
System.out.println(msg);
}
}
package mvc.model.dto;
public class Director {
private static String director;
public Director (String string) {
super();
}
public static String getDirector() {
return director;
}
public void setDirector(String director) {
Director.director = director;
}
}
package mvc.model.dto;
public class Name {
private static String name;
public static String getNames() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Name(String string) {
super();
}
}
자료구조 (모든 언어가 동일) - 데이터 저장 형식 - java에서도 이미 해당 기능의 각각의 class들 제공 - class가 제공된다 = 다양한 기능의 메소드도 제공 - java.util package로 제공
1. list 자료 구조 - 모든 데이터 다 저장 - 동적 메모리이기 때문에 데이터 삭제시 index들이 재정렬, 추가 데이터 저장도 가능 - 저장 순서가 보장, 데이터들 구분을 위해서 고유한 index로 관리, 중복 데이터 저장 가능 - 배열과 흡사 - 배열은 고정 사이즈 따라서 이미 생성된 사이즈를 갱신하고자 할 경우 불가능 : 새로운 크기의 배열 생성해서 기존 배열 데이터 복사 붙여넣기 가능 - python의 list와 흡사
* ArrayList API 1. list 성질의 메모리 확보 (heap에 객체 생성) ArrayList 2. ArrayList에 데이터 저장 가능한 타입은 Object 타입이면 다 가능 - 8가지 기본 타입만 제외한 모든 타입 다 저장 가능 - 질문 : 저장하는 메소드 public boolean add(Object v){} 3. ArrayList에 저장된 데이터 사용 가능하게 하는 메소드 - index로 데이터 구분 public Object get(int index){} 4. ArrayList에 존재하는 데이터 삭제 - index로 데이터 삭제 public Object remove(int index){}
2. set 자료 구조 - 중복 데이터는 저장 불가 - 저장 순서 무시, 데이터 관리는 index로 불가, 단 중복 불허!!! - python의 set와 흡사
3. map 자료 구조 - 고유한 key로 데이터 구분 - key로 value 구분 및 관리 - python의 dictionary와 흡사