Java 입문 - 클래스 생성 실습
회원관리 시스템 클래스생성 실습
회원 객체의 속성 분석 설계
- 속성 목록 추출, 속성 도메인데이터 분석 타입결정, 제약(pk, null, fk, 길이), 변수명, 변수 순서 (db 설계시 컴럼순서 매핑)
- 순서: 식별키(PK), 조건검색 항목, 필수항목들을 주로 앞에 위치시킴
클라이언트의 요구사항
- 추후 웹 어플리케이션 개발에서 사용하기 위한 회원관리시스템을 개발하고자 한다.
- 회원은 일반회원, 우수회원, 관리자회원으로 구분한다. ⇒ 등급: 일반, 우수, 관리자 구분필요
- 일반회원에게는 마일리지 정책에 따라 마일리지를 부여한다. ⇒ 마일리지: 일반
- 우수회원에게는 전용 담당자를 배정한다. ⇒ 우수 : 담당자
- 관리자 회원은 전체회원들의 정보를 관리한다. ⇒ 기능: 전체회원관리(관리자) → 서비스
- 일반회원의 마일리지가 100,000 이상이 되면 우수회원으로 등업처리한다. ⇒ 우수회원등업 (일반 마일리지 100,000) → 기능(서비스)
- 우수회원 등업처리 정책에 따라 자동등업, 사용자 요청 등업, 관리자 등업 등 다양한 방법으로 처리할 수 있다. ⇒ 서비스 요청 주체에 따라 서비스 로직이 달라짐
- 마일리지 정책을 세우고 구현한다. ⇒ 로직
- 우수회원 등업처리 정책을 세우고 구현한다. ⇒ 로직
- 회원은 가입후에 로그인을 통해서 내정보조회, 비밀번호 변경, 내정보전체변경등의 기능을 사용할 수 있다. ⇒ 로직
- 관리자 회원은 초기화 데이터를 통해서 관리자 회원으로 등록(생성)하여 사용한다. ⇒ 회원등록기능, 초기레코드 서비스 로직
- 관리자 회원이 로그인을 하면 본인의 정보조회, 변경등을 할 수 있으며, 전체회원의 정보를 조회할 수 있다. 단, 관리자 회원이 전체회원의 정보를 조회할때는 회원들의 정보중에서 비밀번호는 앞자리 2자리만 보여주고 나머지는 *문자로 대체하여 조회한다. ⇒ 서비스 로직 → 공통 유틸
- 회원은 가입시 현재 날짜를 가입일로 시스템에서 자동 부여한다. ⇒ 가입일: 속성 ,시스템 제공
- 회원의 아이디/비밀번호찾기시에 회원 가입시에 입력받은 휴대폰과 이메일정보를 사용한다. ⇒ 휴대폰, 이메일: 속성, 아이디/비밀번호찾기 = 서비스 로직
- 회원의 인증은 아이디/비밀번호를 통해서 회원 여부를 검증한다. ⇒ 서비스 로직
요구사항 기반 분석: 속성
-
등급 (grade): 일반, 우수, 관리자, 필수 → 시스템 자동제공
⇒ 문자열
⇒ 일반(G), 우수(S), 관리자(A) : 문자열(다중글자-지정), char(한글자)
⇒ 일반(1), 우수(2), 관리자(3) : 정수 int
-
마일리지 (mileage): 일반등급 대상, 최대 100,000, 정수 int, 선택 → 시스템 자동제공
-
담당자 (manager): 우수 등급 회원에게 배정
-
휴대폰 (mobile): 문자열, 필수
⇒ 형식지정 필요: 문자열-지정 (010-1234-11234) / int (1012341234) / 문자열 (01012341234)
-
이메일 (email): 문자열, 필수
-
가입일 (entryDate): 시스템 현재날짜 자동제공, 필수
⇒ 문자열 (지정) : 날짜 형식 고정, 연산 수행할 필요 없을 경우
⇒ 날짜타입: 날짜 연산 필요한 경우, 날짜 형식 가변적
-
이름 (name): 문자열, 필수
요구사항에는 없었지만 필요한 항목
- 아이디 (memberId): 문자열, 필수, 중복불가 (식별키PK)
- 비밀번호 (memberPw): 문자열, 필수
속성 제외
- 주소: 해당 속성을 서비스에서 사용할지 불투명
순서 정리
- 아이디 → 2. 비밀번호 → 3. 이름 → 4. 휴대폰 → 5. 이메일 → 6. 가입일 → 7. 등급 → 8. 마일리지 → 9. 담당자
요구사항 기반 분석: 기능
- 회원가입(초기회원등록)
- 우수회원등업
- 전체회원관리
- 비밀번호 앞2자리 * 보안문자 대체 변환
- 아이디/비밀번호찾기
- 로그인
실습 결과
DTO - Member.java
package com.work.model.dto;
/**
* <pre>
* 회원 정보 모델링
* </pre>
* @author 이창민
* @version ver.1.0
* @since jdk1.8
*/
public class Member {
// 1. 멤버변수
// [modifiers] 타입 멤버변수명 [=명시적초기값];
/** 아이디 */
public String memberId = "Guest";
/** 비밀번호 */
public String memberPw;
/** 이름 */
public String name;
/** 휴대폰 */
public String mobile;
/** 이메일 */
public String email;
/** 가입일 */
public String entryDate;
/** 등급 */
public String grade;
/** 마일리지 */
public int mileage;
/** 담당자 */
public String manager;
// 2. [생성자]
// 3. 메서드
// [modifiers] 반환타입 메서드명(매개변수타입 매개변수명, 매개변수타입 매개변수명){}
// 회원이름을 반환하는 메서드(argument 없음, 반환타입 있음)
public String getName() {
return name;
}
// 회원의 마일리지를 변경하는 메서드(argument 있음, 반환타입 없음)
public void setMileage(int modifyMileage) {
mileage = modifyMileage;
}
// 현재회원의 모든 정보를 출력하는 메서드(argument 없음, 반환타입 없음)
public void printMember() {
System.out.println("아이디: " + memberId);
System.out.println("비밀번호: " + memberPw);
System.out.println("이름: " + name);
System.out.println("휴대폰: " + mobile);
System.out.println("이메일: " + email);
System.out.println("가입일: " + entryDate);
System.out.println("등급: " + grade);
System.out.println("마일리지: " + mileage);
System.out.println("담당자: " + manager);
System.out.println();
}
}
View - MemberTest.java
/**
*
*/
package com.work.view;
// 2. import 선언문: 현재 클래스에서 사용한 클래스의 경로 지정
import com.work.model.dto.Member;
/**
* <pre>
* 회원관리 시스템 테스트 클래스
* </pre>
* @author 이창민
* @version ver.1.0
* @since jdk1.8
* @see com.work.model.dto.Member
*/
public class MemberTest {
public static void main(String[] args) {
Member dto1 = new Member();
System.out.println("객체 생성 후 회원정보 출력");
dto1.printMember(); // Guest, null, null, ..., 0, null
System.out.println("회원정보 변경");
dto1.memberId = "encore01";
dto1.memberPw = "happy2021";
dto1.name = "홍길동";
dto1.grade = "G";
dto1.setMileage(1234);
System.out.println("회원정보 변경 후 회원정보 출력");
dto1.printMember(); // encore01, happy2021, ...
}
public static void main1(String[] args) {
// 회원 클래스를 이용한 회원객체 생성
// 클래스이름 참조변수명 = new 클래스이름();
Member dto1 = new Member();
// 생성한 객체의 멤버변수 사용방법: 참조변수명.멤버변수명
System.out.println(dto1.memberId); // null => Guest(명시적 기본값)
System.out.println(dto1.memberPw); // null(기본값)
System.out.println(dto1.mileage); // 0(기본값)
// 생성한 객체의 멤버변수 데이터 변경
dto1.memberId = "encore01";
dto1.memberPw = "happy2021";
dto1.grade = "G";
dto1.mileage = 5000;
System.out.println(); // 공백라인
System.out.println(dto1.memberId); //encore01
System.out.println(dto1.memberPw); // happy2021
System.out.println(dto1.mileage); // 5000
}
}
댓글남기기