diff --git a/me/day05/practice/Practice01/AuthMethod.java b/me/day05/practice/Practice01/AuthMethod.java new file mode 100644 index 0000000..a4bfe72 --- /dev/null +++ b/me/day05/practice/Practice01/AuthMethod.java @@ -0,0 +1,19 @@ +package me.day05.practice.Practice01; + +public enum AuthMethod { + FINGERPRINT("지문 인증"), PATTERN("패턴 인증"), PIN("핀 인증"), FACE("얼굴 인증"),; + + private String authMethod = null; + + AuthMethod(String authMethod) { + this.authMethod = authMethod; + } + + public String getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(String authMethod) { + this.authMethod = authMethod; + } +} diff --git a/me/day05/practice/Practice01/Company.java b/me/day05/practice/Practice01/Company.java new file mode 100644 index 0000000..f690f97 --- /dev/null +++ b/me/day05/practice/Practice01/Company.java @@ -0,0 +1,23 @@ +package me.day05.practice.Practice01; + +public enum Company { + + SAMSUNG("SAMSUNG"), LG("LG"), APPLE("APPLE"); + + private String companyName; + + Company(String companyName){ + this.companyName = companyName; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } +} + + + diff --git a/me/day05/practice/Practice01/Electronic.java b/me/day05/practice/Practice01/Electronic.java new file mode 100644 index 0000000..efc3123 --- /dev/null +++ b/me/day05/practice/Practice01/Electronic.java @@ -0,0 +1,110 @@ +package me.day05.practice.Practice01; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Objects; + +public class Electronic { + + private static int modelCount = 0; + + private String productNo; + private String modelName; + private Company companyName; + private LocalDate dateOfMade; + private ArrayList authMethod = new ArrayList<>(); + + + public Electronic(String modelName, Company companyName, AuthMethod auth) { + this.productNo = setProductNo(); + this.modelName = modelName; + this.companyName = companyName; + this.dateOfMade = setDateOfMade(); + authMethod.add(auth); + } + + + public static int getModelCount() { + return modelCount; + } + + public static void setModelCount(int modelCount) { + Electronic.modelCount = modelCount; + } + + public String getProductNo() { + return productNo; + } + + + public String setProductNo() { + modelCount++; + LocalDate now = LocalDate.now(); + String productNo = now.format(DateTimeFormatter.ofPattern("YYMMdd")); + productNo += String.format("%04d", modelCount); + return productNo; + } + + private LocalDate setDateOfMade() { + LocalDate now = LocalDate.now(); + return now; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public Company getCompanyName() { + return companyName; + } + + public void setCompanyName(Company companyName) { + this.companyName = companyName; + } + + public LocalDate getDateOfMade() { + return dateOfMade; + } + + public void setDateOfMade(LocalDate dateOfMade) { + this.dateOfMade = dateOfMade; + } + + public ArrayList getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(AuthMethod auth) { + authMethod.add(auth); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Electronic that = (Electronic) o; + return productNo.equals(that.productNo) && modelName.equals(that.modelName) && companyName.equals(that.companyName) && dateOfMade.equals(that.dateOfMade) && authMethod.equals(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/me/day05/practice/Practice01/MainTest.java b/me/day05/practice/Practice01/MainTest.java new file mode 100644 index 0000000..3fc2257 --- /dev/null +++ b/me/day05/practice/Practice01/MainTest.java @@ -0,0 +1,22 @@ +package me.day05.practice.Practice01; + +public class MainTest { + public static void main(String[] args) { + Electronic SMonitor = new Electronic("Monitor", Company.SAMSUNG, AuthMethod.FACE); + Electronic IMac = new Electronic("Mac", Company.APPLE, AuthMethod.FINGERPRINT); + Electronic Gram = new Electronic("Gram", Company.LG, AuthMethod.PIN); + + User user01 = new User("Kim", "1234qwer", "01012345678", "Kim@naver.com", 19950927, Gram); + User user02 = new User("Park", "qwer1234asdf", "01012345678", "Park@mail.com", 19920901, null ); + + IMac.setAuthMethod(AuthMethod.PATTERN); + Gram.setAuthMethod(AuthMethod.FACE); + + user02.addElectronicDevices(SMonitor); + user02.addElectronicDevices(IMac); + + System.out.println(user01); + System.out.println(user02); + + } +} diff --git a/me/day05/practice/Practice01/User.java b/me/day05/practice/Practice01/User.java new file mode 100644 index 0000000..b1c1970 --- /dev/null +++ b/me/day05/practice/Practice01/User.java @@ -0,0 +1,112 @@ +package me.day05.practice.Practice01; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Objects; + +public class User { + private String userId; + private String userPassword; + private String userPhoneNumber; + private String userEmail; + private int userBirthDate; + private ArrayList electronicDevices = new ArrayList<>(); + private LocalDateTime registerTime; + + public User(String userId, String userPassword, String userPhoneNumber, String userEmail, int userBirthDay, Electronic electronic) { + this.userId = userId; + this.userPassword = userPassword; + this.userPhoneNumber = userPhoneNumber; + this.userEmail = userEmail; + this.userBirthDate = userBirthDay; + this.registerTime = LocalDateTime.now(); + electronicDevices.add(electronic); + } + + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + 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 int getUserBirthDate() { + return userBirthDate; + } + + public void setUserBirthDate(int userBirthDate) { + this.userBirthDate = userBirthDate; + } + + public ArrayList getElectronicDevices() { + return electronicDevices; + } + + public void setElectronicDevices(ArrayList electronicDevices) { + this.electronicDevices = electronicDevices; + } + + public void addElectronicDevices(Electronic devices) { + electronicDevices.add(devices); + } + + public LocalDateTime getRegisterTime() { + return registerTime; + } + + 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 userPhoneNumber == user.userPhoneNumber && userBirthDate == user.userBirthDate && userId.equals(user.userId) && userPassword.equals(user.userPassword) && userEmail.equals(user.userEmail) && electronicDevices.equals(user.electronicDevices) && registerTime.equals(user.registerTime); + } + + @Override + public int hashCode() { + return Objects.hash(userId, userPassword, userPhoneNumber, userEmail, userBirthDate, electronicDevices, registerTime); + } + + @Override + public String toString() { + return "User{" + + "userId='" + userId + '\'' + + ", userPassword='" + userPassword + '\'' + + ", userPhoneNumber=" + userPhoneNumber + + ", userEmail='" + userEmail + '\'' + + ", userBirthDate=" + userBirthDate + + ", electronicDevices=" + electronicDevices + + ", registerTime=" + registerTime + + '}'; + } +} diff --git a/me/day05/practice/Practice02/Users.java b/me/day05/practice/Practice02/Users.java new file mode 100644 index 0000000..463a0c6 --- /dev/null +++ b/me/day05/practice/Practice02/Users.java @@ -0,0 +1,86 @@ +package me.day05.practice.Practice02; + +import me.day05.practice.Practice01.Electronic; +import me.day05.practice.Practice01.User; + +import java.util.Arrays; + +public class Users { + + private static Users usersInstance; + + private Users(){ + } + + //1.싱글톤 + + public static Users getInstance() { + if(usersInstance==null) { + usersInstance = new Users(); + } + return usersInstance; + } + + public static Users getUsersInstance() { + return usersInstance; + } + + public static void setUsersInstance(Users usersInstance) { + Users.usersInstance = usersInstance; + } + + private User[] userList; + + public User[] getUserList() { + return userList; + } + + public void setUserList(User[] userList) { + this.userList = userList; + } + + + //2. 함수 반환 + public User findByUserId(String userId) { + for(User user : userList) { + if(user.getUserId().equals(userId)) { + return user; + } + } + return null; + } + + //3. deep copy? + + public User copy(User user) { + User copyUser = new User(user.getUserId(), + user.getUserPassword(), + user.getUserEmail(), + user.getUserPhoneNumber(), + user.getUserBirthDate(), + user.getElectronicDevices().get(1)); + return copyUser; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Users users = (Users) o; + return Arrays.equals(userList, users.userList); + } + + @Override + public int hashCode() { + return Arrays.hashCode(userList); + } + @Override + public String toString() { + return "Users{" + + "userList=" + Arrays.toString(userList) + + '}'; + } + + + +} diff --git a/me/day05/practice/Practice03/Electronics.java b/me/day05/practice/Practice03/Electronics.java new file mode 100644 index 0000000..07db31e --- /dev/null +++ b/me/day05/practice/Practice03/Electronics.java @@ -0,0 +1,178 @@ +package me.day05.practice.Practice03; + +import me.day05.practice.Practice01.AuthMethod; +import me.day05.practice.Practice01.Company; +import me.day05.practice.Practice01.Electronic; + + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class Electronics { + + private static Electronics usersInstance; + + private Electronics(){ + } + + private Electronic[] electronicList; + + private static int modelCount = 0; + + private String productNo; + private String modelName; + private Company companyName; + private LocalDate dateOfMade; + private ArrayList authMethod = new ArrayList<>(); + + + public Electronics(String modelName, Company companyName, AuthMethod auth) { + this.productNo = setProductNo(); + this.modelName = modelName; + this.companyName = companyName; + this.dateOfMade = setDateOfMade(); + authMethod.add(auth); + } + + + public static int getModelCount() { + return modelCount; + } + + public static void setModelCount(int modelCount) { + Electronics.modelCount = modelCount; + } + + public String getProductNo() { + return productNo; + } + + + public String setProductNo() { + modelCount++; + LocalDate now = LocalDate.now(); + String productNo = now.format(DateTimeFormatter.ofPattern("YYMMdd")); + productNo += String.format("%04d", modelCount); + return productNo; + } + + private LocalDate setDateOfMade() { + LocalDate now = LocalDate.now(); + return now; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public Company getCompanyName() { + return companyName; + } + + public void setCompanyName(Company companyName) { + this.companyName = companyName; + } + + public LocalDate getDateOfMade() { + return dateOfMade; + } + + public void setDateOfMade(LocalDate dateOfMade) { + this.dateOfMade = dateOfMade; + } + + public ArrayList getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(AuthMethod auth) { + authMethod.add(auth); + } + + public Electronic[] getElectronicList() { + return electronicList; + } + + public void setElectronicList(Electronic[] electronicList) { + this.electronicList = electronicList; + } + + + + //1. 싱글톤 + public static Electronics getInstance() { + if(usersInstance==null) { + usersInstance = new Electronics(); + } + return usersInstance; + } + + //2. 함수 반환 + public Electronic findByProductNo(String productNo){ + for(Electronic electronic : electronicList) { + if(electronic.getProductNo().equals(productNo)){ + return electronic; + } + } + return null; + } + + + //3. 제조 회사 + public Electronic[] groupByCompanyName(Company company) { + List groupCompanyList = new ArrayList<>(); + for (Electronic electronic : electronicList) { + if (electronic.getCompanyName().equals(company)) { + groupCompanyList.add(electronic); + } + + } + return groupCompanyList.toArray(new Electronic[groupCompanyList.size()]); + } + + + //4. 인증 방법 + + public Electronic[] groupByAuthMethod(AuthMethod authMethod) { + List groupAuthMethod = new ArrayList<>(); + for (Electronic electronic : electronicList) { + if (electronic.getAuthMethod().equals(authMethod)) { + groupAuthMethod.add(electronic); + } + + } + return groupAuthMethod.toArray(new Electronic[groupAuthMethod.size()]); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Electronics that = (Electronics) o; + return productNo.equals(that.productNo) && modelName.equals(that.modelName) && companyName.equals(that.companyName) && dateOfMade.equals(that.dateOfMade) && authMethod.equals(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 + + '}'; + } + +}