Skip to content

Yeojining5/addressbook-java-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 

Repository files navigation


MVC 패턴 기반 주소록 관리 프로그램

📌 KH 정보교육원 첫 번째 프로젝트 (개인)
2022.05.23 ~ 2022.07.08


1. 프로젝트 개요

  • MVC(모델-뷰-컨트롤러) 디자인 패턴을 기반으로 비즈니스 로직과 화면을 분리하여 재사용성독립성을 높이고 결합도를 낮출 수 있으며, 단위테스트를 가능하게 하여 효율적인 업무 처리가 가능하게 한다.
  • Java(Eclipse) - Oracle 연동과 JDBC를 활용한 주소록 데이터베이스 관리
  • 오라클서버와 연계하여 회원 정보 관리를 위한 입력, 수정, 삭제, 상세조회, 전체조회 처리
    (CRUD - Create, Retrieve, Update, Delete)
  • 로그인(회원가입) - 메인화면 - 다이얼로그 GUI 구현

2. 요구 사항

  • 클래스 관계를 이해하고 적절한 위치에 인스턴스화 수행
  • 생성자를 통해 클래스 사이의 의존관계를 코딩
  • 메뉴아이템과 버튼 이벤트 처리를 공통된 하나의 메소드로 처리
  • 오라클서버와 연계하여 회원 정보 관리를 위한 입력, 수정, 삭제, 상세조회, 전체 조회를 처리
  • 자바에서 제공하는 JDBC API를 활용하여 오라클 서버에 필요한 요청을 수행
  • UI에 배치된 컴포넌트에 대한 이벤트 처리

3. 설계 과정

1) Oracle DB 설계
◼ 데이터 모델링과 Oracle 시퀀스 생성(ID 번호 1씩 증가)

DBERD DBSequence


2) MVC 패턴 기반 클래스 설계

MVC


  • 모델 계층
    : 총 4개의 클래스로서, 실제 방식보다 많이 쪼개놓음. DAO(Data Access Object), 데이터 접근 객체. Dao를 통해 DB를 연결하여 오직 DB연결 데이터를 가져오거나 삭제, 수정 등 CRUD 작업을 할 수 있다. 이렇게 DB연결 객체를 따로 만들어 관리하면 불필요한 작업량이 줄어든다.
  • 뷰 계층
    : 화면그리기(UI)담당.
  • 컨트롤러
    : 업무처리를 위한 중계자 역할. 클라이언트에게 받은 요청을 수행할 로직을 제어하는 객체.
  • VO(DTO)
    : 계층간 데이터 교환을 위한 객체. 프로세스 사이에서 데이터를 운반하는 객체. Dao나 Service처럼 로직을 가지고 있지 않고, data에 접근하기 위해 Getter Setter를 가지고있다. 즉, Dao가 DB에서 얻어온 데이터를 Service나 Controller로 보낼 때 사용하는 객체이다.
    <캡슐화> 외부로부터 데이터를 보호하기 위해서 전역변수의 접근제어자를 private으로 두고, 메서드를 public으로 하여 간접 접근 허용

4. 주요 구현 기능 목록

구현 기능 상세 기능
로그인&회원가입
(AddressLogin)
* View와 Dao 계층 함께 구현
* 설계 테이블인 'mkaddrtb'의 DB를 활용
* 로그인 구현 : 사용자가 입력한 이름(ID)과 생년월일(PW)을 파라미터로 받아서 이름과 생일이 모두 일치하면 id번호 출력, 생일이 맞지 않으면 0반환, 이름이 존재하지 않으면 -1반환 > 반환된 결과를 equals() 메소드를 통해 이벤트 처리 + AddressBook 호출
* 회원가입 버튼 클릭 시, ModifyDialof 호출하여 정보 입력
메인화면
(AddressBook)
* 사용자의 선택된 정보를 VO로 넘기며 하위 클래스들과 연결되어 있음
* 프로그램의 메인화면 UI구현(JFrame, DefaultTableModel ...)
* 입력, 수정, 삭제, 조회에 대한 메뉴아이템 & 아이콘 클릭 시 이벤트 처리
* 입력과 수정 작업 시 ModifyDialog 호출
다이얼로그, 팝업
(ModifyDialog)
* 입력, 수정, 상세조회, 회원가입 시 호출되는 팝업창
* 사용자가 원하는 메뉴를 선택 시 해당 다이얼로그를 보여줌. 하나의 개체를 가지고 각각의 입력, 수정, 상세조회를 처리할 수 있도록 함
읽기와 쓰기
(AddressVO)
* 값을 담을 수 있는 그릇과 같은 클래스
* 변수의 접근제어자를 private으로 두어 외부에서 직접 접근하지 못하도록 하고 데이터를 보호할 수 있음. 인스턴스화를 통한 직접 접근은 불가능하며(private은 해당 클래스에서만 사용 가능), Getter Setter 메소드를 통한 간접 접근을 허용.
* Command 변수를 통해 메소드 호출
컨트롤러
(AddressCtrl)
* 사용자가 어떤 요청을 했을 때, 5가지 요청에 대해 감지하는 역할 > 감지한 내용을 AddressVO 안의 command에 담기도록 함
입력
(RegisterAddrEty)
* Insert문을 통한 회원 정보 등록 구현
* 등록날짜와 ID는 사용자에게 입력받지 않고 SQL문을 통해 자동 생성되도록 구성
수정
(ModifyAddrEty)
* Update문을 통한 회원 정보 수정 구현
* 수정이 완료되면 등록 날짜도 현재 날짜와 시간으로 변경되도록 SQL문을 추가함
삭제
(DeleteAddrEty)
* Delete문을 통한 회원 정보 삭제 구현
전체, 상세조회
(RetrieveAddrEty)
* 회원정보 중 상세보기 구현
* 회원 목록 전체 조회 구현(새로고침 시 재사용)

회원등록
RegisterAddrEty 입력 담당 클래스의 회원등록 구현 코드
등록날짜와 ID(시퀀스)는 사용자에게 입력받지 않고 SQL문을 통해 자동 생성되도록 구성


5. GUI 화면

회원가입 로그인완료 전체조회 상세조회 입력 수정결과 삭제


6. 사용 기술 및 개발 환경

Back-end java Eclipse JDBC
DB Oracle Toad

About

KH Academy Mini-Project

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages