diff --git a/Assignment3/.classpath b/Assignment3/.classpath
new file mode 100644
index 0000000..f029363
--- /dev/null
+++ b/Assignment3/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Assignment3/.gitignore b/Assignment3/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/Assignment3/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/Assignment3/.project b/Assignment3/.project
new file mode 100644
index 0000000..72f8601
--- /dev/null
+++ b/Assignment3/.project
@@ -0,0 +1,17 @@
+
+
+ Assignment3
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Assignment3/.settings/org.eclipse.jdt.core.prefs b/Assignment3/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..062ed70
--- /dev/null
+++ b/Assignment3/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,14 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=19
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=19
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=19
diff --git a/Assignment3/src/me/day05/practice/Practice01/AuthMethod.java b/Assignment3/src/me/day05/practice/Practice01/AuthMethod.java
new file mode 100644
index 0000000..60795fd
--- /dev/null
+++ b/Assignment3/src/me/day05/practice/Practice01/AuthMethod.java
@@ -0,0 +1,3 @@
+package me.day05.practice.Practice01;
+
+public enum AuthMethod { FINGERPRINT, PATTERN, PIN, FACE } //제품 본인인증 방법
\ No newline at end of file
diff --git a/Assignment3/src/me/day05/practice/Practice01/Company.java b/Assignment3/src/me/day05/practice/Practice01/Company.java
new file mode 100644
index 0000000..ef496a3
--- /dev/null
+++ b/Assignment3/src/me/day05/practice/Practice01/Company.java
@@ -0,0 +1,3 @@
+package me.day05.practice.Practice01;
+
+public enum Company {SAMSUNG, LG, APPLE } //제조 회사명
\ No newline at end of file
diff --git a/Assignment3/src/me/day05/practice/Practice01/Electronic.java b/Assignment3/src/me/day05/practice/Practice01/Electronic.java
new file mode 100644
index 0000000..17e804a
--- /dev/null
+++ b/Assignment3/src/me/day05/practice/Practice01/Electronic.java
@@ -0,0 +1,91 @@
+package me.day05.practice.Practice01;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.Objects;
+
+public class Electronic {
+ private String productNo;
+ private static int serialNum = 0;
+ private String modelName;
+ private Company companyName;
+ private String dateOfMade;
+ private AuthMethod[] authMethod;
+
+
+ public Electronic(){
+ serialNum++;
+ productNo = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd")) + String.format("%04d",serialNum);
+ }
+
+ public Electronic(String modelName, Company companyName, String dateOfMade, AuthMethod[] authMethod) {
+ serialNum++;
+ this.productNo = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd")) + String.format("%04d", serialNum);
+ this.modelName = modelName;
+ this.companyName = companyName;
+ this.dateOfMade = dateOfMade;
+ this.authMethod = authMethod;
+
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(productNo, modelName, dateOfMade, companyName, authMethod);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof Electronic)) return false;
+
+ Electronic electronic = (Electronic) obj;
+ return (this.productNo == electronic.productNo) || (this.modelName == electronic.modelName)
+ || (this.dateOfMade == electronic.dateOfMade) || (this.companyName == electronic.companyName)
+ || (this.authMethod.equals(electronic.authMethod));
+ }
+
+ @Override
+ public String toString() {
+ return "electronic{productNo:" + productNo +
+ ", modelName:" + modelName +
+ ", companyName:" + companyName +
+ ", dateOfMade:" + dateOfMade +
+ ", authMethod:" + Arrays.toString(authMethod) + "}";
+ }
+
+
+ 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 String getDateOfMade() {
+ return dateOfMade;
+ }
+
+ public void setDateOfMade(String dateOfMade) {
+ this.dateOfMade = dateOfMade;
+ }
+ public void setCompanyName(Company companyName){
+ this.companyName = companyName;
+ }
+ public Company getCompanyName(){
+ return companyName;
+ }
+
+ public AuthMethod[] getAuthMethod() {
+ return authMethod;
+ }
+
+ public void setAuthMethod(AuthMethod[] authMethod) {
+ this.authMethod = authMethod;
+ }
+}
diff --git a/Assignment3/src/me/day05/practice/Practice01/User.java b/Assignment3/src/me/day05/practice/Practice01/User.java
new file mode 100644
index 0000000..ad06017
--- /dev/null
+++ b/Assignment3/src/me/day05/practice/Practice01/User.java
@@ -0,0 +1,115 @@
+package me.day05.practice.Practice01;
+
+import java.time.LocalTime;
+import java.util.Objects;
+
+public class User {
+
+ private String userId;
+ private String userPassword;
+ private int userPhoneNumber;
+ private String userEmail;
+ private int userBirthDate;
+ private String[] electronicDevices;
+ public LocalTime registerTime;
+
+
+ public User(){
+ registerTime = LocalTime.now();
+ }
+
+ public User(String userId, String userPassword, int userPhoneNumber, String userEmail, int userBirthDate,
+ String[] electronicDevices) {
+ this.userId = userId;
+ this.userPassword = userPassword;
+ this.userPhoneNumber = userPhoneNumber;
+ this.userEmail = userEmail;
+ this.userBirthDate = userBirthDate;
+ this.electronicDevices = electronicDevices;
+ this.registerTime = LocalTime.now();
+ }
+
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userId, userPassword, userPhoneNumber, userEmail, userBirthDate, electronicDevices,
+ registerTime);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof User))
+ return false;
+
+ User user = (User) obj;
+ return (this.userId == user.userId) || (this.userPassword == user.userPassword)
+ || (this.userPhoneNumber == user.userPhoneNumber) || (this.userEmail == user.userEmail)
+ || (this.userBirthDate == user.userBirthDate) || (this.electronicDevices == user.electronicDevices)
+ || (this.registerTime == user.registerTime);
+ }
+
+ @Override
+ public String toString() {
+ return "User{userId:" + userId +
+ ", userPassword:" + userPassword +
+ ", userPhonNumber:" + userPhoneNumber +
+ ", userEmail:" + userEmail +
+ ", userBirthDat:" + userBirthDate +
+ ", electronicDevice:" + electronicDevices +
+ ", registerTime:" + registerTime +
+ "}";
+ }
+
+
+ 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 int getUserPhoneNumber() {
+ return userPhoneNumber;
+ }
+
+ public void setUserPhoneNumber(int 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 String[] getElectronicDevices() {
+ return electronicDevices;
+ }
+
+ public void setElectronicDevices(String[] electronicDevices) {
+ this.electronicDevices = electronicDevices;
+ }
+
+ public LocalTime getTime() {
+ return this.registerTime;
+ }
+}
diff --git a/Assignment3/src/me/day05/practice/Practice02/Users.java b/Assignment3/src/me/day05/practice/Practice02/Users.java
new file mode 100644
index 0000000..242a03d
--- /dev/null
+++ b/Assignment3/src/me/day05/practice/Practice02/Users.java
@@ -0,0 +1,60 @@
+package me.day05.practice.Practice02;
+
+import me.day05.practice.Practice01.User;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+public class Users {
+
+ private User[] userList;
+ private static Users instance;
+
+ private Users() {}
+
+ public static Users getInstance() {
+ if(instance == null) instance = new Users();
+
+ return instance;
+ }
+
+ User findByUserId(String userId) {
+ for(User user : userList) {
+ if(user.getUserId().equals(userId))
+ return user;
+ }
+ return null;
+ }
+
+ User copy(User user) {
+ User userCopy = new User(user.getUserId(), user.getUserPassword(), user.getUserPhoneNumber()
+ , user.getUserEmail(), user.getUserBirthDate(), user.getElectronicDevices());
+ return userCopy;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userList);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if(!(obj instanceof Users)) return false;
+
+ Users list = (Users)obj;
+ return Arrays.equals(userList, list.userList);
+ }
+
+ @Override
+ public String toString() {
+ return "{userList:" + Arrays.toString(userList) + "}";
+ }
+
+ public User[] getUserList() {
+ return userList;
+ }
+
+ public void setUserList(User[] userList) {
+ this.userList = userList;
+ }
+}
diff --git a/Assignment3/src/me/day05/practice/Practice03/Electronics.java b/Assignment3/src/me/day05/practice/Practice03/Electronics.java
new file mode 100644
index 0000000..5807b7d
--- /dev/null
+++ b/Assignment3/src/me/day05/practice/Practice03/Electronics.java
@@ -0,0 +1,82 @@
+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.util.Arrays;
+import java.util.Objects;
+
+public class Electronics {
+
+ private Electronic[] electronicList;
+ private static Electronics instance;
+
+ private Electronics() {
+ }
+
+ private Electronics getInstance() {
+ if (!(instance == null)) return instance = new Electronics();
+ return instance;
+ }
+
+ public Electronic findByProductNo(String productNo) {
+ for (Electronic electronic : electronicList) {
+ if (electronic.getProductNo().equals(productNo))
+ return electronic;
+ }
+ return null;
+ }
+
+ public Electronic[] groupByCompanyName(Company company) {
+ Electronic[] companyOfProduct = new Electronic[electronicList.length];
+
+ int j = 0;
+ for (int i = 0; i < electronicList.length; i++) {
+ if (electronicList[i].getCompanyName().equals(company)){
+ companyOfProduct[j] = electronicList[i];
+ j++;
+ }
+ }
+ return companyOfProduct;
+ }
+
+ public Electronic[] groupByAuthMethod(AuthMethod authMethod) {
+ Electronic[] authMethodOfProduct = new Electronic[electronicList.length];
+
+ int j = 0;
+ for (int i = 0; i < electronicList.length; i++) {
+ if (electronicList[i].getAuthMethod().equals(authMethod)){
+ authMethodOfProduct[j] = electronicList[i];
+ j++;
+ }
+ }
+ return authMethodOfProduct;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(electronicList);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if(!(obj instanceof Electronics)) return false;
+
+ Electronics list = (Electronics) obj;
+ return Arrays.equals(this.electronicList, list.electronicList);
+ }
+
+ @Override
+ public String toString() {
+ return "electronicList{" + Arrays.toString(electronicList) + "}";
+ }
+
+ public Electronic[] getElectronicList() {
+ return electronicList;
+ }
+
+ public void setElectronicList(Electronic[] electronicList) {
+ this.electronicList = electronicList;
+ }
+}