From c5b24949d99eb22109e6fe041854b96de7f0374e Mon Sep 17 00:00:00 2001 From: Ussu1112 Date: Tue, 18 Apr 2023 00:56:04 +0900 Subject: [PATCH 1/6] day05 - Practice01 --- .../day05/practice/Practice01/AuthMethod.java | 5 + .../practice/Practice01/CompanyName.java | 5 + .../day05/practice/Practice01/Electronic.java | 117 +++++++++++++++++ src/me/day05/practice/Practice01/User.java | 122 ++++++++++++++++++ .../day05/practice/Practice01/userTest.java | 69 ++++++++++ 5 files changed, 318 insertions(+) create mode 100644 src/me/day05/practice/Practice01/AuthMethod.java create mode 100644 src/me/day05/practice/Practice01/CompanyName.java create mode 100644 src/me/day05/practice/Practice01/Electronic.java create mode 100644 src/me/day05/practice/Practice01/User.java create mode 100644 src/me/day05/practice/Practice01/userTest.java diff --git a/src/me/day05/practice/Practice01/AuthMethod.java b/src/me/day05/practice/Practice01/AuthMethod.java new file mode 100644 index 0000000..cf87715 --- /dev/null +++ b/src/me/day05/practice/Practice01/AuthMethod.java @@ -0,0 +1,5 @@ +package me.day05.practice.Practice01; + +public enum AuthMethod { + FINGERPRINT, PATTERN, PIN, FACE +} diff --git a/src/me/day05/practice/Practice01/CompanyName.java b/src/me/day05/practice/Practice01/CompanyName.java new file mode 100644 index 0000000..70e7fa7 --- /dev/null +++ b/src/me/day05/practice/Practice01/CompanyName.java @@ -0,0 +1,5 @@ +package me.day05.practice.Practice01; + +public enum CompanyName { + 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..500226c --- /dev/null +++ b/src/me/day05/practice/Practice01/Electronic.java @@ -0,0 +1,117 @@ +package me.day05.practice.Practice01; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Objects; + +public class Electronic { + private static int serialNum = 0; + private String productNo; + private String modelName; + private CompanyName companyName; + private LocalDate dateOfMade; + private ArrayList authMethod; + + public Electronic() { + serialNum++; + setProductNo(); + } + + public Electronic(String modelName, CompanyName companyName, LocalDate dateOfMade, ArrayList authMethod) { + this(); + this.modelName = modelName; + this.companyName = companyName; + this.dateOfMade = dateOfMade; + this.authMethod = authMethod; + } + + public String getProductNo() { + return productNo; + } + + private String setProductNo() { + + StringBuilder sb = new StringBuilder(10); + sb.append(LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"))); + + if ( (int)Math.log10(serialNum)+1 == 1){ + sb.append("000"); + sb.append(serialNum); + } else if ( (int)Math.log10(serialNum)+1 == 2) { + sb.append("00"); + sb.append(serialNum); + } else if ( (int)Math.log10(serialNum)+1 == 3) { + sb.append("0"); + sb.append(serialNum); + } else { + sb.append(serialNum); + } + + productNo = String.valueOf(sb); + return 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 ArrayList getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(ArrayList 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) && Objects.equals(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 + + '}'; + } + + public int authMethodSize(){ + AuthMethod[] values = AuthMethod.values(); + + return values.length; + } +} diff --git a/src/me/day05/practice/Practice01/User.java b/src/me/day05/practice/Practice01/User.java new file mode 100644 index 0000000..709aaeb --- /dev/null +++ b/src/me/day05/practice/Practice01/User.java @@ -0,0 +1,122 @@ +package me.day05.practice.Practice01; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.Objects; + +public class User { + + private String userId; + private String userPassword; + private String userPhoneNumber; + private String userEmail; + private LocalDate userBirthDate; + private String[] electronicDevices; + private LocalDateTime registerTime; + + public User() { + registerTime = LocalDateTime.now(); + } + + public User(String userId, String userPassword) { + this(); + this.userId = userId; + this.userPassword = userPassword; + + } + + public User(String userId, String userPassword, String userPhoneNumber, String userEmail, LocalDate userBirthDate, String[] electronicDevices) { + this(); + this.userId = userId; + this.userPassword = userPassword; + this.userPhoneNumber = userPhoneNumber; + this.userEmail = userEmail; + this.userBirthDate = userBirthDate; + this.electronicDevices = electronicDevices; + } + + 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 LocalDate getUserBirthDate() { + return userBirthDate; + } + + public void setUserBirthDate(LocalDate userBirthDate) { + this.userBirthDate = userBirthDate; + } + + public String[] getElectronicDevices() { + return electronicDevices; + } + + public void setElectronicDevices(String[] electronicDevices) { + this.electronicDevices = electronicDevices; + } + + 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 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/src/me/day05/practice/Practice01/userTest.java b/src/me/day05/practice/Practice01/userTest.java new file mode 100644 index 0000000..5aed54d --- /dev/null +++ b/src/me/day05/practice/Practice01/userTest.java @@ -0,0 +1,69 @@ +package me.day05.practice.Practice01; + +import me.day05.practice.Practice02.Users; +import me.day05.practice.Practice03.Electronics; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Arrays; + +public class userTest { + public static void main(String[] args) { + User userSong = new User("Song", "a1234"); + + System.out.println(userSong); + + String[] electronicDevices = {"GalaxyS", "GalaxyTablet"}; + + User userTae = new User("Tae","b5678", + "010-8885-9677","ussu1112@naver.com", LocalDate.of(1995,8,29), electronicDevices); + + System.out.println(userTae); + + ArrayList authArray = new ArrayList<>(); + ArrayList authArray2 = new ArrayList<>(); + + authArray.add(AuthMethod.FINGERPRINT); + authArray.add(AuthMethod.PIN); + authArray2.add(AuthMethod.PATTERN); + authArray2.add(AuthMethod.FACE); + authArray2.add(AuthMethod.FINGERPRINT); + + Electronic electronic = new Electronic("Galaxy", CompanyName.SAMSUNG, LocalDate.now(), authArray); + Electronic electronic2 = new Electronic("IPhone", CompanyName.APPLE, LocalDate.now(), authArray2); + + System.out.println(electronic); + System.out.println(electronic2); + + Users user = Users.getInstance(); + User userHyoung = user.createUser("Hyoung", "c8901"); + User userTaeHyoung = user.createUser("TaeHyoung", "d9021"); + User userSonng = user.createUser("Tae","b5678", + "010-8885-9677","ussu1112@naver.com", LocalDate.of(1995,8,29), electronicDevices); + + System.out.println(userHyoung); + System.out.println(userTaeHyoung); + System.out.println(userSonng); + System.out.println(Arrays.toString(user.getUserList())); + System.out.println(user.findByUserId("Hyoung")); + System.out.println(Users.copy(userHyoung)); + + + System.out.println("============="); + + Electronics elec = Electronics.getInstance(); + Electronic elecA = elec.createElectronic("Galaxy", CompanyName.SAMSUNG, LocalDate.now(), authArray); + Electronic elecB = elec.createElectronic("IPhone", CompanyName.APPLE, LocalDate.now(), authArray2); + + System.out.println(elecA); + System.out.println(elec.findByProductNo("2304180003")); + System.out.println(Arrays.toString(elec.groupByCompanyName(CompanyName.SAMSUNG))); + System.out.println(elecB); + System.out.println(Arrays.toString(elec.groupByAuthMethod(AuthMethod.FINGERPRINT))); + + + + + + } +} From 968d4788d2bd1afdb2b2f2b226fbd3e71e6df2c6 Mon Sep 17 00:00:00 2001 From: Ussu1112 Date: Tue, 18 Apr 2023 00:56:18 +0900 Subject: [PATCH 2/6] day05 - Practice02 --- src/me/day05/practice/Practice02/Users.java | 113 ++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/me/day05/practice/Practice02/Users.java diff --git a/src/me/day05/practice/Practice02/Users.java b/src/me/day05/practice/Practice02/Users.java new file mode 100644 index 0000000..4199802 --- /dev/null +++ b/src/me/day05/practice/Practice02/Users.java @@ -0,0 +1,113 @@ +package me.day05.practice.Practice02; + +import me.day05.practice.Practice01.User; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Objects; + +public class Users { + + /* + * Q. Users 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. + * */ + + final int arrSize = 10; + private static Users instance; + private User[] userList = new User[arrSize]; + + + public Users() { + + } + + public static Users getInstance() { + if(instance == null){ + instance = new Users(); + } + return instance; + } + + public User createUser(String userId, String userPassword){ + User user = new User(userId, userPassword); + for (int i = 0; i < userList.length; i++){ + if (userList[i] == null){ + userList[i] = user; + break; + } + } + return user; + } + + public User createUser(String userId, String userPassword, String userPhoneNumber, String userEmail, LocalDate userBirthDate, String[] electronicDevices){ + User user = new User(userId, userPassword, userPhoneNumber, userEmail, userBirthDate, electronicDevices); + for (int i = 0; i < userList.length; i++){ + if (userList[i] == null){ + userList[i] = user; + break; + } + } + return user; + } + + /* + * Q. 회원 아이디 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성하시오. + * */ + public User findByUserId(String userId){ + User newUser = new User(); + for ( int i = 0; i < userList.length; i++){ + if (userList[i].getUserId().equals(userId)) { + newUser = userList[i]; + System.out.println(userList[i]); + break; + } + } + return newUser; + } + + /* + * Q. 인자로 주어진 회원 정보를 깊은 복사 (deepCopy) 하는 함수를 작성하시오.*/ + public static User copy(User user) { + User copiedUser = new User(); + + copiedUser.setUserId(user.getUserId()); + copiedUser.setUserPassword(user.getUserPassword()); + copiedUser.setUserPhoneNumber(user.getUserPhoneNumber()); + copiedUser.setUserEmail(user.getUserEmail()); + copiedUser.setUserBirthDate(user.getUserBirthDate()); + copiedUser.setElectronicDevices(user.getElectronicDevices()); + + return copiedUser; + } + + 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 arrSize == users.arrSize && Arrays.equals(userList, users.userList); + } + + @Override + public int hashCode() { + int result = Objects.hash(arrSize); + result = 31 * result + Arrays.hashCode(userList); + return result; + } + + @Override + public String toString() { + return "Users{" + + "arrSize=" + arrSize + + ", userList=" + Arrays.toString(userList) + + '}'; + } +} From d0ff19bff2c7b4cc3e586ac8c23da743e3847b6d Mon Sep 17 00:00:00 2001 From: Ussu1112 Date: Tue, 18 Apr 2023 00:56:32 +0900 Subject: [PATCH 3/6] day05 - Practice03 --- .../practice/Practice03/Electronics.java | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 src/me/day05/practice/Practice03/Electronics.java diff --git a/src/me/day05/practice/Practice03/Electronics.java b/src/me/day05/practice/Practice03/Electronics.java new file mode 100644 index 0000000..0f98a01 --- /dev/null +++ b/src/me/day05/practice/Practice03/Electronics.java @@ -0,0 +1,121 @@ +package me.day05.practice.Practice03; + +import me.day05.practice.Practice01.AuthMethod; +import me.day05.practice.Practice01.CompanyName; +import me.day05.practice.Practice01.Electronic; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Objects; + +public class Electronics { + + /* + * Q. Electronics 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. + * */ + + + final int arrSize = 10; + private static Electronics instance; + private Electronic[] electronicList = new Electronic[arrSize]; + + public Electronics() { + } + + public static Electronics getInstance() { + if (instance == null){ + instance = new Electronics(); + } + return instance; + } + + public Electronic createElectronic(String modelName, CompanyName companyName, LocalDate dateOfMade, ArrayList authMethod){ + Electronic electronic = new Electronic(modelName, companyName, dateOfMade, authMethod); + + for (int i = 0; i < electronicList.length; i++){ + if (electronicList[i] == null){ + electronicList[i] = electronic; + break; + } + } + return electronic; + } + + + /* + * Q.전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성하시오.*/ + public Electronic findByProductNo(String productNo){ + Electronic newElectronic = new Electronic(); + for ( int i = 0; i < electronicList.length; i++){ + if (electronicList[i].getProductNo().equals(productNo)) { + newElectronic = electronicList[i]; + break; + } + } + return newElectronic; + + } + + /* + * Q. 전자제품들 중 인자로 주어진 제조 회사를 찾아서 하나의 배열에 반환하는 함수를 작성하시오.*/ + + public Electronic[] groupByCompanyName(CompanyName companyName){ + Electronic[] companyArray = new Electronic[arrSize]; + int cnt = 0; + for ( int i = 0; i < electronicList.length; i++){ + if (electronicList[i] != null && electronicList[i].getCompanyName().equals(companyName)) { + companyArray[cnt] = electronicList[i]; + cnt++; + } + } + return companyArray; + } + + /* + * Q. 전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성하시오.*/ + public Electronic[] groupByAuthMethod(AuthMethod authMethod){ + Electronic[] authMethodArray = new Electronic[arrSize]; + + System.out.println("================="); + System.out.println(Arrays.toString(electronicList)); + System.out.println("================="); + int cnt = 0; + for ( int i = 0; i < electronicList.length; i++){ + if(electronicList[i] != null && electronicList[i].getAuthMethod().contains(authMethod)){ + authMethodArray[cnt] = electronicList[i]; + cnt++; + } + } + return authMethodArray; + }; + + 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 arrSize == that.arrSize && Arrays.equals(electronicList, that.electronicList); + } + + + @Override + public int hashCode() { + int result = Objects.hash(arrSize); + result = 31 * result + Arrays.hashCode(electronicList); + return result; + } + + @Override + public String toString() { + return "Electronics{" + + "arrSize=" + arrSize + + ", electronicList=" + Arrays.toString(electronicList) + + '}'; + } + +} From ef3d3df1836d23b14a38683c66b7a9dd975f0655 Mon Sep 17 00:00:00 2001 From: Ussu1112 Date: Tue, 18 Apr 2023 01:16:14 +0900 Subject: [PATCH 4/6] refactoring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User 클래스 생성자 추가, Electonic 클래스 serialNum++ 를 포함하고 있어 private으로 변경 --- src/me/day05/practice/Practice01/Electronic.java | 6 +++++- src/me/day05/practice/Practice01/User.java | 4 ++++ src/me/day05/practice/Practice02/Users.java | 2 +- src/me/day05/practice/Practice03/Electronics.java | 6 +----- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/me/day05/practice/Practice01/Electronic.java b/src/me/day05/practice/Practice01/Electronic.java index 500226c..8abb6ce 100644 --- a/src/me/day05/practice/Practice01/Electronic.java +++ b/src/me/day05/practice/Practice01/Electronic.java @@ -14,11 +14,15 @@ public class Electronic { private LocalDate dateOfMade; private ArrayList authMethod; - public Electronic() { + private Electronic() { serialNum++; setProductNo(); } + public Electronic(String productNo) { + this.productNo = productNo; + } + public Electronic(String modelName, CompanyName companyName, LocalDate dateOfMade, ArrayList authMethod) { this(); this.modelName = modelName; diff --git a/src/me/day05/practice/Practice01/User.java b/src/me/day05/practice/Practice01/User.java index 709aaeb..f50ebb0 100644 --- a/src/me/day05/practice/Practice01/User.java +++ b/src/me/day05/practice/Practice01/User.java @@ -19,6 +19,10 @@ public User() { registerTime = LocalDateTime.now(); } + public User(String userId) { + this.userId = userId; + } + public User(String userId, String userPassword) { this(); this.userId = userId; diff --git a/src/me/day05/practice/Practice02/Users.java b/src/me/day05/practice/Practice02/Users.java index 4199802..53a9251 100644 --- a/src/me/day05/practice/Practice02/Users.java +++ b/src/me/day05/practice/Practice02/Users.java @@ -54,7 +54,7 @@ public User createUser(String userId, String userPassword, String userPhoneNumbe * Q. 회원 아이디 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성하시오. * */ public User findByUserId(String userId){ - User newUser = new User(); + User newUser = new User(userId); for ( int i = 0; i < userList.length; i++){ if (userList[i].getUserId().equals(userId)) { newUser = userList[i]; diff --git a/src/me/day05/practice/Practice03/Electronics.java b/src/me/day05/practice/Practice03/Electronics.java index 0f98a01..46f5975 100644 --- a/src/me/day05/practice/Practice03/Electronics.java +++ b/src/me/day05/practice/Practice03/Electronics.java @@ -46,7 +46,7 @@ public Electronic createElectronic(String modelName, CompanyName companyName, Lo /* * Q.전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성하시오.*/ public Electronic findByProductNo(String productNo){ - Electronic newElectronic = new Electronic(); + Electronic newElectronic = new Electronic(productNo); for ( int i = 0; i < electronicList.length; i++){ if (electronicList[i].getProductNo().equals(productNo)) { newElectronic = electronicList[i]; @@ -76,10 +76,6 @@ public Electronic[] groupByCompanyName(CompanyName companyName){ * Q. 전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성하시오.*/ public Electronic[] groupByAuthMethod(AuthMethod authMethod){ Electronic[] authMethodArray = new Electronic[arrSize]; - - System.out.println("================="); - System.out.println(Arrays.toString(electronicList)); - System.out.println("================="); int cnt = 0; for ( int i = 0; i < electronicList.length; i++){ if(electronicList[i] != null && electronicList[i].getAuthMethod().contains(authMethod)){ From 007dcddca80357e06a0891b0a8a09ea0f40f67af Mon Sep 17 00:00:00 2001 From: Ussu1112 Date: Tue, 25 Apr 2023 20:23:00 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[2=EC=B0=A8]=20Java=20Assignment3=20upload?= =?UTF-8?q?=20by=20TaeHyoungSong?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../day05/practice/Practice01/AuthMethod.java | 3 + .../day05/practice/Practice01/Electronic.java | 14 ++-- src/me/day05/practice/Practice01/User.java | 2 - .../day05/practice/Practice01/userTest.java | 45 ++++++------- src/me/day05/practice/Practice02/Users.java | 22 +++---- .../practice/Practice03/Electronics.java | 66 ++++++++++++------- 6 files changed, 84 insertions(+), 68 deletions(-) diff --git a/src/me/day05/practice/Practice01/AuthMethod.java b/src/me/day05/practice/Practice01/AuthMethod.java index cf87715..d03c0ee 100644 --- a/src/me/day05/practice/Practice01/AuthMethod.java +++ b/src/me/day05/practice/Practice01/AuthMethod.java @@ -2,4 +2,7 @@ public enum AuthMethod { FINGERPRINT, PATTERN, PIN, FACE + } + + diff --git a/src/me/day05/practice/Practice01/Electronic.java b/src/me/day05/practice/Practice01/Electronic.java index 8abb6ce..3cd581e 100644 --- a/src/me/day05/practice/Practice01/Electronic.java +++ b/src/me/day05/practice/Practice01/Electronic.java @@ -1,8 +1,8 @@ package me.day05.practice.Practice01; import java.time.LocalDate; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; @@ -12,7 +12,7 @@ public class Electronic { private String modelName; private CompanyName companyName; private LocalDate dateOfMade; - private ArrayList authMethod; + private AuthMethod[] authMethod; private Electronic() { serialNum++; @@ -23,7 +23,7 @@ public Electronic(String productNo) { this.productNo = productNo; } - public Electronic(String modelName, CompanyName companyName, LocalDate dateOfMade, ArrayList authMethod) { + public Electronic(String modelName, CompanyName companyName, LocalDate dateOfMade, AuthMethod[] authMethod) { this(); this.modelName = modelName; this.companyName = companyName; @@ -52,6 +52,8 @@ private String setProductNo() { } else { sb.append(serialNum); } + String order = String.format("%04d", serialNum); + String date = LocalDate.now(ZoneId.systemDefault()).toString().replace("-", "").substring(2); productNo = String.valueOf(sb); return productNo; @@ -81,11 +83,11 @@ public void setDateOfMade(LocalDate dateOfMade) { this.dateOfMade = dateOfMade; } - public ArrayList getAuthMethod() { + public AuthMethod[] getAuthMethod() { return authMethod; } - public void setAuthMethod(ArrayList authMethod) { + public void setAuthMethod(AuthMethod[] authMethod) { this.authMethod = authMethod; } @@ -109,7 +111,7 @@ public String toString() { ", modelName='" + modelName + '\'' + ", companyName=" + companyName + ", dateOfMade=" + dateOfMade + - ", authMethod=" + authMethod + + ", authMethod=" + Arrays.toString(authMethod) + '}'; } diff --git a/src/me/day05/practice/Practice01/User.java b/src/me/day05/practice/Practice01/User.java index f50ebb0..ffa87f2 100644 --- a/src/me/day05/practice/Practice01/User.java +++ b/src/me/day05/practice/Practice01/User.java @@ -6,7 +6,6 @@ import java.util.Objects; public class User { - private String userId; private String userPassword; private String userPhoneNumber; @@ -27,7 +26,6 @@ public User(String userId, String userPassword) { this(); this.userId = userId; this.userPassword = userPassword; - } public User(String userId, String userPassword, String userPhoneNumber, String userEmail, LocalDate userBirthDate, String[] electronicDevices) { diff --git a/src/me/day05/practice/Practice01/userTest.java b/src/me/day05/practice/Practice01/userTest.java index 5aed54d..a29f468 100644 --- a/src/me/day05/practice/Practice01/userTest.java +++ b/src/me/day05/practice/Practice01/userTest.java @@ -4,9 +4,11 @@ import me.day05.practice.Practice03.Electronics; import java.time.LocalDate; -import java.util.ArrayList; import java.util.Arrays; +import static me.day05.practice.Practice01.AuthMethod.*; + + public class userTest { public static void main(String[] args) { User userSong = new User("Song", "a1234"); @@ -20,21 +22,8 @@ public static void main(String[] args) { System.out.println(userTae); - ArrayList authArray = new ArrayList<>(); - ArrayList authArray2 = new ArrayList<>(); - - authArray.add(AuthMethod.FINGERPRINT); - authArray.add(AuthMethod.PIN); - authArray2.add(AuthMethod.PATTERN); - authArray2.add(AuthMethod.FACE); - authArray2.add(AuthMethod.FINGERPRINT); - - Electronic electronic = new Electronic("Galaxy", CompanyName.SAMSUNG, LocalDate.now(), authArray); - Electronic electronic2 = new Electronic("IPhone", CompanyName.APPLE, LocalDate.now(), authArray2); - - System.out.println(electronic); - System.out.println(electronic2); + //Users user = new Users(); - 싱글톤 패턴이기 때문에 불가능 Users user = Users.getInstance(); User userHyoung = user.createUser("Hyoung", "c8901"); User userTaeHyoung = user.createUser("TaeHyoung", "d9021"); @@ -48,22 +37,28 @@ public static void main(String[] args) { System.out.println(user.findByUserId("Hyoung")); System.out.println(Users.copy(userHyoung)); + System.out.println("==========================="); - System.out.println("============="); - - Electronics elec = Electronics.getInstance(); - Electronic elecA = elec.createElectronic("Galaxy", CompanyName.SAMSUNG, LocalDate.now(), authArray); - Electronic elecB = elec.createElectronic("IPhone", CompanyName.APPLE, LocalDate.now(), authArray2); + Electronics electronics = Electronics.getInstance(); - System.out.println(elecA); - System.out.println(elec.findByProductNo("2304180003")); - System.out.println(Arrays.toString(elec.groupByCompanyName(CompanyName.SAMSUNG))); - System.out.println(elecB); - System.out.println(Arrays.toString(elec.groupByAuthMethod(AuthMethod.FINGERPRINT))); + AuthMethod[] authArray = {FINGERPRINT, PIN}; + AuthMethod[] authArray2 = {PATTERN, FACE}; + Electronic electronic = electronics.createElectronic("Galaxy", CompanyName.SAMSUNG, LocalDate.now(), authArray); + Electronic electronic2 = electronics.createElectronic("IPhone", CompanyName.APPLE, LocalDate.now(), authArray2); + System.out.println(electronic); + System.out.println(electronic2); + System.out.println("==========================="); + Electronic electronicsA = electronics.createElectronic("Galaxy", CompanyName.SAMSUNG, LocalDate.now(), authArray); + Electronic electronicsB = electronics.createElectronic("IPhone", CompanyName.APPLE, LocalDate.now(), authArray2); + System.out.println(electronicsA); + System.out.println(electronics.findByProductNo("2304250003")); + System.out.println(Arrays.toString(electronics.groupByCompanyName(CompanyName.SAMSUNG))); + System.out.println(Arrays.toString(electronicsB.getAuthMethod())); + System.out.println(Arrays.toString(electronics.groupByAuthMethod(FINGERPRINT))); } } diff --git a/src/me/day05/practice/Practice02/Users.java b/src/me/day05/practice/Practice02/Users.java index 53a9251..05d9083 100644 --- a/src/me/day05/practice/Practice02/Users.java +++ b/src/me/day05/practice/Practice02/Users.java @@ -6,21 +6,20 @@ import java.util.Arrays; import java.util.Objects; -public class Users { +public class Users{ /* * Q. Users 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. * */ - final int arrSize = 10; - private static Users instance; private User[] userList = new User[arrSize]; + private static Users instance; // 정적 참조 변수 - - public Users() { - + private Users() { + // private 생성자 } + // 객체 변환 정적 메서드 public static Users getInstance() { if(instance == null){ instance = new Users(); @@ -55,10 +54,10 @@ public User createUser(String userId, String userPassword, String userPhoneNumbe * */ public User findByUserId(String userId){ User newUser = new User(userId); - for ( int i = 0; i < userList.length; i++){ - if (userList[i].getUserId().equals(userId)) { - newUser = userList[i]; - System.out.println(userList[i]); + for (User user : userList) { + if (user.getUserId().equals(userId)) { + newUser = user; + System.out.println(user); break; } } @@ -67,6 +66,7 @@ public User findByUserId(String userId){ /* * Q. 인자로 주어진 회원 정보를 깊은 복사 (deepCopy) 하는 함수를 작성하시오.*/ + public static User copy(User user) { User copiedUser = new User(); @@ -93,7 +93,7 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Users users = (Users) o; - return arrSize == users.arrSize && Arrays.equals(userList, users.userList); + return Arrays.equals(userList, users.userList); } @Override diff --git a/src/me/day05/practice/Practice03/Electronics.java b/src/me/day05/practice/Practice03/Electronics.java index 46f5975..5c6c193 100644 --- a/src/me/day05/practice/Practice03/Electronics.java +++ b/src/me/day05/practice/Practice03/Electronics.java @@ -5,7 +5,6 @@ import me.day05.practice.Practice01.Electronic; import java.time.LocalDate; -import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; @@ -14,23 +13,21 @@ public class Electronics { /* * Q. Electronics 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. * */ - - final int arrSize = 10; - private static Electronics instance; + private static Electronics electronics; private Electronic[] electronicList = new Electronic[arrSize]; - public Electronics() { + private Electronics() { } public static Electronics getInstance() { - if (instance == null){ - instance = new Electronics(); + if (electronics == null){ + electronics = new Electronics(); } - return instance; + return electronics; } - public Electronic createElectronic(String modelName, CompanyName companyName, LocalDate dateOfMade, ArrayList authMethod){ + public Electronic createElectronic(String modelName, CompanyName companyName, LocalDate dateOfMade, AuthMethod[] authMethod){ Electronic electronic = new Electronic(modelName, companyName, dateOfMade, authMethod); for (int i = 0; i < electronicList.length; i++){ @@ -47,9 +44,9 @@ public Electronic createElectronic(String modelName, CompanyName companyName, Lo * Q.전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성하시오.*/ public Electronic findByProductNo(String productNo){ Electronic newElectronic = new Electronic(productNo); - for ( int i = 0; i < electronicList.length; i++){ - if (electronicList[i].getProductNo().equals(productNo)) { - newElectronic = electronicList[i]; + for (Electronic electronic : electronicList) { + if (electronic.getProductNo().equals(productNo)) { + newElectronic = electronic; break; } } @@ -63,9 +60,9 @@ public Electronic findByProductNo(String productNo){ public Electronic[] groupByCompanyName(CompanyName companyName){ Electronic[] companyArray = new Electronic[arrSize]; int cnt = 0; - for ( int i = 0; i < electronicList.length; i++){ - if (electronicList[i] != null && electronicList[i].getCompanyName().equals(companyName)) { - companyArray[cnt] = electronicList[i]; + for (Electronic electronic : electronicList) { + if (electronic != null && electronic.getCompanyName().equals(companyName)) { + companyArray[cnt] = electronic; cnt++; } } @@ -76,18 +73,39 @@ public Electronic[] groupByCompanyName(CompanyName companyName){ * Q. 전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성하시오.*/ public Electronic[] groupByAuthMethod(AuthMethod authMethod){ Electronic[] authMethodArray = new Electronic[arrSize]; - int cnt = 0; - for ( int i = 0; i < electronicList.length; i++){ - if(electronicList[i] != null && electronicList[i].getAuthMethod().contains(authMethod)){ - authMethodArray[cnt] = electronicList[i]; - cnt++; +// int cnt = 0; +// for (Electronic electronic : electronicList){ +// if (electronic.getAuthMethod() == null || electronic.getAuthMethod() == null) continue; +// for (AuthMethod method : electronic.getAuthMethod()){ +// if(method.equals(authMethod)){ +// if (electronic.getAuthMethod() == null) continue; +// authMethodArray[cnt] = electronic; +// cnt++; +// break; +// } +// } +// } + + for (int i = 0; i < electronicList.length; i++) { + if (electronicList[i] == null) continue; + if (electronicList[i].getCompanyName() == null || electronicList[i].getAuthMethod().length == 0) continue; + for (int j = 0; j < electronicList[i].getAuthMethod().length; j++) { + if (electronicList[i].getAuthMethod()[j] == null) continue; + if (electronicList[i].getAuthMethod()[j] == authMethod) { + authMethodArray[i] = electronicList[i]; + break; + } } } return authMethodArray; - }; + } + + public Electronic[] getElectronicList() { + return electronicList; + } - public static void setInstance(Electronics instance) { - Electronics.instance = instance; + public void setElectronicList(Electronic[] electronicList) { + this.electronicList = electronicList; } @Override @@ -95,7 +113,7 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Electronics that = (Electronics) o; - return arrSize == that.arrSize && Arrays.equals(electronicList, that.electronicList); + return Arrays.equals(electronicList, that.electronicList); } From 7b477752620d67d5eb3b051cdd5b1a9046106e28 Mon Sep 17 00:00:00 2001 From: Ussu1112 Date: Tue, 25 Apr 2023 20:33:23 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[2=EC=B0=A8]=20Java=20Assignment3=20upload?= =?UTF-8?q?=20by=20TaeHyoungSong?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 누락된 수정분 커밋 --- src/me/day05/practice/Practice02/Users.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/me/day05/practice/Practice02/Users.java b/src/me/day05/practice/Practice02/Users.java index 05d9083..2aee79b 100644 --- a/src/me/day05/practice/Practice02/Users.java +++ b/src/me/day05/practice/Practice02/Users.java @@ -11,7 +11,7 @@ public class Users{ /* * Q. Users 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. * */ - final int arrSize = 10; + private final int arrSize = 10; private User[] userList = new User[arrSize]; private static Users instance; // 정적 참조 변수 @@ -24,6 +24,7 @@ public static Users getInstance() { if(instance == null){ instance = new Users(); } + return instance; }