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/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..862d09b
--- /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..a4a038a
--- /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/KDTBE5_Java_Assignment3.iml b/KDTBE5_Java_Assignment3.iml
new file mode 100644
index 0000000..33c42f8
--- /dev/null
+++ b/KDTBE5_Java_Assignment3.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/me.day05.practice/.gitignore b/me.day05.practice/.gitignore
new file mode 100644
index 0000000..f68d109
--- /dev/null
+++ b/me.day05.practice/.gitignore
@@ -0,0 +1,29 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/me.day05.practice/.idea/.gitignore b/me.day05.practice/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/me.day05.practice/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/me.day05.practice/.idea/misc.xml b/me.day05.practice/.idea/misc.xml
new file mode 100644
index 0000000..862d09b
--- /dev/null
+++ b/me.day05.practice/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/me.day05.practice/.idea/modules.xml b/me.day05.practice/.idea/modules.xml
new file mode 100644
index 0000000..f80ffdd
--- /dev/null
+++ b/me.day05.practice/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/me.day05.practice/.idea/vcs.xml b/me.day05.practice/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/me.day05.practice/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/me.day05.practice/assignment3.iml b/me.day05.practice/assignment3.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/me.day05.practice/assignment3.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/me.day05.practice/src/Practice01/Electronic.java b/me.day05.practice/src/Practice01/Electronic.java
new file mode 100644
index 0000000..dddc1eb
--- /dev/null
+++ b/me.day05.practice/src/Practice01/Electronic.java
@@ -0,0 +1,103 @@
+package Practice01;
+
+import java.util.Objects;
+import java.util.Arrays;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+public class Electronic {
+ private String productNo;
+ private String modelName;
+ private CompanyName companyName;
+ private LocalDate dateOfMade;
+ private AuthMethod[] authMethods;
+ private static int numProducts = 0;
+
+ public Electronic(String modelName, CompanyName companyName, LocalDate dateOfMade, AuthMethod[] authMethods){
+ this.modelName = modelName;
+ this.companyName = companyName;
+ this.dateOfMade = dateOfMade;
+ this.authMethods = authMethods;
+ this.productNo = ProductNo();
+ numProducts++;
+ }
+
+ private String ProductNo(){
+ String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
+ date += String.format("%04d", numProducts+1);
+ return date;
+ }
+ public enum CompanyName{
+ SAMSUNG , LG, APPLE
+ }
+ public enum AuthMethod{
+ FINGERPRINT, PATTERN, PIN, FACE
+ }
+
+ 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 CompanyName getCompanyName() {
+ return companyName;
+ }
+
+ public void setCompanyName(CompanyName companyName) {
+ this.companyName = companyName;
+ }
+
+ public LocalDate getDateOfMade() {
+ return dateOfMade;
+ }
+
+ public void setDateOfMade(LocalDate dateOfMade) {
+ this.dateOfMade = dateOfMade;
+ }
+
+ public AuthMethod[] getAuthMethods() {
+ return authMethods;
+ }
+
+ public void setAuthMethods(AuthMethod[] 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) && Arrays.equals(authMethods, that.authMethods);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = Objects.hash(productNo, modelName, companyName, dateOfMade);
+ result = 31 * result + Arrays.hashCode(authMethods);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "Electronic{" +
+ "productNo='" + productNo + '\'' +
+ ", modelName='" + modelName + '\'' +
+ ", companyName=" + companyName +
+ ", dateOfMade=" + dateOfMade +
+ ", authMethods=" + Arrays.toString(authMethods) +
+ '}';
+ }
+
+}
diff --git a/me.day05.practice/src/Practice01/User.java b/me.day05.practice/src/Practice01/User.java
new file mode 100644
index 0000000..d2bbc89
--- /dev/null
+++ b/me.day05.practice/src/Practice01/User.java
@@ -0,0 +1,110 @@
+package Practice01;
+
+import java.util.Objects;
+import java.util.Arrays;
+import java.time.LocalDate;
+
+public class User {
+ private String userId;
+ private String userPassword;
+ private String userPhoneNumber;
+ private String userEmail;
+ private String userBirthDate;
+ private Electronic[] electronicDevices;
+ private LocalDate registerTime;
+
+ 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;
+ this.electronicDevices = new Electronic[0];
+ this.registerTime = LocalDate.now();
+ }
+ public User(){};
+
+ 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 Electronic[] getElectronicDevices() {
+ return electronicDevices;
+ }
+
+ public void setElectronicDevices(Electronic[] electronicDevices) {
+ this.electronicDevices = electronicDevices;
+ }
+
+ public LocalDate getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(LocalDate 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;
+ }
+
+ @Override
+ public String toString() {
+ return "User{" +
+ "userId='" + userId + '\'' +
+ ", userPassword='" + userPassword + '\'' +
+ ", userPhoneNumber='" + userPhoneNumber + '\'' +
+ ", userEmail='" + userEmail + '\'' +
+ ", userBirthDate='" + userBirthDate + '\'' +
+ ", electronicDevices=" + Arrays.toString(electronicDevices) +
+ ", registerTime=" + registerTime +
+ '}';
+ }
+}
diff --git a/me.day05.practice/src/Practice02/Users.java b/me.day05.practice/src/Practice02/Users.java
new file mode 100644
index 0000000..fce12fd
--- /dev/null
+++ b/me.day05.practice/src/Practice02/Users.java
@@ -0,0 +1,65 @@
+package Practice02;
+
+import Practice01.Electronic;
+import Practice01.User;
+import java.util.Arrays;
+
+public class Users {
+ private User[] userList;
+ private static Users instance = new Users();
+ public static Users getInstance(){
+ if(instance == null){
+ instance = new Users();
+ }
+ return instance;
+ }
+
+ public User findByUserId(String userId){
+ for (User user : userList){
+ if(user.getUserId().equals(userId)){
+ return user;
+ }
+ }
+ return null;
+ }
+
+ public User copy(User user){
+ User userCopy = new User();
+ userCopy.setUserId(user.getUserId());
+ userCopy.setUserEmail(user.getUserEmail());
+ userCopy.setUserPassword(user.getUserPassword());
+ userCopy.setUserBirthDate(user.getUserBirthDate());
+ userCopy.setUserPhoneNumber(user.getUserPhoneNumber());
+ userCopy.setRegisterTime(user.getRegisterTime());
+ userCopy.setElectronicDevices(user.getElectronicDevices());
+ return userCopy;
+ }
+
+ public User[] getUserList() {
+ return userList;
+ }
+
+ public void setUserList(User[] userList) {
+ this.userList = userList;
+ }
+
+ @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/src/Practice03/Electronics.java b/me.day05.practice/src/Practice03/Electronics.java
new file mode 100644
index 0000000..57ba5cb
--- /dev/null
+++ b/me.day05.practice/src/Practice03/Electronics.java
@@ -0,0 +1,90 @@
+package Practice03;
+
+
+import Practice01.Electronic;
+import java.util.Arrays;
+
+public class Electronics {
+ private Electronic[] electronicList;
+
+ private static Electronics instance = new Electronics();
+ public static Electronics getInstance(){
+ if(instance == null){
+ instance = new Electronics();
+ }
+ return instance;
+ }
+
+ public Electronic findByUserId(String productNo){
+ for (Electronic electronic : electronicList){
+ if(electronic.getProductNo().equals(productNo)){
+ return electronic;
+ }
+ }
+ return null;
+ }
+
+ public Electronic[] groupByCompanyName(Electronic.CompanyName company){
+ int count=0;
+ for(Electronic electronic : electronicList){
+ if(electronic.getCompanyName().equals(company)){
+ count++;
+ }
+ }
+ Electronic[] sameCompany = new Electronic[count];
+ int i=0;
+ for(Electronic electronic : electronicList){
+ if(electronic.getCompanyName().equals(company)){
+ sameCompany[i] = electronic;
+ i++;
+ }
+ }
+ return sameCompany;
+ }
+
+ public Electronic[] groupByAuthMethod(Practice01.Electronic.AuthMethod authMethod){
+ int count=0;
+ for(Electronic electronic : electronicList){
+ if(electronic.getAuthMethods().equals(authMethod)){
+ count++;
+ }
+ }
+ Electronic[] sameAuthMethod = new Electronic[count];
+ int i=0;
+ for(Electronic electronic : electronicList){
+ if(electronic.getAuthMethods().equals(authMethod)){
+ sameAuthMethod[i] = electronic;
+ i++;
+ }
+ }
+ return sameAuthMethod;
+ }
+
+ public Electronic[] getElectronicList() {
+ return electronicList;
+ }
+
+ public void setElectronicList(Electronic[] electronicList) {
+ this.electronicList = electronicList;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Electronics that = (Electronics) o;
+ return Arrays.equals(electronicList, that.electronicList);
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(electronicList);
+ }
+
+ @Override
+ public String toString() {
+ return "Electronics{" +
+ "electronicList=" + Arrays.toString(electronicList) +
+ '}';
+ }
+}