소프트웨어
1. 분석
- 요구사항정의서: 일반인이 알아들을 수 있도록 1부터100까지 세세하게
2. 설계
- DB설계
- 화면설계
- 기능별관계설정 -> 그 기능들이 메서드가 되는 것 -> 기능들의 목차=인터페이스??
3. 코딩
4. 테스트
Server -> DB
- 화면(id/pw입력) ----> server(java) -----> db(oracle)
- 지금배우는 과정
- 자바에서 모든걸 하자니 소스코드도 길어지고 캡슐화도 안됨
- 그래서 자바를 3단계로나눔 (controller, service, dao)
- controller: 화면한테 받은 아이디패스워드를 서비스에 전달
- service: id는 그대로 두고 pw는 db와 비교하기위해 암호화됨, 웬만한 일 다함
- 예외 던지기: db오류를 dao한테 받아서 service가 try-catch로 처리하는 것 (혹은 service 아니면 공통모듈에서 처리)
- dao: db한테 얘기함 내가 id/pw줄테니까 해당하는 사람 정보내놔, 쿼리전달
- select * from member where mem_id = "a001" and mem__pw = "Asdfasdf"
- db: 정보맞으면 db에서부터 역순으로 리턴
y_project.package
MainClass.java
public class MainClass{
public static void main(String[] args){
view v = new View();
v.startMethod();
}
}
View.java
public class View{
public void startMethod(){
System.out.println("어서오세요 땡땡마트예요");
System.out.println("원하시는 메뉴를 선택해주세요");
System.out.println("1. 물품추가");
System.out.println("2. 로그인");
System.out.println("3. 종료");
Scanner sc = new Scanner(System.in);
int select = sc.nextInt();
switch(select) {
case 1:
addProduct();
break;
case 2:
break;
case 3:
System.exit(0);
break;
default:
System.out.println("1,2,3,중에 골라주세요");
break;
}
}
private void addProduct(){
Scanner sc = new Scanner(System.in);
System.out.println("물건의 이름을 입력해 주세요");
String name = sc.next();
System.out.println("물건의 가격을 입력해 주세요");
int price = sc.nextInt();
Service sv = new Service();
boolean result = sv.addProduct(name, price);
if(result){
System.out.println("물품 등록에 성공하였습니다.");
}
}
}
Service.java
public class Service{
public boolean addProduct(String name, int price){
DBClass db = new DBclass();
boolean result = db.addProduct(name, price);
return result;
}
}
DBClass.java
- 데이터 저장
- 프로그램만들때 DB없으면 아무것도 할 수 없다
- DBClass 를 만듬으로서 테이블스페이스가 생성되고
- 그안에 vector가 테이블 하나
public class DBclass{
private Vector < Product VO > proList = new Vector<>();
public boolean addProduct(String name, int price){
ProductVO pv1 = new ProductVO(name, price);
boolean result = proList.add(pv1);
return result;
}
}
ProductVO.java
- vo는 따로 생성자를 만들지않다, 변수들이 다 private이기때문에
- 생성자 대신 getter setter