From 8b687834b74e31250949ed8094d765fc697ed8ef Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Sat, 15 Apr 2023 13:50:11 +0900 Subject: [PATCH 01/13] .gitignore setting --- .gitignore | 30 +++++++++++++++++++++++++++ .idea/.gitignore | 34 +++++++++++++++++++++++++++++++ .idea/KDTBE5_Java_Assignment3.iml | 9 ++++++++ .idea/misc.xml | 6 ++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ 6 files changed, 93 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/KDTBE5_Java_Assignment3.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1847a1b --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Created by https://www.toptal.com/developers/gitignore/api/java +# Edit at https://www.toptal.com/developers/gitignore?templates=java + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* + +# End of https://www.toptal.com/developers/gitignore/api/java \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..60eee04 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,34 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +### Java template +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* + diff --git a/.idea/KDTBE5_Java_Assignment3.iml b/.idea/KDTBE5_Java_Assignment3.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/KDTBE5_Java_Assignment3.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..12e7bfa --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 1de6550d7408289de801d3732a8dfb690cfa7f6f Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 17 Apr 2023 04:57:41 +0900 Subject: [PATCH 02/13] Java Assignment3 upload by WooSeokLee --- .idea/KDTBE5_Java_Assignment3.iml | 4 +- .idea/misc.xml | 2 +- .idea/uiDesigner.xml | 124 ++++++++++++++++++ me/day05/practice/practice01/AuthMethod.java | 5 + me/day05/practice/practice01/Company.java | 5 + me/day05/practice/practice01/Electronic.java | 112 ++++++++++++++++ me/day05/practice/practice01/Main.java | 15 +++ me/day05/practice/practice01/User.java | 118 +++++++++++++++++ me/day05/practice/practice02/Users.java | 77 +++++++++++ me/day05/practice/practice03/Electronics.java | 89 +++++++++++++ .../KDTBE5_Java_Assignment3/.gitignore | 30 +++++ .../KDTBE5_Java_Assignment3/.idea/.gitignore | 34 +++++ .../.idea/KDTBE5_Java_Assignment3.iml | 11 ++ .../KDTBE5_Java_Assignment3/.idea/misc.xml | 6 + .../KDTBE5_Java_Assignment3/.idea/modules.xml | 8 ++ .../.idea/uiDesigner.xml | 124 ++++++++++++++++++ .../KDTBE5_Java_Assignment3/.idea/vcs.xml | 6 + .../KDTBE5_Java_Assignment3/README.md | 26 ++++ 18 files changed, 794 insertions(+), 2 deletions(-) create mode 100644 .idea/uiDesigner.xml create mode 100644 me/day05/practice/practice01/AuthMethod.java create mode 100644 me/day05/practice/practice01/Company.java create mode 100644 me/day05/practice/practice01/Electronic.java create mode 100644 me/day05/practice/practice01/Main.java create mode 100644 me/day05/practice/practice01/User.java create mode 100644 me/day05/practice/practice02/Users.java create mode 100644 me/day05/practice/practice03/Electronics.java create mode 100644 out/production/KDTBE5_Java_Assignment3/.gitignore create mode 100644 out/production/KDTBE5_Java_Assignment3/.idea/.gitignore create mode 100644 out/production/KDTBE5_Java_Assignment3/.idea/KDTBE5_Java_Assignment3.iml create mode 100644 out/production/KDTBE5_Java_Assignment3/.idea/misc.xml create mode 100644 out/production/KDTBE5_Java_Assignment3/.idea/modules.xml create mode 100644 out/production/KDTBE5_Java_Assignment3/.idea/uiDesigner.xml create mode 100644 out/production/KDTBE5_Java_Assignment3/.idea/vcs.xml create mode 100644 out/production/KDTBE5_Java_Assignment3/README.md diff --git a/.idea/KDTBE5_Java_Assignment3.iml b/.idea/KDTBE5_Java_Assignment3.iml index d6ebd48..b107a2d 100644 --- a/.idea/KDTBE5_Java_Assignment3.iml +++ b/.idea/KDTBE5_Java_Assignment3.iml @@ -2,7 +2,9 @@ - + + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 639900d..4458232 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/me/day05/practice/practice01/AuthMethod.java b/me/day05/practice/practice01/AuthMethod.java new file mode 100644 index 0000000..4e98a7f --- /dev/null +++ b/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/me/day05/practice/practice01/Company.java b/me/day05/practice/practice01/Company.java new file mode 100644 index 0000000..375bb45 --- /dev/null +++ b/me/day05/practice/practice01/Company.java @@ -0,0 +1,5 @@ +package me.day05.practice.practice01; + +public enum Company { + SAMSUNG, LG, APPLE +} diff --git a/me/day05/practice/practice01/Electronic.java b/me/day05/practice/practice01/Electronic.java new file mode 100644 index 0000000..b135ed4 --- /dev/null +++ b/me/day05/practice/practice01/Electronic.java @@ -0,0 +1,112 @@ +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 String modelName; //전자기기 모델명 + + private Company companyName; //제조회사명 + private String dateOfMade; //생산일자 + + private AuthMethod[] authMethod; //본인인증방법 , 배열로정의 + + private static int objectNo = 0; //등록된제품순서. + + public Electronic() { + objectNo++; + } + // 기본생성자 + + + public Electronic( String modelName, Company companyName, String dateOfMade, AuthMethod[] authMethod) { + objectNo++; + this.productNo = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd")) + String.format("%04d", objectNo) ; + this.modelName = modelName; + this.companyName = companyName; + this.dateOfMade = dateOfMade; + this.authMethod = authMethod; + + + } + //5개의 인자를 가지는 생성자 + + + public String getProductNo() { + return productNo; + } + + public void setProductNo(String productNo) { + this.productNo = productNo; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public Company getCompanyName() { + return companyName; + } + + public void setCompanyName(Company companyName) { + this.companyName = companyName; + } + + public String getDateOfMade() { + return dateOfMade; + } + + public void setDateOfMade(String dateOfMade) { + this.dateOfMade = dateOfMade; + } + + public AuthMethod[] getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(AuthMethod[] authMethod) { + this.authMethod = authMethod; + } + + public static int getObjectNo() { + return objectNo; + } + + public static void setObjectNo(int objectNo) { + Electronic.objectNo = objectNo; + } + + @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(authMethod, that.authMethod); + } + + @Override + public int hashCode() { + int result = Objects.hash(productNo, modelName, companyName, dateOfMade); + result = 31 * result + Arrays.hashCode(authMethod); + return result; + } + + @Override + public String toString() { + return "{" + + "productNo='" + productNo + '\'' + + ", modelName='" + modelName + '\'' + + ", companyName=" + companyName + + ", dateOfMade='" + dateOfMade + '\'' + + ", authMethod=" + Arrays.toString(authMethod) + + '}'; + } +} diff --git a/me/day05/practice/practice01/Main.java b/me/day05/practice/practice01/Main.java new file mode 100644 index 0000000..5002d14 --- /dev/null +++ b/me/day05/practice/practice01/Main.java @@ -0,0 +1,15 @@ +package me.day05.practice.practice01; + + + +public class Main { + public static void main(String[] args) { + Electronic a1 = new Electronic("javis", Electronic.CompanyName.SAMSUNG, "20000120", new Electronic.AuthMethod[]{Electronic.AuthMethod.PIN}); + System.out.println(a1.toString()); + Electronic a2 = new Electronic("havis", Electronic.CompanyName.SAMSUNG, "20000121", new Electronic.AuthMethod[]{Electronic.AuthMethod.PIN}); + System.out.println(a2.toString()); + + User m1 = new User("fallen", "page7", "010-2222-3333", "ast@gmail.com", "060220", new String[]{"hell"}); + System.out.println(m1.toString()); + } +} diff --git a/me/day05/practice/practice01/User.java b/me/day05/practice/practice01/User.java new file mode 100644 index 0000000..d4ed045 --- /dev/null +++ b/me/day05/practice/practice01/User.java @@ -0,0 +1,118 @@ +package me.day05.practice.practice01; + +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 String[] electronicDevices; //사용중인 전자제품들, 배열로 정의 + private LocalDate registerTime; //회원정보가 등록된 시스템시간, 생성시 시스템시간 자동설정. + + public User() { + this.registerTime = LocalDate.now(); + } + //기본생성자, 객체생성시 시스템시간 자동설정 + + public User(String userId, String userPassword, String userPhoneNumber, String userEmail, String userBirthDate, String[] electronicDevices) { + this.userId = userId; + this.userPassword = userPassword; + this.userPhoneNumber = userPhoneNumber; + this.userEmail = userEmail; + this.userBirthDate = userBirthDate; + this.electronicDevices = electronicDevices; + this.registerTime = LocalDate.now(); + + + + + } //7개의 멤버변수필드를 인자로 가지는 생성자 + + 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 String[] getElectronicDevices() { + return electronicDevices; + } + + public void setElectronicDevices(String[] 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 "{" + + "userId='" + userId + '\'' + + ", userPassword='" + userPassword + '\'' + + ", userPhoneNumber='" + userPhoneNumber + '\'' + + ", userEmail='" + userEmail + '\'' + + ", userBirthDate='" + userBirthDate + '\'' + + ", electronicDevices=" + Arrays.toString(electronicDevices) + + ", registerTime=" + registerTime + + '}'; + } +} diff --git a/me/day05/practice/practice02/Users.java b/me/day05/practice/practice02/Users.java new file mode 100644 index 0000000..74497c4 --- /dev/null +++ b/me/day05/practice/practice02/Users.java @@ -0,0 +1,77 @@ +package me.day05.practice.practice02; + +import me.day05.practice.practice01.User; + +import java.util.Arrays; + +public class Users { + private User[] userList; + + private Users() { + + } + + public User[] getUserList() { + return userList; + } + + //1. Users클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. + private static Users instance = new Users(); + + public static Users getInstance() { + if (instance == null) { + instance = new Users(); + } + return instance; + } + + //2. 회원아이디 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성하시오. + public User findByUserId(String userId) { + for (User user : userList) { + if (user.getUserId().equals(userId)) { + return user; + } + } + return null; + } + + //3. 인자로 주어진 회원 정보를 깊은 복사 (deepCopy) 하는 함수를 작성하시오. + public User copy(User user) { + User copyuser = new User(user.getUserId(), + user.getUserEmail(), + user.getUserPassword(), + user.getUserBirthDate(), + user.getUserPhoneNumber(), + user.getElectronicDevices()); + return copyuser; + } + + + public void setUserList(User[] userList) { + this.userList = userList; + } + + public Users(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 "{" + + "userList=" + Arrays.toString(userList) + + '}'; + } +} diff --git a/me/day05/practice/practice03/Electronics.java b/me/day05/practice/practice03/Electronics.java new file mode 100644 index 0000000..1563eb5 --- /dev/null +++ b/me/day05/practice/practice03/Electronics.java @@ -0,0 +1,89 @@ +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.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Electronics { + private Electronic[] electronicList; + + //1.Electronics 클래스의 객체를 싱글톤으로 생성하는 함수를 작성하시오. + private static Electronics instance; + private Electronics() {}; + + public static Electronics getInstance() { + if(instance == null) { + instance = new Electronics(); + } + return null; + } + + //2.전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성하시오. + public Electronic findByProductNo(String productNo){ + for(Electronic electronic : electronicList) { + if(electronic.getProductNo().equals(productNo)){ + return electronic; + } + } + return null; + } + + //3.전자제품들 중 인자로 주어진 제조 회사를 찾아서 하나의 배열에 반환하는 함수를 작성하시오. + public Electronic[] groupByCompanyName(Company company) { + List groupCompanyList = new ArrayList<>(); + for (Electronic electronic : electronicList) { + if (electronic.getCompanyName().equals(company)) { + groupCompanyList.add(electronic); + } + + } + return groupCompanyList.toArray(new Electronic[groupCompanyList.size()]); + } + + + + + //4. 전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성하시오. + public Electronic[] groupByAuthMethod(AuthMethod authMethod){ + List groupAuthList = new ArrayList<>(); + for(Electronic electronic : electronicList) { + if(electronic.getAuthMethod().equals(authMethod)) { + groupAuthList.add(electronic); + } + } + return groupAuthList.toArray((new Electronic[groupAuthList.size()])); + } + + + + 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 "{" + + "electronicList=" + Arrays.toString(electronicList) + + '}'; + } +} diff --git a/out/production/KDTBE5_Java_Assignment3/.gitignore b/out/production/KDTBE5_Java_Assignment3/.gitignore new file mode 100644 index 0000000..1847a1b --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/.gitignore @@ -0,0 +1,30 @@ +# Created by https://www.toptal.com/developers/gitignore/api/java +# Edit at https://www.toptal.com/developers/gitignore?templates=java + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* + +# End of https://www.toptal.com/developers/gitignore/api/java \ No newline at end of file diff --git a/out/production/KDTBE5_Java_Assignment3/.idea/.gitignore b/out/production/KDTBE5_Java_Assignment3/.idea/.gitignore new file mode 100644 index 0000000..60eee04 --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/.idea/.gitignore @@ -0,0 +1,34 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +### Java template +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* + diff --git a/out/production/KDTBE5_Java_Assignment3/.idea/KDTBE5_Java_Assignment3.iml b/out/production/KDTBE5_Java_Assignment3/.idea/KDTBE5_Java_Assignment3.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/.idea/KDTBE5_Java_Assignment3.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/KDTBE5_Java_Assignment3/.idea/misc.xml b/out/production/KDTBE5_Java_Assignment3/.idea/misc.xml new file mode 100644 index 0000000..4458232 --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/out/production/KDTBE5_Java_Assignment3/.idea/modules.xml b/out/production/KDTBE5_Java_Assignment3/.idea/modules.xml new file mode 100644 index 0000000..12e7bfa --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/out/production/KDTBE5_Java_Assignment3/.idea/uiDesigner.xml b/out/production/KDTBE5_Java_Assignment3/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/KDTBE5_Java_Assignment3/.idea/vcs.xml b/out/production/KDTBE5_Java_Assignment3/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/out/production/KDTBE5_Java_Assignment3/README.md b/out/production/KDTBE5_Java_Assignment3/README.md new file mode 100644 index 0000000..0dff600 --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/README.md @@ -0,0 +1,26 @@ +
+ +### 자바 과제3

