From 7c1cac0d5fde5357ede8017bde78a62e059f44de Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Mon, 17 Apr 2023 16:23:28 +0900 Subject: [PATCH 01/11] Java Assignment3 upload by HyunsooJung --- me/day05/practice/Electronic.java | 107 ++++++++++++++++++++ me/day05/practice/Electronics.java | 152 +++++++++++++++++++++++++++++ me/day05/practice/User.java | 135 +++++++++++++++++++++++++ me/day05/practice/Users.java | 114 ++++++++++++++++++++++ 4 files changed, 508 insertions(+) create mode 100644 me/day05/practice/Electronic.java create mode 100644 me/day05/practice/Electronics.java create mode 100644 me/day05/practice/User.java create mode 100644 me/day05/practice/Users.java diff --git a/me/day05/practice/Electronic.java b/me/day05/practice/Electronic.java new file mode 100644 index 0000000..d5d33ad --- /dev/null +++ b/me/day05/practice/Electronic.java @@ -0,0 +1,107 @@ +package me.day05.practice; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.Objects; + +public class Electronic { + + enum CompanyName { SAMSUNG, LG, APPLE } + enum AuthMethod { FINGERPRINT, PIN, PATTERN, FACE } + + private static int registrationNo; + + private String productNo; + private String modelName; + private CompanyName companyName; + private String dateOfMade; + private AuthMethod[] authMethod; + + Electronic () { + registrationNo++; + setDateOfMade(); + setProductNo(); + } + + Electronic (String modelName, CompanyName companyName, AuthMethod[] authMethod) { + this(); + this.modelName = modelName; + this.companyName = companyName; + this.authMethod = authMethod; + } + + private void setDateOfMade(){ + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyMMdd"); + dateOfMade = timeFormatter.format(LocalDate.now()); + } + + private void setProductNo(){ + if (registrationNo >= 10000) setRegistrationNo(); + productNo = dateOfMade + String.format("%4d", registrationNo).replaceAll(" ", "0"); + } + + private void setRegistrationNo(){ + registrationNo %= 10000; + } + + public boolean isContainAuthMethod(AuthMethod authMethod){ + for (AuthMethod auth : this.authMethod) + if (authMethod.equals(auth)) return true; + return false; + } + + public String getProductNo() { + 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 String getDateOfMade() { + return dateOfMade; + } + + public AuthMethod[] getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(AuthMethod[] authMethod) { + this.authMethod = authMethod; + } + + @Override + public int hashCode() { + return Objects.hash(productNo, modelName, companyName, dateOfMade, Arrays.hashCode(authMethod)); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + return Objects.equals(productNo, ((Electronic)obj).productNo); + } + + @Override + public String toString() { + return "Electronic { " + + "productNo=" + productNo + + ", modelName=" + modelName + + ", companyName= " + companyName + + ", dateOfMade=" + dateOfMade + + ", authMethod=" + Arrays.toString(authMethod) + " }"; + } +} diff --git a/me/day05/practice/Electronics.java b/me/day05/practice/Electronics.java new file mode 100644 index 0000000..efa1800 --- /dev/null +++ b/me/day05/practice/Electronics.java @@ -0,0 +1,152 @@ +package me.day05.practice; + +import me.day05.practice.Electronic.AuthMethod; +import me.day05.practice.Electronic.CompanyName; + +import java.util.*; + +public class Electronics { + + private static final int DEFAULT_CAPACITY = 10; // Default initial capacity + + private static final Electronic[] EMPTY_ELECTRONIC_LIST = {}; + + private static Electronic[] electronicList; + + private static Electronics electronicsInstance; + + private int size; + + private int capacity; + + Electronics(){ + electronicList = EMPTY_ELECTRONIC_LIST; + } + + // TODO: 1. Electronics 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. + public static Electronics getInstance() { + if (electronicsInstance == null) electronicsInstance = new Electronics(); + return electronicsInstance; + } + + // TODO: 2. 전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성하시오. + public Optional findByProductNo(String productNo){ + for (Electronic electronic : electronicList) + if (productNo.equals(electronic.getProductNo())) + return Optional.of(electronic); + + return Optional.empty(); + } + + // TODO: 3. 전자제품들 중 인자로 주어진 제조 회사를 찾아서 하나의 배열에 반환하는 함수를 작성하시오. + public Optional groupByCompanyName(CompanyName company){ + Electronic[] companyNameGroup = null; + + List temp = new ArrayList<>(); + + for (Electronic electronic : electronicList) + // 테스트용 임시 조건 ( electronic != null ) + if (electronic != null && electronic.getCompanyName().equals(company)) + temp.add(electronic); + + if (!temp.isEmpty()) { + companyNameGroup = new Electronic[temp.size()]; + for (int i = 0; i < companyNameGroup.length; i++) + companyNameGroup[i] = temp.get(i); + } + + return Optional.ofNullable(companyNameGroup); + } + + public Optional findByCompanyName(CompanyName company){ + for (Electronic electronic : electronicList) + if (company.equals(electronic.getCompanyName())) + return Optional.of(electronic); + + return Optional.empty(); + } + + // TODO: 4. 전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성하시오. + public Optional groupByAuthMethod(AuthMethod authMethod){ + Electronic[] authMethodNameGroup = null; + + List temp = new ArrayList<>(); + + for (Electronic electronic : electronicList) + // 테스트용 임시 조건 ( electronic != null ) + if (electronic != null && electronic.isContainAuthMethod(authMethod)) + temp.add(electronic); + + if (!temp.isEmpty()) { + authMethodNameGroup = new Electronic[temp.size()]; + for (int i = 0; i < authMethodNameGroup.length; i++) + authMethodNameGroup[i] = temp.get(i); + } + + return Optional.ofNullable(authMethodNameGroup); + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getCapacity() { + return capacity; + } + + public void setCapacity(int capacity) { + this.capacity = capacity; + } + + @Override + public int hashCode() { + return Objects.hash(Arrays.hashCode(electronicList), size, capacity); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + return Objects.equals(hashCode(), ((Electronics)obj).hashCode()); + } + + @Override + public String toString() { + return "Users { " + + "size=" + size + + ", capacity=" + capacity + + ", electronicList= " + Arrays.toString(electronicList) + " }"; + } + + //==================================== TEST CODE ====================================// + public void add (Electronic electronic) { + if (electronicList == EMPTY_ELECTRONIC_LIST) + electronicList = new Electronic[DEFAULT_CAPACITY]; + /* 배열 크기 체크하고 늘리는 로직 구현 할 것 */ + electronicList[size++] = electronic; + } + + public static void main(String[] args) { + Electronic iPhone13 = new Electronic("아이폰13", CompanyName.APPLE, new AuthMethod[]{AuthMethod.FACE, AuthMethod.PIN, AuthMethod.PATTERN}); + Electronic iPhone12 = new Electronic("아이폰12", CompanyName.APPLE, new AuthMethod[]{AuthMethod.FACE, AuthMethod.PIN, AuthMethod.PATTERN}); + Electronic galaxyS22 = new Electronic("갤럭시S22", CompanyName.SAMSUNG, new AuthMethod[]{AuthMethod.FINGERPRINT, AuthMethod.PIN, AuthMethod.PATTERN}); + + Electronics electronics = getInstance(); + electronics.add(iPhone13); + electronics.add(iPhone12); + electronics.add(galaxyS22); + +// System.out.println(electronics); + + Optional authMethodGroupPIN = electronics.groupByAuthMethod(AuthMethod.FACE); + authMethodGroupPIN.ifPresent(value -> System.out.println(Arrays.toString(value))); + + Optional companyNameGroupAPPLE = electronics.groupByCompanyName(CompanyName.SAMSUNG); + companyNameGroupAPPLE.ifPresent(value -> System.out.println(Arrays.toString(value))); + + } +} diff --git a/me/day05/practice/User.java b/me/day05/practice/User.java new file mode 100644 index 0000000..78ca956 --- /dev/null +++ b/me/day05/practice/User.java @@ -0,0 +1,135 @@ +package me.day05.practice; + +import java.time.LocalDate; +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 Electronic[] electronicDevice; + private LocalDate registerTime; + + User() { + + setRegisterTime(); + } + + User(String userId, String userPassword, String userPhoneNumber, String userEmail, String userBirthDate, Electronic[] electronicDevice) { + this(); + this.userId = userId; + this.userPassword = userPassword; + this.userPhoneNumber = userPhoneNumber; + this.userEmail = userEmail; + this.userBirthDate = userBirthDate; + this.electronicDevice = electronicDevice; + } + + private User(String userId, String userPassword, String userPhoneNumber, String userEmail, String userBirthDate, Electronic[] electronicDevice, LocalDate registerTime){ + this.userId = userId; + this.userPassword = userPassword; + this.userPhoneNumber = userPhoneNumber; + this.userEmail = userEmail; + this.userBirthDate = userBirthDate; + this.electronicDevice = electronicDevice; + this.registerTime = registerTime; + } + + private void setRegisterTime() { + registerTime = LocalDate.now(); + } + + 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[] getElectronicDevice() { + return electronicDevice; + } + + public void setElectronicDevice(Electronic[] electronicDevice) { + this.electronicDevice = electronicDevice; + } + + public LocalDate getRegisterTime() { + return registerTime; + } + +// private void validatePhoneNumberFormat(String userPhoneNumber){} +// private String formatPhoneNumber(String userPhoneNumber){ validatePhoneNumberFormat(userPhoneNumber) } +// +// private void validateUserEmailFormat(String userPhoneNumber){} +// private String formatUserEmail(String userPhoneNumber){ validateUserEmailFormat(String userPhoneNumber) } +// +// private void validateUserBirthDateFormat(String userBirthDate){} +// private String formatUserBirthDate(String userBirthDate){ validateUserBirthDateFormat(String userBirthDate) } + + @Override + public int hashCode() { + return Objects.hash(userId, userPassword, userEmail, userBirthDate, Arrays.hashCode(electronicDevice), registerTime); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + return Objects.equals(hashCode(), ((User)obj).hashCode()); + } + + @Override + public String toString() { + return "User { " + + "userId=" + userId + + ", userPassword=" + userPassword + + ", userPhoneNumber= " + userPhoneNumber + + ", userEmail=" + userEmail + + ", userBirthDate=" + userBirthDate + + ", electronicDevice=" + Arrays.toString(electronicDevice) + + ", registerTime=" + registerTime + " }"; + } + + @Override + protected User clone() { + return new User(userId, userPassword, userPhoneNumber, userEmail, userBirthDate, electronicDevice, registerTime); + } +} + diff --git a/me/day05/practice/Users.java b/me/day05/practice/Users.java new file mode 100644 index 0000000..465202f --- /dev/null +++ b/me/day05/practice/Users.java @@ -0,0 +1,114 @@ +package me.day05.practice; + +import java.util.Arrays; +import java.util.Objects; +import java.util.Optional; + +public class Users { + + private static final int DEFAULT_CAPACITY = 10; // Default initial capacity + + private static final User[] EMPTY_USER_LIST = {}; + + private static User[] userList; + + private static Users usersInstance; + + private int size; + + private int capacity; + + Users(){ + userList = EMPTY_USER_LIST; + } + + // TODO: 1. Users 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. + public static Users getInstance() { + if (usersInstance == null) usersInstance = new Users(); + return usersInstance; + } + + // TODO: 2. 회원 아이디 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성하시오. + public Optional findById(String userId){ + for (User user : userList) + if (userId.equals(user.getUserId())) + return Optional.of(user); + + return Optional.empty(); + } + + // TODO: 3. 인자로 주어진 회원 정보를 깊은 복사 (deepCopy) 하는 함수를 작성하시오. + public User copy(User user) { + User copyUser = findById(user.getUserId()).orElseThrow(NullPointerException::new); // 예외 처리 추가 구현 필요 + return copyUser.clone(); + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getCapacity() { + return capacity; + } + + public void setCapacity(int capacity) { + this.capacity = capacity; + } + + @Override + public int hashCode() { + return Objects.hash(Arrays.hashCode(userList), size, capacity); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + return Objects.equals(hashCode(), ((Users)obj).hashCode()); + } + + @Override + public String toString() { + return "Users { " + + "size=" + size + + ", capacity=" + capacity + + ", userList= " + Arrays.toString(userList) + " }"; + } + + //==================================== TEST CODE ====================================// + public void add (User user) { + if (userList == EMPTY_USER_LIST) + userList = new User[DEFAULT_CAPACITY]; + /* 배열 크기 체크하고 늘리는 로직 구현 할 것 */ + userList[size++] = user; + } + + public static void main(String[] args) { + User userA = new User("A", "aaa", "aaaa", "aaa@aaa.com", "aaa", new Electronic[]{new Electronic()}); + User userB = new User("B", "bbb", "bbbb", "bbb@bbb.com", "bbb", new Electronic[]{new Electronic()}); + User userC = new User("C", "ccc", "cccc", "ccc@ccc.com", "ccc", new Electronic[]{new Electronic()}); + + Users userList = getInstance(); + userList.add(userA); + userList.add(userB); + userList.add(userC); + + System.out.println("findByID test"); + Optional a = userList.findById("A"); + a.ifPresent(System.out::println); + System.out.println(); + + + System.out.println("deep copy Test"); + User copyA = userList.copy(userA); + copyA.setUserId("AA"); + + System.out.println(userA); + System.out.println(copyA); + + } +} From e99be9a20188da7b05a39677c0d21dca07e5d71b Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Mon, 17 Apr 2023 17:46:08 +0900 Subject: [PATCH 02/11] style: Modify Wrapping Lines --- me/day05/practice/Electronics.java | 4 ---- me/day05/practice/User.java | 1 + me/day05/practice/Users.java | 4 ---- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/me/day05/practice/Electronics.java b/me/day05/practice/Electronics.java index efa1800..5fb20a3 100644 --- a/me/day05/practice/Electronics.java +++ b/me/day05/practice/Electronics.java @@ -8,15 +8,12 @@ public class Electronics { private static final int DEFAULT_CAPACITY = 10; // Default initial capacity - private static final Electronic[] EMPTY_ELECTRONIC_LIST = {}; private static Electronic[] electronicList; - private static Electronics electronicsInstance; private int size; - private int capacity; Electronics(){ @@ -147,6 +144,5 @@ public static void main(String[] args) { Optional companyNameGroupAPPLE = electronics.groupByCompanyName(CompanyName.SAMSUNG); companyNameGroupAPPLE.ifPresent(value -> System.out.println(Arrays.toString(value))); - } } diff --git a/me/day05/practice/User.java b/me/day05/practice/User.java index 78ca956..959bd93 100644 --- a/me/day05/practice/User.java +++ b/me/day05/practice/User.java @@ -5,6 +5,7 @@ import java.util.Objects; public class User { + private String userId; private String userPassword; private String userPhoneNumber; diff --git a/me/day05/practice/Users.java b/me/day05/practice/Users.java index 465202f..8cdbbc0 100644 --- a/me/day05/practice/Users.java +++ b/me/day05/practice/Users.java @@ -7,15 +7,12 @@ public class Users { private static final int DEFAULT_CAPACITY = 10; // Default initial capacity - private static final User[] EMPTY_USER_LIST = {}; private static User[] userList; - private static Users usersInstance; private int size; - private int capacity; Users(){ @@ -109,6 +106,5 @@ public static void main(String[] args) { System.out.println(userA); System.out.println(copyA); - } } From b4110f8f332ed526d5c3265fba6c3c0c85ab1db3 Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Mon, 17 Apr 2023 21:46:40 +0900 Subject: [PATCH 03/11] =?UTF-8?q?refactor:=20change=20method=20replaceAll(?= =?UTF-8?q?)=20to=20replace()=20=ED=9A=A8=EC=9C=A8=EC=A0=81=EC=9D=B8=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=EB=A1=9C=20=EC=82=AC=EC=9A=A9=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=EB=B3=80=EA=B2=BD=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=9E=90=EB=A3=8C:=20https://yeonyeon.tistory.com/294?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/Electronic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/me/day05/practice/Electronic.java b/me/day05/practice/Electronic.java index d5d33ad..2184b1c 100644 --- a/me/day05/practice/Electronic.java +++ b/me/day05/practice/Electronic.java @@ -38,7 +38,7 @@ private void setDateOfMade(){ private void setProductNo(){ if (registrationNo >= 10000) setRegistrationNo(); - productNo = dateOfMade + String.format("%4d", registrationNo).replaceAll(" ", "0"); + productNo = dateOfMade + String.format("%4d", registrationNo).replace(" ", "0"); } private void setRegistrationNo(){ From c4d5d74e56659432cf8f92bec424c13155de99ca Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Fri, 21 Apr 2023 14:26:36 +0900 Subject: [PATCH 04/11] =?UTF-8?q?refactor:=20Electonic=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=ED=95=98=EB=93=9C=EC=BD=94=EB=94=A9=20?= =?UTF-8?q?=EB=B6=80=20=EB=B3=80=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/Electronic.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/me/day05/practice/Electronic.java b/me/day05/practice/Electronic.java index 2184b1c..e954f24 100644 --- a/me/day05/practice/Electronic.java +++ b/me/day05/practice/Electronic.java @@ -10,6 +10,8 @@ public class Electronic { enum CompanyName { SAMSUNG, LG, APPLE } enum AuthMethod { FINGERPRINT, PIN, PATTERN, FACE } + private static final int MAX_REGISTRATION_NUMBER = 9999; + private static int registrationNo; private String productNo; @@ -37,12 +39,12 @@ private void setDateOfMade(){ } private void setProductNo(){ - if (registrationNo >= 10000) setRegistrationNo(); + if (registrationNo >= MAX_REGISTRATION_NUMBER) setRegistrationNo(); productNo = dateOfMade + String.format("%4d", registrationNo).replace(" ", "0"); } private void setRegistrationNo(){ - registrationNo %= 10000; + registrationNo = 1; } public boolean isContainAuthMethod(AuthMethod authMethod){ From 8335a7a37e237c180d4f1b8f582670d543ab1826 Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Fri, 21 Apr 2023 14:31:43 +0900 Subject: [PATCH 05/11] =?UTF-8?q?refactor:=20Electonic=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EB=A9=94=EC=84=9C=EB=93=9C=EB=AA=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20setRegistrationNo=20->=20resetRegistration?= =?UTF-8?q?No?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/Electronic.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/me/day05/practice/Electronic.java b/me/day05/practice/Electronic.java index e954f24..ac45932 100644 --- a/me/day05/practice/Electronic.java +++ b/me/day05/practice/Electronic.java @@ -39,11 +39,11 @@ private void setDateOfMade(){ } private void setProductNo(){ - if (registrationNo >= MAX_REGISTRATION_NUMBER) setRegistrationNo(); + if (registrationNo >= MAX_REGISTRATION_NUMBER) resetRegistrationNo(); productNo = dateOfMade + String.format("%4d", registrationNo).replace(" ", "0"); } - private void setRegistrationNo(){ + private void resetRegistrationNo(){ registrationNo = 1; } From 8c81625a490ce8365003e2b65b83d60c55b60dfb Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Fri, 21 Apr 2023 15:09:21 +0900 Subject: [PATCH 06/11] =?UTF-8?q?refactor:=20list=EB=A5=BC=20=EB=B0=B0?= =?UTF-8?q?=EC=97=B4=EB=A1=9C=20=EB=B3=80=EA=B2=BD=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EC=9C=A0=ED=8B=B8=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EC=A0=9C=EB=84=A4=EB=A6=AD=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B2=94=EC=9A=A9=EC=84=B1=EC=9D=84=20=EC=A6=9D=EA=B0=80?= =?UTF-8?q?=EC=8B=9C=ED=82=A4=EB=A0=A4=20=ED=96=88=EC=A7=80=EB=A7=8C=20?= =?UTF-8?q?=EC=8B=A4=ED=8C=A8!,,=20ClassCastException=20=EB=B0=9C=EC=83=9D?= =?UTF-8?q?=20List=20->=20Electronic[]=20=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EB=8A=94=20=EC=9C=A0=ED=8B=B8=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/ArrayUtil.java | 15 +++++++++++++++ me/day05/practice/ElectronicArrayUtil.java | 15 +++++++++++++++ me/day05/practice/Electronics.java | 16 ++++------------ 3 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 me/day05/practice/ArrayUtil.java create mode 100644 me/day05/practice/ElectronicArrayUtil.java diff --git a/me/day05/practice/ArrayUtil.java b/me/day05/practice/ArrayUtil.java new file mode 100644 index 0000000..e61a3a4 --- /dev/null +++ b/me/day05/practice/ArrayUtil.java @@ -0,0 +1,15 @@ +package me.day05.practice; + +import java.util.List; + +public class ArrayUtil { + + static T[] listToArray(List list) { + T[] resultArray = (T[]) new Object[list.size()]; + + for (int i = 0; i < resultArray.length; i++) + resultArray[i] = list.get(i); + + return resultArray; + } +} diff --git a/me/day05/practice/ElectronicArrayUtil.java b/me/day05/practice/ElectronicArrayUtil.java new file mode 100644 index 0000000..1e0267c --- /dev/null +++ b/me/day05/practice/ElectronicArrayUtil.java @@ -0,0 +1,15 @@ +package me.day05.practice; + +import java.util.List; + +public class ElectronicArrayUtil { + + static Electronic[] listToArray(List list) { + Electronic[] resultArray = new Electronic[list.size()]; + + for (int i = 0; i < resultArray.length; i++) + resultArray[i] = list.get(i); + + return resultArray; + } +} diff --git a/me/day05/practice/Electronics.java b/me/day05/practice/Electronics.java index 5fb20a3..3263fc0 100644 --- a/me/day05/practice/Electronics.java +++ b/me/day05/practice/Electronics.java @@ -37,7 +37,6 @@ public Optional findByProductNo(String productNo){ // TODO: 3. 전자제품들 중 인자로 주어진 제조 회사를 찾아서 하나의 배열에 반환하는 함수를 작성하시오. public Optional groupByCompanyName(CompanyName company){ - Electronic[] companyNameGroup = null; List temp = new ArrayList<>(); @@ -46,11 +45,8 @@ public Optional groupByCompanyName(CompanyName company){ if (electronic != null && electronic.getCompanyName().equals(company)) temp.add(electronic); - if (!temp.isEmpty()) { - companyNameGroup = new Electronic[temp.size()]; - for (int i = 0; i < companyNameGroup.length; i++) - companyNameGroup[i] = temp.get(i); - } + Electronic[] companyNameGroup = + temp.isEmpty() ? null : ElectronicArrayUtil.listToArray(temp); return Optional.ofNullable(companyNameGroup); } @@ -65,7 +61,6 @@ public Optional findByCompanyName(CompanyName company){ // TODO: 4. 전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성하시오. public Optional groupByAuthMethod(AuthMethod authMethod){ - Electronic[] authMethodNameGroup = null; List temp = new ArrayList<>(); @@ -74,11 +69,8 @@ public Optional groupByAuthMethod(AuthMethod authMethod){ if (electronic != null && electronic.isContainAuthMethod(authMethod)) temp.add(electronic); - if (!temp.isEmpty()) { - authMethodNameGroup = new Electronic[temp.size()]; - for (int i = 0; i < authMethodNameGroup.length; i++) - authMethodNameGroup[i] = temp.get(i); - } + Electronic[] authMethodNameGroup = + temp.isEmpty() ? null : ElectronicArrayUtil.listToArray(temp); return Optional.ofNullable(authMethodNameGroup); } From 82a97194bf6af0072b508b5784c6fb80afed8369 Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Fri, 21 Apr 2023 17:44:16 +0900 Subject: [PATCH 07/11] =?UTF-8?q?refactor:=20setProductNo()=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=20registrationNo=20=EC=B2=B4=ED=81=AC=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=B6=80=EB=93=B1=ED=98=B8=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/Electronic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/me/day05/practice/Electronic.java b/me/day05/practice/Electronic.java index ac45932..221b559 100644 --- a/me/day05/practice/Electronic.java +++ b/me/day05/practice/Electronic.java @@ -39,7 +39,7 @@ private void setDateOfMade(){ } private void setProductNo(){ - if (registrationNo >= MAX_REGISTRATION_NUMBER) resetRegistrationNo(); + if (registrationNo > MAX_REGISTRATION_NUMBER) resetRegistrationNo(); productNo = dateOfMade + String.format("%4d", registrationNo).replace(" ", "0"); } From b532bf11549bd2cb2fddfb9096445ee8213dde6c Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Fri, 21 Apr 2023 20:56:03 +0900 Subject: [PATCH 08/11] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=EB=B0=98=EC=98=81=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8,?= =?UTF-8?q?=20main=20=EB=A9=94=EC=84=9C=EB=93=9C,=20=EC=9C=A0=ED=8B=B8=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=82=AD=EC=A0=9C=20=EC=9C=A0?= =?UTF-8?q?=ED=8B=B8=EC=84=B1=20=EB=A9=94=EC=84=9C=EB=93=9C=20Electronics?= =?UTF-8?q?=20=ED=81=B4=EB=9E=98=EC=8A=A4=EC=97=90=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/ArrayUtil.java | 15 ------- me/day05/practice/ElectronicArrayUtil.java | 15 ------- me/day05/practice/Electronics.java | 49 +++++++--------------- 3 files changed, 14 insertions(+), 65 deletions(-) delete mode 100644 me/day05/practice/ArrayUtil.java delete mode 100644 me/day05/practice/ElectronicArrayUtil.java diff --git a/me/day05/practice/ArrayUtil.java b/me/day05/practice/ArrayUtil.java deleted file mode 100644 index e61a3a4..0000000 --- a/me/day05/practice/ArrayUtil.java +++ /dev/null @@ -1,15 +0,0 @@ -package me.day05.practice; - -import java.util.List; - -public class ArrayUtil { - - static T[] listToArray(List list) { - T[] resultArray = (T[]) new Object[list.size()]; - - for (int i = 0; i < resultArray.length; i++) - resultArray[i] = list.get(i); - - return resultArray; - } -} diff --git a/me/day05/practice/ElectronicArrayUtil.java b/me/day05/practice/ElectronicArrayUtil.java deleted file mode 100644 index 1e0267c..0000000 --- a/me/day05/practice/ElectronicArrayUtil.java +++ /dev/null @@ -1,15 +0,0 @@ -package me.day05.practice; - -import java.util.List; - -public class ElectronicArrayUtil { - - static Electronic[] listToArray(List list) { - Electronic[] resultArray = new Electronic[list.size()]; - - for (int i = 0; i < resultArray.length; i++) - resultArray[i] = list.get(i); - - return resultArray; - } -} diff --git a/me/day05/practice/Electronics.java b/me/day05/practice/Electronics.java index 3263fc0..9effecb 100644 --- a/me/day05/practice/Electronics.java +++ b/me/day05/practice/Electronics.java @@ -7,7 +7,6 @@ public class Electronics { - private static final int DEFAULT_CAPACITY = 10; // Default initial capacity private static final Electronic[] EMPTY_ELECTRONIC_LIST = {}; private static Electronic[] electronicList; @@ -16,7 +15,7 @@ public class Electronics { private int size; private int capacity; - Electronics(){ + private Electronics(){ electronicList = EMPTY_ELECTRONIC_LIST; } @@ -41,12 +40,11 @@ public Optional groupByCompanyName(CompanyName company){ List temp = new ArrayList<>(); for (Electronic electronic : electronicList) - // 테스트용 임시 조건 ( electronic != null ) - if (electronic != null && electronic.getCompanyName().equals(company)) + if (electronic.getCompanyName().equals(company)) temp.add(electronic); Electronic[] companyNameGroup = - temp.isEmpty() ? null : ElectronicArrayUtil.listToArray(temp); + temp.isEmpty() ? null : listToArray(temp); return Optional.ofNullable(companyNameGroup); } @@ -65,16 +63,24 @@ public Optional groupByAuthMethod(AuthMethod authMethod){ List temp = new ArrayList<>(); for (Electronic electronic : electronicList) - // 테스트용 임시 조건 ( electronic != null ) - if (electronic != null && electronic.isContainAuthMethod(authMethod)) + if (electronic.isContainAuthMethod(authMethod)) temp.add(electronic); Electronic[] authMethodNameGroup = - temp.isEmpty() ? null : ElectronicArrayUtil.listToArray(temp); + temp.isEmpty() ? null : listToArray(temp); return Optional.ofNullable(authMethodNameGroup); } + private Electronic[] listToArray(List list){ + Electronic[] array = new Electronic[list.size()]; + + for (int i = 0; i < array.length; i++) + array[i] = list.get(i); + + return array; + } + public int getSize() { return size; } @@ -110,31 +116,4 @@ public String toString() { ", capacity=" + capacity + ", electronicList= " + Arrays.toString(electronicList) + " }"; } - - //==================================== TEST CODE ====================================// - public void add (Electronic electronic) { - if (electronicList == EMPTY_ELECTRONIC_LIST) - electronicList = new Electronic[DEFAULT_CAPACITY]; - /* 배열 크기 체크하고 늘리는 로직 구현 할 것 */ - electronicList[size++] = electronic; - } - - public static void main(String[] args) { - Electronic iPhone13 = new Electronic("아이폰13", CompanyName.APPLE, new AuthMethod[]{AuthMethod.FACE, AuthMethod.PIN, AuthMethod.PATTERN}); - Electronic iPhone12 = new Electronic("아이폰12", CompanyName.APPLE, new AuthMethod[]{AuthMethod.FACE, AuthMethod.PIN, AuthMethod.PATTERN}); - Electronic galaxyS22 = new Electronic("갤럭시S22", CompanyName.SAMSUNG, new AuthMethod[]{AuthMethod.FINGERPRINT, AuthMethod.PIN, AuthMethod.PATTERN}); - - Electronics electronics = getInstance(); - electronics.add(iPhone13); - electronics.add(iPhone12); - electronics.add(galaxyS22); - -// System.out.println(electronics); - - Optional authMethodGroupPIN = electronics.groupByAuthMethod(AuthMethod.FACE); - authMethodGroupPIN.ifPresent(value -> System.out.println(Arrays.toString(value))); - - Optional companyNameGroupAPPLE = electronics.groupByCompanyName(CompanyName.SAMSUNG); - companyNameGroupAPPLE.ifPresent(value -> System.out.println(Arrays.toString(value))); - } } From 9b83298ca848c2e28b2d1d9ab3686e4690dd13b8 Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Fri, 21 Apr 2023 21:14:29 +0900 Subject: [PATCH 09/11] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=EB=B0=98=EC=98=81(Electronic)=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD=20isContain?= =?UTF-8?q?AuthMethod=20->=20isContainsAuthMethod=20(=EC=B5=9C=EB=8C=80?= =?UTF-8?q?=ED=95=9C=20=EB=AC=B8=EB=B2=95=EC=9D=84=20=EC=A7=80=ED=82=A4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=85=B8=EB=A0=A5=ED=95=98=EC=9E=90)=20re?= =?UTF-8?q?setRegistrationNo()=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20(=EA=B0=80=EB=8F=85=EC=84=B1=EA=B3=BC=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A7=91=EC=A4=91=ED=99=94=EB=A5=BC=20=EA=B3=A0?= =?UTF-8?q?=EB=A0=A4=ED=95=B4=EB=B3=B4=EC=9E=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/Electronic.java | 8 ++------ me/day05/practice/Electronics.java | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/me/day05/practice/Electronic.java b/me/day05/practice/Electronic.java index 221b559..54aa545 100644 --- a/me/day05/practice/Electronic.java +++ b/me/day05/practice/Electronic.java @@ -39,15 +39,11 @@ private void setDateOfMade(){ } private void setProductNo(){ - if (registrationNo > MAX_REGISTRATION_NUMBER) resetRegistrationNo(); + if (registrationNo > MAX_REGISTRATION_NUMBER) registrationNo = 1; productNo = dateOfMade + String.format("%4d", registrationNo).replace(" ", "0"); } - private void resetRegistrationNo(){ - registrationNo = 1; - } - - public boolean isContainAuthMethod(AuthMethod authMethod){ + public boolean isContainsAuthMethod(AuthMethod authMethod){ for (AuthMethod auth : this.authMethod) if (authMethod.equals(auth)) return true; return false; diff --git a/me/day05/practice/Electronics.java b/me/day05/practice/Electronics.java index 9effecb..22986a5 100644 --- a/me/day05/practice/Electronics.java +++ b/me/day05/practice/Electronics.java @@ -63,7 +63,7 @@ public Optional groupByAuthMethod(AuthMethod authMethod){ List temp = new ArrayList<>(); for (Electronic electronic : electronicList) - if (electronic.isContainAuthMethod(authMethod)) + if (electronic.isContainsAuthMethod(authMethod)) temp.add(electronic); Electronic[] authMethodNameGroup = From 0fce5ad6d0f1e41c3caaa2dbadb4dd064c19f41c Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Fri, 21 Apr 2023 21:18:19 +0900 Subject: [PATCH 10/11] =?UTF-8?q?style:=20=EC=BD=94=EB=93=9C=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=EB=B0=98=EC=98=81(User)=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EA=B0=9C=ED=96=89=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/User.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/me/day05/practice/User.java b/me/day05/practice/User.java index 959bd93..527500e 100644 --- a/me/day05/practice/User.java +++ b/me/day05/practice/User.java @@ -15,7 +15,6 @@ public class User { private LocalDate registerTime; User() { - setRegisterTime(); } @@ -95,15 +94,6 @@ public LocalDate getRegisterTime() { return registerTime; } -// private void validatePhoneNumberFormat(String userPhoneNumber){} -// private String formatPhoneNumber(String userPhoneNumber){ validatePhoneNumberFormat(userPhoneNumber) } -// -// private void validateUserEmailFormat(String userPhoneNumber){} -// private String formatUserEmail(String userPhoneNumber){ validateUserEmailFormat(String userPhoneNumber) } -// -// private void validateUserBirthDateFormat(String userBirthDate){} -// private String formatUserBirthDate(String userBirthDate){ validateUserBirthDateFormat(String userBirthDate) } - @Override public int hashCode() { return Objects.hash(userId, userPassword, userEmail, userBirthDate, Arrays.hashCode(electronicDevice), registerTime); From fbec7c07a48e7fc915b41e720c9647ba35fda275 Mon Sep 17 00:00:00 2001 From: hyunsb <96504592+hyunsb@users.noreply.github.com> Date: Fri, 21 Apr 2023 21:20:14 +0900 Subject: [PATCH 11/11] =?UTF-8?q?style:=20=EC=BD=94=EB=93=9C=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=EB=B0=98=EC=98=81(Users)=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EC=9E=90=EC=9D=98=20=EC=A0=91=EA=B7=BC=EC=A0=9C=EC=96=B4?= =?UTF-8?q?=EC=9E=90=20=EB=B3=80=EA=B2=BD=20(=EC=9D=B5=EC=88=99=ED=95=9C?= =?UTF-8?q?=20=EA=B2=83=EC=97=90=EC=84=9C=20=EC=8B=A4=EC=88=98=EA=B0=80=20?= =?UTF-8?q?=EB=82=98=EC=98=A8=EB=8B=A4=20=EB=8B=A4=EC=8B=9C=20=ED=95=9C=20?= =?UTF-8?q?=EB=B2=88=20=ED=99=95=EC=9D=B8=ED=95=98=EC=9E=90)=20=EB=B6=88?= =?UTF-8?q?=ED=95=84=EC=9A=94=ED=95=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=9C=84=EC=A3=BC=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/Users.java | 34 +--------------------------------- 1 file changed, 1 insertion(+), 33 deletions(-) diff --git a/me/day05/practice/Users.java b/me/day05/practice/Users.java index 8cdbbc0..92fc998 100644 --- a/me/day05/practice/Users.java +++ b/me/day05/practice/Users.java @@ -15,7 +15,7 @@ public class Users { private int size; private int capacity; - Users(){ + private Users(){ userList = EMPTY_USER_LIST; } @@ -75,36 +75,4 @@ public String toString() { ", capacity=" + capacity + ", userList= " + Arrays.toString(userList) + " }"; } - - //==================================== TEST CODE ====================================// - public void add (User user) { - if (userList == EMPTY_USER_LIST) - userList = new User[DEFAULT_CAPACITY]; - /* 배열 크기 체크하고 늘리는 로직 구현 할 것 */ - userList[size++] = user; - } - - public static void main(String[] args) { - User userA = new User("A", "aaa", "aaaa", "aaa@aaa.com", "aaa", new Electronic[]{new Electronic()}); - User userB = new User("B", "bbb", "bbbb", "bbb@bbb.com", "bbb", new Electronic[]{new Electronic()}); - User userC = new User("C", "ccc", "cccc", "ccc@ccc.com", "ccc", new Electronic[]{new Electronic()}); - - Users userList = getInstance(); - userList.add(userA); - userList.add(userB); - userList.add(userC); - - System.out.println("findByID test"); - Optional a = userList.findById("A"); - a.ifPresent(System.out::println); - System.out.println(); - - - System.out.println("deep copy Test"); - User copyA = userList.copy(userA); - copyA.setUserId("AA"); - - System.out.println(userA); - System.out.println(copyA); - } }