Java 입문 - 클래스 생성 실습

3 분 소요

회원관리 시스템 클래스생성 실습

회원 객체의 속성 분석 설계

  • 속성 목록 추출, 속성 도메인데이터 분석 타입결정, 제약(pk, null, fk, 길이), 변수명, 변수 순서 (db 설계시 컴럼순서 매핑)
  • 순서: 식별키(PK), 조건검색 항목, 필수항목들을 주로 앞에 위치시킴

클라이언트의 요구사항

  1. 추후 웹 어플리케이션 개발에서 사용하기 위한 회원관리시스템을 개발하고자 한다.
  2. 회원은 일반회원, 우수회원, 관리자회원으로 구분한다. ⇒ 등급: 일반, 우수, 관리자 구분필요
  3. 일반회원에게는 마일리지 정책에 따라 마일리지를 부여한다. ⇒ 마일리지: 일반
  4. 우수회원에게는 전용 담당자를 배정한다. ⇒ 우수 : 담당자
  5. 관리자 회원은 전체회원들의 정보를 관리한다. ⇒ 기능: 전체회원관리(관리자) → 서비스
  6. 일반회원의 마일리지가 100,000 이상이 되면 우수회원으로 등업처리한다. ⇒ 우수회원등업 (일반 마일리지 100,000) → 기능(서비스)
  7. 우수회원 등업처리 정책에 따라 자동등업, 사용자 요청 등업, 관리자 등업 등 다양한 방법으로 처리할 수 있다. ⇒ 서비스 요청 주체에 따라 서비스 로직이 달라짐
  8. 마일리지 정책을 세우고 구현한다. ⇒ 로직
  9. 우수회원 등업처리 정책을 세우고 구현한다. ⇒ 로직
  10. 회원은 가입후에 로그인을 통해서 내정보조회, 비밀번호 변경, 내정보전체변경등의 기능을 사용할 수 있다. ⇒ 로직
  11. 관리자 회원은 초기화 데이터를 통해서 관리자 회원으로 등록(생성)하여 사용한다. ⇒ 회원등록기능, 초기레코드 서비스 로직
  12. 관리자 회원이 로그인을 하면 본인의 정보조회, 변경등을 할 수 있으며, 전체회원의 정보를 조회할 수 있다. 단, 관리자 회원이 전체회원의 정보를 조회할때는 회원들의 정보중에서 비밀번호는 앞자리 2자리만 보여주고 나머지는 *문자로 대체하여 조회한다. ⇒ 서비스 로직 → 공통 유틸
  13. 회원은 가입시 현재 날짜를 가입일로 시스템에서 자동 부여한다. ⇒ 가입일: 속성 ,시스템 제공
  14. 회원의 아이디/비밀번호찾기시에 회원 가입시에 입력받은 휴대폰과 이메일정보를 사용한다. ⇒ 휴대폰, 이메일: 속성, 아이디/비밀번호찾기 = 서비스 로직
  15. 회원의 인증은 아이디/비밀번호를 통해서 회원 여부를 검증한다. ⇒ 서비스 로직

요구사항 기반 분석: 속성

  • 등급 (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): 문자열, 필수

속성 제외

  • 주소: 해당 속성을 서비스에서 사용할지 불투명

순서 정리

  1. 아이디 → 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
		
	}

}

댓글남기기