+> 제출자 - 최은빈 +> 출시일 - 23.04.11. +> 제출일 - 23.04.17. + +- [Day5](https://echoiing-fastcampus.notion.site/3-49385516d4e7430da0bfb85012f22cd9) 문제를 풀어서 제출하시오. + +- 파일 이름 작성법 + - ````me.day05.practice```` 패키지 생성 + - ````Practice01, Practice02, Practice03, ...```` 클래스 생성하여 작성 +- 제출방법 + - 본인의 이름으로 ````branch````를 생성하여 ````push````후 ````pull request```` 작성 + - 예시 + - branch 이름 - ````FirstNameLastName```` + - commit 메시지 - ````Java Assignment3 upload by FirstNameLastName```` + - pull request는 본인이 하고 싶은 말이나 질문을 적어주세요. + - ````코드리뷰 빡세게 부탁드립니다.```` ````클린한 코드인지 봐주세요.```` ````이 코드의 조금 더 나은 방법이 있을까요.```` + - ````~~번 문제 풀지 못했습니다.```` ````~~번 문제 풀이 방법을 알려주시면 감사하겠습니다.```` + - ````결과는 나왔는데 맞는지 모르겠습니다.```` +- 주의사항 + - 본인 ```branch``` -> ```main branch``` PR한 상태로 제출부탁드립니다. + - ```main branch```에 본인 ```branch```의 ```commit```을 ```merge``` 하지 마시기 바랍니다. + +
From 020977765a299d67da8b590410b366f80ddb6f0f Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 17 Apr 2023 05:03:46 +0900 Subject: [PATCH 03/13] main fix --- me/day05/practice/practice01/Main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/me/day05/practice/practice01/Main.java b/me/day05/practice/practice01/Main.java index 5002d14..7d926ca 100644 --- a/me/day05/practice/practice01/Main.java +++ b/me/day05/practice/practice01/Main.java @@ -4,9 +4,9 @@ public class Main { public static void main(String[] args) { - Electronic a1 = new Electronic("javis", Electronic.CompanyName.SAMSUNG, "20000120", new Electronic.AuthMethod[]{Electronic.AuthMethod.PIN}); + Electronic a1 = new Electronic("javis", Company.SAMSUNG, "20000120", new AuthMethod[]{AuthMethod.PIN}); System.out.println(a1.toString()); - Electronic a2 = new Electronic("havis", Electronic.CompanyName.SAMSUNG, "20000121", new Electronic.AuthMethod[]{Electronic.AuthMethod.PIN}); + Electronic a2 = new Electronic("havis", Company.SAMSUNG, "20000121", new AuthMethod[]{AuthMethod.PIN}); System.out.println(a2.toString()); User m1 = new User("fallen", "page7", "010-2222-3333", "ast@gmail.com", "060220", new String[]{"hell"}); From 33f99485e5ddd9ca175cbed032ca6056b3fb87ac Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:02:25 +0900 Subject: [PATCH 04/13] fix: authMethod -> authMethods --- .idea/discord.xml | 7 +++++++ me/day05/practice/practice01/Electronic.java | 18 +++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 .idea/discord.xml diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..30bab2a --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/me/day05/practice/practice01/Electronic.java b/me/day05/practice/practice01/Electronic.java index b135ed4..cf5fd8d 100644 --- a/me/day05/practice/practice01/Electronic.java +++ b/me/day05/practice/practice01/Electronic.java @@ -13,7 +13,7 @@ public class Electronic { private Company companyName; //제조회사명 private String dateOfMade; //생산일자 - private AuthMethod[] authMethod; //본인인증방법 , 배열로정의 + private AuthMethod[] authMethods; //본인인증방법 , 배열로정의 private static int objectNo = 0; //등록된제품순서. @@ -23,13 +23,13 @@ public Electronic() { // 기본생성자 - public Electronic( String modelName, Company companyName, String dateOfMade, AuthMethod[] authMethod) { + public Electronic( String modelName, Company companyName, String dateOfMade, AuthMethod[] authMethods) { objectNo++; this.productNo = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd")) + String.format("%04d", objectNo) ; this.modelName = modelName; this.companyName = companyName; this.dateOfMade = dateOfMade; - this.authMethod = authMethod; + this.authMethods = authMethods; } @@ -69,11 +69,11 @@ public void setDateOfMade(String dateOfMade) { } public AuthMethod[] getAuthMethod() { - return authMethod; + return authMethods; } - public void setAuthMethod(AuthMethod[] authMethod) { - this.authMethod = authMethod; + public void setAuthMethod(AuthMethod[] authMethods) { + this.authMethods = authMethods; } public static int getObjectNo() { @@ -89,13 +89,13 @@ 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(authMethod, that.authMethod); + 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(authMethod); + result = 31 * result + Arrays.hashCode(authMethods); return result; } @@ -106,7 +106,7 @@ public String toString() { ", modelName='" + modelName + '\'' + ", companyName=" + companyName + ", dateOfMade='" + dateOfMade + '\'' + - ", authMethod=" + Arrays.toString(authMethod) + + ", authMethod=" + Arrays.toString(authMethods) + '}'; } } From 379895abbf88e8dfa390a92566240df58afaefd4 Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:10:03 +0900 Subject: [PATCH 05/13] refactoring : using StringBuilder instead of '+' --- me/day05/practice/practice01/Electronic.java | 8 +++++++- out/production/KDTBE5_Java_Assignment3/.idea/discord.xml | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 out/production/KDTBE5_Java_Assignment3/.idea/discord.xml diff --git a/me/day05/practice/practice01/Electronic.java b/me/day05/practice/practice01/Electronic.java index cf5fd8d..1de62ee 100644 --- a/me/day05/practice/practice01/Electronic.java +++ b/me/day05/practice/practice01/Electronic.java @@ -25,7 +25,13 @@ public Electronic() { public Electronic( String modelName, Company companyName, String dateOfMade, AuthMethod[] authMethods) { objectNo++; - this.productNo = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd")) + String.format("%04d", objectNo) ; + //this.productNo = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd")) + String.format("%04d", objectNo) ; + + StringBuilder sb = new StringBuilder(); + sb.append(LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"))); + sb.append(String.format("%04d", objectNo)); + + this.productNo = sb.toString(); this.modelName = modelName; this.companyName = companyName; this.dateOfMade = dateOfMade; diff --git a/out/production/KDTBE5_Java_Assignment3/.idea/discord.xml b/out/production/KDTBE5_Java_Assignment3/.idea/discord.xml new file mode 100644 index 0000000..30bab2a --- /dev/null +++ b/out/production/KDTBE5_Java_Assignment3/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file From 48ef16710891e1c0d0e69b80af389bda5afdf573 Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:14:03 +0900 Subject: [PATCH 06/13] fix : position change static field --- me/day05/practice/practice01/Electronic.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/me/day05/practice/practice01/Electronic.java b/me/day05/practice/practice01/Electronic.java index 1de62ee..2016302 100644 --- a/me/day05/practice/practice01/Electronic.java +++ b/me/day05/practice/practice01/Electronic.java @@ -7,6 +7,7 @@ public class Electronic { + private static int objectNo = 0; //등록된제품순서. private String productNo; //제품일련번호 private String modelName; //전자기기 모델명 @@ -15,7 +16,7 @@ public class Electronic { private AuthMethod[] authMethods; //본인인증방법 , 배열로정의 - private static int objectNo = 0; //등록된제품순서. + public Electronic() { objectNo++; From 1ca39dbfd625b7f7963e674b20a42f60623559e7 Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:24:02 +0900 Subject: [PATCH 07/13] =?UTF-8?q?=EC=B6=94=EA=B0=80:=20=EC=83=9D=EC=82=B0?= =?UTF-8?q?=EC=9D=BC=EC=9E=90=20=EA=B2=80=EC=A6=9D=20=EC=BD=94=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/practice01/Electronic.java | 21 ++++++++++++++++++++ me/day05/practice/practice01/Main.java | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/me/day05/practice/practice01/Electronic.java b/me/day05/practice/practice01/Electronic.java index 2016302..533543f 100644 --- a/me/day05/practice/practice01/Electronic.java +++ b/me/day05/practice/practice01/Electronic.java @@ -2,6 +2,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Arrays; import java.util.Objects; @@ -32,6 +33,11 @@ public Electronic( String modelName, Company companyName, String dateOfMade, Aut sb.append(LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"))); sb.append(String.format("%04d", objectNo)); + // 날짜 형식 검증 + if (!isValidDateFormat(dateOfMade)) { + dateOfMade = "20000101"; // 기본값으로 지정 + } + this.productNo = sb.toString(); this.modelName = modelName; this.companyName = companyName; @@ -42,6 +48,21 @@ public Electronic( String modelName, Company companyName, String dateOfMade, Aut } //5개의 인자를 가지는 생성자 + private boolean isValidDateFormat(String date) { + // 문자열 길이와 숫자 형식 검증 + if (date.length() != 8 || !date.matches("\\d{8}")) { + return false; + } + + // 날짜 형식 검증 + try { + LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyyMMdd")); + return true; + } catch (DateTimeParseException e) { + return false; + } + } + public String getProductNo() { return productNo; diff --git a/me/day05/practice/practice01/Main.java b/me/day05/practice/practice01/Main.java index 7d926ca..00403cd 100644 --- a/me/day05/practice/practice01/Main.java +++ b/me/day05/practice/practice01/Main.java @@ -4,7 +4,7 @@ public class Main { public static void main(String[] args) { - Electronic a1 = new Electronic("javis", Company.SAMSUNG, "20000120", new AuthMethod[]{AuthMethod.PIN}); + Electronic a1 = new Electronic("javis", Company.SAMSUNG, "", new AuthMethod[]{AuthMethod.PIN}); System.out.println(a1.toString()); Electronic a2 = new Electronic("havis", Company.SAMSUNG, "20000121", new AuthMethod[]{AuthMethod.PIN}); System.out.println(a2.toString()); From cdad27b76e06f539c140347fbbc16060f6427fb0 Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:28:43 +0900 Subject: [PATCH 08/13] fix : return instance --- me/day05/practice/practice03/Electronics.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/me/day05/practice/practice03/Electronics.java b/me/day05/practice/practice03/Electronics.java index 1563eb5..fe90b6b 100644 --- a/me/day05/practice/practice03/Electronics.java +++ b/me/day05/practice/practice03/Electronics.java @@ -18,7 +18,7 @@ public static Electronics getInstance() { if(instance == null) { instance = new Electronics(); } - return null; + return instance; } //2.전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성하시오. From 6eaa1893f368f0131075467faf678acb58a2a463 Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:31:49 +0900 Subject: [PATCH 09/13] fix : LocalDate -> LocalDateTime --- me/day05/practice/practice01/User.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/me/day05/practice/practice01/User.java b/me/day05/practice/practice01/User.java index d4ed045..7cd5b80 100644 --- a/me/day05/practice/practice01/User.java +++ b/me/day05/practice/practice01/User.java @@ -1,6 +1,7 @@ package me.day05.practice.practice01; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Arrays; import java.util.Objects; @@ -11,10 +12,10 @@ public class User { private String userEmail; //회원 이메일 private String userBirthDate; //회원의 생년월일 private String[] electronicDevices; //사용중인 전자제품들, 배열로 정의 - private LocalDate registerTime; //회원정보가 등록된 시스템시간, 생성시 시스템시간 자동설정. + private LocalDateTime registerTime; //회원정보가 등록된 시스템시간, 생성시 시스템시간 자동설정. public User() { - this.registerTime = LocalDate.now(); + this.registerTime = LocalDateTime.now(); } //기본생성자, 객체생성시 시스템시간 자동설정 @@ -25,7 +26,7 @@ public User(String userId, String userPassword, String userPhoneNumber, String u this.userEmail = userEmail; this.userBirthDate = userBirthDate; this.electronicDevices = electronicDevices; - this.registerTime = LocalDate.now(); + this.registerTime = LocalDateTime.now(); @@ -80,11 +81,11 @@ public void setElectronicDevices(String[] electronicDevices) { this.electronicDevices = electronicDevices; } - public LocalDate getRegisterTime() { + public LocalDateTime getRegisterTime() { return registerTime; } - public void setRegisterTime(LocalDate registerTime) { + public void setRegisterTime(LocalDateTime registerTime) { this.registerTime = registerTime; } From ace625c4f5326789e6c04beaf89081dd4f94362c Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:48:18 +0900 Subject: [PATCH 10/13] refactoring : use stream filter --- me/day05/practice/practice02/Users.java | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/me/day05/practice/practice02/Users.java b/me/day05/practice/practice02/Users.java index 74497c4..beaf21c 100644 --- a/me/day05/practice/practice02/Users.java +++ b/me/day05/practice/practice02/Users.java @@ -26,15 +26,24 @@ public static Users getInstance() { } //2. 회원아이디 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성하시오. +// public User findByUserId(String userId) { +// for (User user : userList) { +// if (user.getUserId().equals(userId)) { +// return user; +// } +// } +// return null; +// } + public User findByUserId(String userId) { - for (User user : userList) { - if (user.getUserId().equals(userId)) { - return user; - } - } - return null; + return Arrays.stream(userList) + .filter(user -> user.getUserId().equals(userId)) + .findFirst() + .orElse(null); } + + //3. 인자로 주어진 회원 정보를 깊은 복사 (deepCopy) 하는 함수를 작성하시오. public User copy(User user) { User copyuser = new User(user.getUserId(), From 90859e5b8a776f528b48d4d879c2012cb77d3b44 Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:49:35 +0900 Subject: [PATCH 11/13] =?UTF-8?q?=EC=A3=BC=EC=84=9D=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/practice02/Users.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/me/day05/practice/practice02/Users.java b/me/day05/practice/practice02/Users.java index beaf21c..6fe8863 100644 --- a/me/day05/practice/practice02/Users.java +++ b/me/day05/practice/practice02/Users.java @@ -25,16 +25,6 @@ public static Users getInstance() { return instance; } - //2. 회원아이디 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성하시오. -// public User findByUserId(String userId) { -// for (User user : userList) { -// if (user.getUserId().equals(userId)) { -// return user; -// } -// } -// return null; -// } - public User findByUserId(String userId) { return Arrays.stream(userList) .filter(user -> user.getUserId().equals(userId)) From 0e945f88754b0a93b6e52d72a0ba78c2843a1285 Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 17:58:17 +0900 Subject: [PATCH 12/13] =?UTF-8?q?fix=20:=20=EC=9D=B4=EC=A4=91for=EB=AC=B8?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- me/day05/practice/practice03/Electronics.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/me/day05/practice/practice03/Electronics.java b/me/day05/practice/practice03/Electronics.java index fe90b6b..672f63e 100644 --- a/me/day05/practice/practice03/Electronics.java +++ b/me/day05/practice/practice03/Electronics.java @@ -49,12 +49,15 @@ public Electronic[] groupByCompanyName(Company company) { //4. 전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성하시오. public Electronic[] groupByAuthMethod(AuthMethod authMethod){ List groupAuthList = new ArrayList<>(); - for(Electronic electronic : electronicList) { - if(electronic.getAuthMethod().equals(authMethod)) { - groupAuthList.add(electronic); + for (Electronic electronic : electronicList) { + for (AuthMethod electronicAuthMethod : electronic.getAuthMethod()) { + if (electronicAuthMethod.equals(authMethod)) { + groupAuthList.add(electronic); + break; + } } } - return groupAuthList.toArray((new Electronic[groupAuthList.size()])); + return groupAuthList.toArray(new Electronic[0]); } From e248a49ac8bec8f97264d04cb1f866b0bcf05248 Mon Sep 17 00:00:00 2001 From: WooSeok77 Date: Mon, 1 May 2023 18:04:37 +0900 Subject: [PATCH 13/13] refactoring : findProductNo(using stream filter) --- me/day05/practice/practice03/Electronics.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/me/day05/practice/practice03/Electronics.java b/me/day05/practice/practice03/Electronics.java index 672f63e..39c7624 100644 --- a/me/day05/practice/practice03/Electronics.java +++ b/me/day05/practice/practice03/Electronics.java @@ -22,15 +22,14 @@ public static Electronics getInstance() { } //2.전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성하시오. - public Electronic findByProductNo(String productNo){ - for(Electronic electronic : electronicList) { - if(electronic.getProductNo().equals(productNo)){ - return electronic; - } - } - return null; + public Electronic findByProductNo(String productNo) { + return Arrays.stream(electronicList) + .filter(electronic -> electronic.getProductNo().equals(productNo)) + .findFirst() + .orElse(null); } + //3.전자제품들 중 인자로 주어진 제조 회사를 찾아서 하나의 배열에 반환하는 함수를 작성하시오. public Electronic[] groupByCompanyName(Company company) { List groupCompanyList = new ArrayList<>();