import java.util.HashMap;
import java.util.Map;
public class DAO { //=> Repository
Map<Integer, String> db=new HashMap<>();
// HashMap<Integer, String> db=new HashMap<>();
//제네릭: <> 안에 넣고 싶은거 다 넣어도 돼, 객체/타입면 다 됨~ data를 명시하지 않았어
//객체만 받아줌-> int가 들어가지 못하기 때문에 쓰기 편하게 한겹 싸서 integer를 생성, refer class를 등장시킴
}
class UserService{
// public 포기-> 한 파일내에 두개 이상의 클래스 생성 가능, 각각 build해서 만들어짐
}
Main 클래스
//Main
public class Main {
public static void main(String[] args) {
//아래 코드를 실행했을 때, "00님 가입을 환영합니다."
UserService userService=new UserService();
User gari=new User("gari" );
userService.join(gari);
}
}
UserDAO 클래스
//UserDAO
import java.util.HashMap;
import java.util.Map;
public class UserDAO { //=> Repository
Map<Integer, User> db=new HashMap<>();
public void createUser(User user){
db.put(user.id, user);
System.out.println(db);
System.out.println(user.getName()+"님 가입을 축하합니다.");
}
}
UserService 클래스
//UserService
public class UserService { //사용자의 시선
UserDAO userDAO= new UserDAO(); //데이터의 시선
public void join(User user){
//문제점 회원가입할 때마다 db가 새로 생성됨, 의존성이 높음 -> 생성자에 넣는 방법, 빌드를 전역으로 선언
userDAO.createUser(user);
}
}
User 클래스
User을 따로 둔 이유? 사전 설계 나중을 대비해서 미리 확장한 것 여러가지 데이터를 받을 것이기 때문..!
//User
public class User {
private static int idCounter = 0; // static 변수로 ID 카운터를 유지
public int id;
private String name;
public User(String name) {
this.id = ++idCounter; // 새로운 유저가 생성될 때마다 idCounter 증가
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
모든 입력은 스캐너(콘솔 입력) 클래스를 이용합니다.
[작동 예시]
1. 메뉴를 사용자에게 입력 받습니다.
1: 회원가입 / 2: 로그인 / 3: 회원정보 수정 / 4: 탈퇴 / 0: 종료
입력: 1
2. 가입하실 아이디와 비밀번호를 (띄어쓰기로 구분하여) 입력하세요.
입력: songa 123
3. songa님 가입을 환영합니다.
1: 회원가입 / 2: 로그인 / 3: 회원정보 수정 / 4: 탈퇴 / 0: 종료
입력: 3
4. 로그인 상태가 아닙니다.
…