diff --git a/src/me/day05/practice/Practice01/Auth.java b/src/me/day05/practice/Practice01/Auth.java new file mode 100644 index 0000000..613695d --- /dev/null +++ b/src/me/day05/practice/Practice01/Auth.java @@ -0,0 +1,5 @@ +package me.day05.practice.Practice01; + +public enum Auth { + FingerPrint,Pattern,PIN,Face; +} diff --git a/src/me/day05/practice/Practice01/Company.java b/src/me/day05/practice/Practice01/Company.java new file mode 100644 index 0000000..25b8c25 --- /dev/null +++ b/src/me/day05/practice/Practice01/Company.java @@ -0,0 +1,5 @@ +package me.day05.practice.Practice01; + +public enum Company { + SAMSUNG,LG,APPLE; +} diff --git a/src/me/day05/practice/Practice01/Electronic.java b/src/me/day05/practice/Practice01/Electronic.java new file mode 100644 index 0000000..36a9c07 --- /dev/null +++ b/src/me/day05/practice/Practice01/Electronic.java @@ -0,0 +1,99 @@ +package me.day05.practice.Practice01; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Objects; + +public class Electronic { + private static int serialNum = 0; + + private String productNO; + private String modelName; + private Company CompanyName; + private LocalDate dateOfMade; + private Auth[] authMethod; + + public Electronic(String modelName, Company companyName, Auth[] authMethod) { + serialNum++; + productNO = setProductNO(); + this.modelName = modelName; + CompanyName = companyName; + this.dateOfMade = LocalDate.now(); + this.authMethod = authMethod; + } + + public Electronic() { + serialNum++; + productNO = setProductNO(); + } + + public String getProductNO() { + return productNO; + } + + public String setProductNO() { + LocalDate localDate = LocalDate.now(); + String serialNO = localDate.format(DateTimeFormatter.ofPattern("yyMMdd")); + serialNO += String.format("%04d",serialNum); + + return serialNO; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public Company getCompanyName() { + return CompanyName; + } + + public void setCompanyName(Company companyName) { + CompanyName = companyName; + } + + public LocalDate getDateOfMade() { + return dateOfMade; + } + + public void setDateOfMade(LocalDate dateOfMade) { + this.dateOfMade = dateOfMade; + } + + public Auth[] getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(Auth[] authMethod) { + this.authMethod = authMethod; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Electronic that = (Electronic) o; + return Objects.equals(productNO, that.productNO) && Objects.equals(modelName, that.modelName) && CompanyName == that.CompanyName && Objects.equals(dateOfMade, that.dateOfMade) && authMethod == that.authMethod; + } + + @Override + public int hashCode() { + return Objects.hash(productNO, modelName, CompanyName, dateOfMade, authMethod); + } + + @Override + public String toString() { + return "Electronic{" + + "productNO='" + productNO + '\'' + + ", modelName='" + modelName + '\'' + + ", CompanyName=" + CompanyName + + ", dateOfMade=" + dateOfMade + + ", authMethod=" + authMethod + + '}'; + } + +} + diff --git a/src/me/day05/practice/Practice01/User.java b/src/me/day05/practice/Practice01/User.java new file mode 100644 index 0000000..f473b39 --- /dev/null +++ b/src/me/day05/practice/Practice01/User.java @@ -0,0 +1,120 @@ +package me.day05.practice.Practice01; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.Objects; + +public class User { + + private String userId; + private String userPassword; + private String userPhoneNumber; + private String userEmail; + private String userBirthDate; + private Electronic[] electronicDevices; + private LocalDateTime registerTime; + static final int DEFAULT_CAPACITY = 10; + + public User(String userId, String userPassword, String userPhoneNumber, String userEmail, String userBirthDate, Electronic[] electronicDevices, LocalDateTime registerTime) { + this.userId = userId; + this.userPassword = userPassword; + this.userPhoneNumber = userPhoneNumber; + this.userEmail = userEmail; + this.userBirthDate = userBirthDate; + this.electronicDevices = new Electronic[DEFAULT_CAPACITY]; + this.registerTime = LocalDateTime.now(); + } + + public User() { + this.electronicDevices = new Electronic[DEFAULT_CAPACITY]; + this.registerTime = LocalDateTime.now(); + } + + public String getUserId() { + + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + @Override + public String toString() { + return "User{" + + "userId='" + userId + '\'' + + ", userPassword='" + userPassword + '\'' + + ", userPhoneNumber='" + userPhoneNumber + '\'' + + ", userEmail='" + userEmail + '\'' + + ", userBirthDate='" + userBirthDate + '\'' + + ", electronicDevices=" + Arrays.toString(electronicDevices) + + ", registerTime=" + registerTime + + '}'; + } + + public String getUserPassword() { + return userPassword; + } + + public void setUserPassword(String userPassword) { + this.userPassword = userPassword; + } + + public String getUserPhoneNumber() { + return userPhoneNumber; + } + + public void setUserPhoneNumber(String userPhoneNumber) { + this.userPhoneNumber = userPhoneNumber; + } + + public String getUserEmail() { + return userEmail; + } + + public void setUserEmail(String userEmail) { + this.userEmail = userEmail; + } + + public String getUserBirthDate() { + return userBirthDate; + } + + public void setUserBirthDate(String userBirthDate) { + this.userBirthDate = userBirthDate; + } + + public Electronic[] getElectronicDevices() { + return electronicDevices; + } + + public void setElectronicDevices(Electronic[] electronicDevices) { + this.electronicDevices = electronicDevices; + } + + public String getRegisterTime() { // 원하는 패턴으로 반환 + return registerTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } + + public void setRegisterTime(LocalDateTime registerTime) { + this.registerTime = registerTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + User user = (User) o; + return Objects.equals(userId, user.userId) && Objects.equals(userPassword, user.userPassword) && Objects.equals(userPhoneNumber, user.userPhoneNumber) && Objects.equals(userEmail, user.userEmail) && Objects.equals(userBirthDate, user.userBirthDate) && Arrays.equals(electronicDevices, user.electronicDevices) && Objects.equals(registerTime, user.registerTime); + } + + @Override + public int hashCode() { + int result = Objects.hash(userId, userPassword, userPhoneNumber, userEmail, userBirthDate, registerTime); + result = 31 * result + Arrays.hashCode(electronicDevices); + return result; + } + + +} diff --git a/src/me/day05/practice/Practice02/Users.java b/src/me/day05/practice/Practice02/Users.java new file mode 100644 index 0000000..d9717d4 --- /dev/null +++ b/src/me/day05/practice/Practice02/Users.java @@ -0,0 +1,83 @@ +package me.day05.practice.Practice02; + +import me.day05.practice.Practice01.User; + +import java.util.ArrayList; +import java.util.Objects; + +public class Users { + private ArrayList userList = new ArrayList<>(); + + public Users(ArrayList userList) { + this.userList = userList; + } + + public Users () {} + public ArrayList getUserList() { + return userList; + } + + public void setUserList(ArrayList userList) { + this.userList = userList; + } + + public static void setInstance(Users instance) { + Users.instance = instance; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Users users = (Users) o; + return Objects.equals(userList, users.userList); + } + + @Override + public int hashCode() { + return Objects.hash(userList); + } + + @Override + public String toString() { + return "Users{" + + "userList=" + userList + + '}'; + } + + // Users 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. + private static Users instance; + public static Users getInstance() { + if (instance == null) { + instance = new Users(); + } + + return instance; + } + + + //회원 아이디 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성하시오 + + public User findByUserId(String userId) { + for (User user : userList) { + if (userId.equals(user.getUserId())) { + return user; + } + } + return null; + } + +// 인자로 주어진 회원 정보를 깊은 복사 (deepCopy) 하는 함수를 작성하시오. + public User Copy(User user) { + User userCopy = new User(); + userCopy.setUserId(user.getUserId()); + userCopy.setUserPassword(user.getUserPassword()); + userCopy.setUserEmail(user.getUserEmail()); + userCopy.setUserPhoneNumber(user.getUserPhoneNumber()); + userCopy.setUserBirthDate(user.getUserBirthDate()); + userCopy.setElectronicDevices(user.getElectronicDevices()); + + return userCopy; + } + +} diff --git a/src/me/day05/practice/Practice03/Electronics.java b/src/me/day05/practice/Practice03/Electronics.java new file mode 100644 index 0000000..5cd798e --- /dev/null +++ b/src/me/day05/practice/Practice03/Electronics.java @@ -0,0 +1,92 @@ +package me.day05.practice.Practice03; + + +import me.day05.practice.Practice01.Auth; +import me.day05.practice.Practice01.Company; +import me.day05.practice.Practice01.Electronic; + +import java.util.ArrayList; +import java.util.Objects; + +public class Electronics { + private ArrayList electronicList = new ArrayList<>(); + + public Electronics(ArrayList electronicList) { + this.electronicList = electronicList; + } + + public Electronics() {} + public ArrayList getElectronicList() { + return electronicList; + } + + public void setElectronicList(ArrayList electronicList) { + this.electronicList = electronicList; + } + + public static void setInstance(Electronics instance) { + Electronics.instance = instance; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Electronics that = (Electronics) o; + return Objects.equals(electronicList, that.electronicList); + } + + @Override + public int hashCode() { + return Objects.hash(electronicList); + } + + @Override + public String toString() { + return "Electronics{" + + "electronicList=" + electronicList + + '}'; + } + + // Electric 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. + private static Electronics instance; + public static Electronics getInstance() { + if (instance == null) { + instance = new Electronics(); + } + return instance; + } + + //전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성하시오. + public Electronic findByUserId(String productNo){ + for (Electronic electronic : electronicList){ + if(electronic.setProductNO().equals(productNo)){ + return electronic; + } + } + return null; + } + // 전자제품들 중 인자로 주어진 제조 회사를 찾아서 하나의 배열에 반환하는 함수를 작성하시오. + public ArrayList groupByCompanyName(Company company) { + ArrayList companyName = new ArrayList<>(); + + for(int i = 0; i < electronicList.size(); i++) { + if(electronicList.get(i).getCompanyName().equals(company)) { + companyName.add(electronicList.get(i)); + } + } + return companyName; + } + //전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성하시오. + public ArrayList groupByAuthMethod(Auth[] authMethod) { + ArrayList authMethodGroupList = new ArrayList<>(); + + for(int i = 0; i < electronicList.size(); i++) { + if(electronicList.get(i).getAuthMethod().equals(authMethod)) { + authMethodGroupList.add(electronicList.get(i)); + } + } + return authMethodGroupList; + } +} +