0310 Review

KDU·2022년 3월 10일

자바공부

목록 보기
16/17

무작위성은 인간사의 카드를 뒤섞어 버리고 거인을 무릎 꿇리는 이로운 역할을 한다. - p.362

StringTokenizer

Split보다 속도 측면에서 성능이 좋으나, 조금 더 복잡한 분리가 필요할때는 split이 유용하다.
StringTokenizer vs Split

serialVersionUID

serialVersionUID를 통해 직렬화된 파일의 자바와 역직렬화를 하려는 자바가 호환되는지를 검증한다.

transient

객체를 직렬화할때 특정 멤버변수 값을 숨기고 싶다면,

private transient String pw;

위와 같이 transient를 추가하여 직렬화 과정에서 데이터를 제외시킬 수 있다.

//Output 당시 입력한 user값
User1 u = new User1("SUPER", "ADMIN", 'S');

//역직렬화 후 toString
//User1 [id=SUPER, pw=null, rank=S]

CRUD project(배열)

//회원정보 Value Object
package study0310.crudArray;

public class MemberVO {

	private String id;
	private String pw;
	private String name;
	private int age;
	
	public MemberVO() {
		
	}
	
	public MemberVO(String id, String pw, String name, int age) {
		super();
		this.id = id;
		this.pw = pw;
		this.name = name;
		this.age = age;
	}

	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}

	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "[ID=" + id + ", PW=" + pw + ", Name=" + name + ", Age=" + age + "]";
	}
	
}
//Action 인터페이스 생성
package study0310.crudArray;

import java.util.Scanner;

public interface Action {
	void execute(Scanner s);
}
//메인에서 사용할 Service클래스
package study0310.crudArray;

import java.util.Scanner;

public class MemberService {
	void process(Action a, Scanner s) {
		a.execute(s);
	}
}
package study0310.crudArray;

import java.util.Scanner;

public class ActionCreate implements Action{

	@Override
	public void execute(Scanner s) {
		System.out.println("1. 아이디를 입력하세요");
		String id = s.next();
		System.out.println("2. 비밀번호를 입력하세요");
		String pw = s.next();
		System.out.println("3. 이름을 입력하세요");
		String name = s.next();
		System.out.println("4. 나이를 입력하세요");
		int age = s.nextInt();
		
		MemberVO m = new MemberVO(id, pw, name, age);
		MemberVO[] temp = new MemberVO[MemberMain.members.length+1];
		int i=0;
		for(MemberVO mv : MemberMain.members) {
			temp[i] = mv;
			i++;
		}
		temp[temp.length-1] = m;
		MemberMain.members = temp;
	}
	
}
package study0310.crudArray;

import java.util.Scanner;

public class ActionRead implements Action{

	@Override
	public void execute(Scanner s) {
		
		MemberVO[] m = MemberMain.members;
		System.out.printf("총 회원 수 : %s명\n",m.length);
		for(int i=0; i<m.length; i++) {
			System.out.println(m[i].toString());
		}
		System.out.println("뒤로 가시려면 아무 키나 누르세요");
		s.next();
		
	}

}
package study0310.crudArray;

import java.util.Scanner;

public class ActionUpdate implements Action{

	@Override
	public void execute(Scanner s) {
		while(true) {
			System.out.println("업데이트할 계정의 ID를 입력하세요.");
			String id = s.next();
			System.out.println("업데이트할 계정의 PW를 입력하세요.");
			String pw = s.next();
			for(MemberVO m : MemberMain.members) {
				if(m.getId().equals(id) && m.getPw().equals(pw)) {
					while(true) {
						System.out.println("1. ID변경");
						System.out.println("2. PW변경");
						System.out.println("3. 이름 변경");
						System.out.println("4. 나이 변경");
						System.out.println("5. 나가기");
						String v = s.next();
						switch(v) {
						case "1" :
							System.out.println("변경하실 ID를 입력하세요.");
							String cid = s.next();
							m.setId(cid);
							break;
						case "2" :
							System.out.println("변경하실 PW를 입력하세요.");
							String cpw = s.next();
							m.setPw(cpw);
							break;
						case "3" :
							System.out.println("변경하실 이름을 입력하세요.");
							String cname = s.next();
							m.setName(cname);
							break;
						case "4" :
							System.out.println("변경하실 나이를 입력하세요.");
							int cage = s.nextInt();
							m.setAge(cage);
							break;
						default :
							System.out.println("계정 수정 종료");
							return;
						}
					}
				} else {
					System.out.println("존재하지 않는 계정입니다. 메인으로 가려면 아무 키나 누르세요.");
					s.next();
					return;
				}
			}
		}

	}

}
package study0310.crudArray;

import java.util.Scanner;

public class ActionDelete implements Action{

	@Override
	public void execute(Scanner s) {
		while(true) {
			System.out.println("삭제하려는 계정의 ID를 입력하세요.");
			String id = s.next();
			System.out.println("삭제하려는 계정의 PW를 입력하세요.");
			String pw = s.next();

			MemberVO[] m = MemberMain.members;
			for(int i=0; i<m.length; i++) {
				if(m[i].getId().equals(id) && m[i].getPw().equals(pw)) {
					m[i] = m[m.length-1];
					MemberVO[] temp = new MemberVO[m.length-1];
					for(int j=0; j<temp.length; j++) {
						temp[j] = m[j];
					}
					MemberMain.members = temp;
					System.out.printf("%s가 삭제되었습니다. 추가로 삭제하시려면 1번, 나가시려면 아무 키나 누르세요.",id);
					String pick = s.next();
					switch(pick) {
					case "1" :
						break;
					default :
						return;
					}
				} else {
					System.out.println("존재하지 않는 계정입니다. 메인으로 돌아가려면 아무 키나 누르세요.");
					s.next();
					return;
				}
			}
		}
	}
}
package study0310.crudArray;

import java.util.Scanner;

public class MemberMain {

	static MemberVO[] members = new MemberVO[0];
	

	public static void main(String[] args) {
		
		Scanner s = new Scanner(System.in);
		MemberService ms = new MemberService();
		
		while(true) {
			System.out.println("CRUD Project(Array)");
			System.out.println("");
			System.out.println("1. Create");
			System.out.println("2. Read users");
			System.out.println("3. Update user");
			System.out.println("4. Delete user");
			System.out.println("5. Quit");
			
			String command = s.next();
			switch(command) {
			case "1" :
				System.out.println("1. Create");
				ms.process(new ActionCreate(), s);
				break;
			case "2" :
				System.out.println("2. Read users");
				ms.process(new ActionRead(), s);
				break;
			case "3" : 
				System.out.println("3. Update user");
				ms.process(new ActionUpdate(), s);
				break;
			case "4" : 
				System.out.println("4. Delete user");
				ms.process(new ActionDelete(), s);
				break;
			case "5" : 
				System.out.println("프로그램을 종료합니다");
				s.close();
				return;
			default :
				System.out.println("Error : 존재하지 않는 선택지입니다.");
				break;
			}
			
		}
		
	}
		
}
profile
의문을 즐깁니다.

0개의 댓글