diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/KDTBE5_Java_Assignment3.iml b/.idea/KDTBE5_Java_Assignment3.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/.idea/KDTBE5_Java_Assignment3.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..12e7bfa --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/practice01/Electronic.java b/src/practice01/Electronic.java new file mode 100644 index 0000000..f1aa8ca --- /dev/null +++ b/src/practice01/Electronic.java @@ -0,0 +1,108 @@ +package src.practice01; + +import src.practice01.db.AuthMethod; +import src.practice01.db.Company; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Objects; + +public class Electronic { + private static int serialNumber = 0; + + String productNo; + String modelName; + Company companyName; + LocalDate dateOfMade; + ArrayList authMethods = new ArrayList<>(); + + public Electronic ( + String productNo, String modelName, + Company companyName, LocalDate dateOfMade, + AuthMethod auth + + ) { + LocalDate today = LocalDate.now(); + + + serialNumber++; + this.modelName = modelName; + + this.productNo = today.format(DateTimeFormatter.ofPattern("yyMMdd")); + this.productNo += String.format("%04d", serialNumber); + this.companyName = companyName; + authMethods.add(auth); + } + + public static int getSerialNumber() { + return serialNumber; + } + + public String getProductNo() { + return productNo; + } + + public void setProductNo(String productNo) { + this.productNo = productNo; + } + + 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 getAuthMethods() { + return authMethods; + } + + public void setAuthMethods(ArrayList authMethods) { + this.authMethods = authMethods; + } + + @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) && + Objects.equals(authMethods, that.authMethods); + } + + @Override + public int hashCode() { + return Objects.hash(productNo, modelName, companyName, dateOfMade, authMethods); + } + + @Override + public String toString() { + return "Electronic{" + + "productNo='" + productNo + '\'' + + ", modelName='" + modelName + '\'' + + ", companyName=" + companyName + + ", dateOfMade=" + dateOfMade + + ", authMethods=" + authMethods + + '}'; + } +} diff --git a/src/practice01/User.java b/src/practice01/User.java new file mode 100644 index 0000000..ab6905e --- /dev/null +++ b/src/practice01/User.java @@ -0,0 +1,116 @@ +package src.practice01; + +import java.time.LocalDate; +import java.util.ArrayList; +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 ArrayList electronicDevices = new ArrayList<>(); + private LocalDate registerTime; + + public User() {} + + public User ( + String userId, + String userPassword, + String userPhoneNumber, + String userEmail, + String userBirthDate + + ) { + this.userId = userId; + this.userPassword = userPassword; + this.userPhoneNumber = userPhoneNumber; + this.userEmail = userEmail; + this.userBirthDate = userBirthDate; + } + + 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 String getUserBirthDate() { + return userBirthDate; + } + + public void setUserBirthDate(String userBirthDate) { + this.userBirthDate = userBirthDate; + } + + public ArrayList getElectronicDevices() { + return electronicDevices; + } + + public void setElectronicDevices(ArrayList electronicDevices) { + this.electronicDevices = electronicDevices; + } + + + @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) && + Objects.equals(electronicDevices, user.electronicDevices) && + Objects.equals(registerTime, 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/src/practice01/db/AuthMethod.java b/src/practice01/db/AuthMethod.java new file mode 100644 index 0000000..5722097 --- /dev/null +++ b/src/practice01/db/AuthMethod.java @@ -0,0 +1,8 @@ +package src.practice01.db; + +public enum AuthMethod { + FINGERPRINT, + PATTERN, + PIN, + FACE +} diff --git a/src/practice01/db/Company.java b/src/practice01/db/Company.java new file mode 100644 index 0000000..c31e162 --- /dev/null +++ b/src/practice01/db/Company.java @@ -0,0 +1,8 @@ +package src.practice01.db; + +public enum Company { + SAMSUN, + LG, + APPLE + +} diff --git a/src/practice02/Users.java b/src/practice02/Users.java new file mode 100644 index 0000000..5be36de --- /dev/null +++ b/src/practice02/Users.java @@ -0,0 +1,68 @@ +package src.practice02; + +import src.practice01.User; + +import java.util.ArrayList; +import java.util.Objects; + +public class Users { + private ArrayList userList = new ArrayList<>(); + + // 싱글톤 + private static Users instance; + public Users() {} + public static Users getInstance() { + if (instance == null) { + instance = new Users(); + } + return instance; + } + + public ArrayList getUserList() { + return userList; + } + + public void setUserList(ArrayList userList) { + this.userList = userList; + } + + public User findByUserId(String userId) { + for (User user : userList) { + if (userId.equals(user.getUserId())) { + return user; + } + } + return null; + } + + public User Copy(User user) { + User copyUser = new User(); + copyUser.setUserId(user.getUserId()); + copyUser.setUserPassword(user.getUserPassword()); + copyUser.setUserEmail(user.getUserEmail()); + copyUser.setUserPhoneNumber(user.getUserPhoneNumber()); + copyUser.setUserBirthDate(user.getUserBirthDate()); + copyUser.setElectronicDevices(user.getElectronicDevices()); + 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 Objects.equals(userList, users.userList); + } + + @Override + public int hashCode() { + return Objects.hash(userList); + } + + @Override + public String toString() { + return "Users{" + + "userList=" + userList + + '}'; + } +} diff --git a/src/practice03/Electronics.java b/src/practice03/Electronics.java new file mode 100644 index 0000000..1fc7826 --- /dev/null +++ b/src/practice03/Electronics.java @@ -0,0 +1,120 @@ +package src.practice03; + +import src.practice01.Electronic; +import src.practice01.db.AuthMethod; +import src.practice01.db.Company; + +import java.util.Arrays; +import java.util.Objects; + +public class Electronics { + + private static Electronics instance; + private static final int DEFAULT_CAPACITY = 10; + private Electronic[] electronicList; + private int size = 0; + private int capacity = 0; + + private Electronics() { + this.electronicList = new Electronic[DEFAULT_CAPACITY]; + } + + public void add(Electronic electronic) { + if (size == capacity) { + grow(); + add(electronic); + } else { + electronicList[size++] = electronic; + } + } + + public int size() { + return size; + } + + private void grow() { + if (capacity < DEFAULT_CAPACITY) { + capacity = DEFAULT_CAPACITY; + } else { + capacity = size * 2; + } + + copy(); + } + + private void copy() { + electronicList = Arrays.copyOf(electronicList, this.capacity); + } + + public static Electronics getInstance() { + if (instance == null) { + instance = new Electronics(); + } + return instance; + } + + public Electronic[] getElectronicList() { + return electronicList; + } + + public void setElectronicList(Electronic[] electronicList) { + this.electronicList = electronicList; + } + + public Electronic findByProductNo(String productNo) { + for (Electronic electronic : electronicList) { + if (electronic.getProductNo().equals(productNo)) { + return electronic; + } + } + return null; + } + + public Electronic[] groupByCompanyName(Company company) { + Electronic[] groupByCompanyElectronic = new Electronic[size]; + int count = 0; + for (int i = 0; i < electronicList.length; i++) { + if (electronicList[i].getCompanyName().equals(company)) { + groupByCompanyElectronic[count] = electronicList[i]; + } + } + + return Arrays.copyOf(groupByCompanyElectronic, count); + } + + public Electronic[] groupByAuthMethod(AuthMethod authMethod) { + Electronic[] groupByCompanyElectronic = new Electronic[size]; + int count = 0; + for (int i = 0; i < electronicList.length; i++) { + if (electronicList[i].getAuthMethods().equals(authMethod)) { + groupByCompanyElectronic[count] = electronicList[i]; + } + } + + return Arrays.copyOf(groupByCompanyElectronic, count); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Electronics that = (Electronics) o; + return size == that.size && capacity == that.capacity && Arrays.equals(electronicList, that.electronicList); + } + + @Override + public int hashCode() { + int result = Objects.hash(size, capacity); + result = 31 * result + Arrays.hashCode(electronicList); + return result; + } + + @Override + public String toString() { + return "Electronics{" + + "electronicList=" + Arrays.toString(electronicList) + + ", size=" + size + + ", capacity=" + capacity + + '}'; + } +}