diff --git a/src/me/day05/practice/Practice01/AuthMethod.java b/src/me/day05/practice/Practice01/AuthMethod.java new file mode 100644 index 0000000..9f9d514 --- /dev/null +++ b/src/me/day05/practice/Practice01/AuthMethod.java @@ -0,0 +1,9 @@ +package me.day05.practice.Practice01; + +//본인인증 방법 — Enum형으로 정의 +public enum AuthMethod { + 지문인증, + 패턴인증, + 핀인증, + 얼굴인증 +} diff --git a/src/me/day05/practice/Practice01/CompanyName.java b/src/me/day05/practice/Practice01/CompanyName.java new file mode 100644 index 0000000..cb292c0 --- /dev/null +++ b/src/me/day05/practice/Practice01/CompanyName.java @@ -0,0 +1,8 @@ +package me.day05.practice.Practice01; + +//제조회사명 — Enum형으로 정의 +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..d57a1d9 --- /dev/null +++ b/src/me/day05/practice/Practice01/Electronic.java @@ -0,0 +1,104 @@ +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 CompanyName companyName; + private LocalDate dateOfMade; + private AuthMethod[] authMethod; // 본인인증 방법 — 배열로 정의 + + private static int orderNum = 0; + + public Electronic(String modelName, CompanyName companyName, LocalDate dateOfMade, AuthMethod[] authMethod) { + orderNum++; + this.productNo = orderProductNo(); + this.modelName = modelName; + this.companyName = companyName; + this.dateOfMade = dateOfMade; + this.authMethod = authMethod; + } + + + //ex. if 2023/03/30(now) then 230330 + 0001 (4자리 등록 순서) ⇒ 2303300001 + private String orderProductNo() { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMdd"); + String date = LocalDate.now().format(formatter); + String order_cnt = String.format("%04d", orderNum); + return date + order_cnt; + } + + + 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 LocalDate getDateOfMade() { + return dateOfMade; + } + + public void setDateOfMade(LocalDate dateOfMade) { + this.dateOfMade = dateOfMade; + } + + public AuthMethod[] getAuthMethod() { + return authMethod; + } + + public void setAuthMethod(AuthMethod[] authMethod) { + this.authMethod = authMethod; + } + + public static void setOrderNum(int orderNum) { + Electronic.orderNum = orderNum; + } + + @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; + Electronic that = (Electronic) obj; + 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 String toString() { + return "Electronic{" + + "productNo='" + productNo + '\'' + + ", modelName='" + modelName + '\'' + + ", companyName=" + companyName + + ", dateOfMade=" + dateOfMade + + ", authMethod=" + Arrays.toString(authMethod) + + '}'; + } +} + diff --git a/src/me/day05/practice/Practice01/Test.java b/src/me/day05/practice/Practice01/Test.java new file mode 100644 index 0000000..8e22b05 --- /dev/null +++ b/src/me/day05/practice/Practice01/Test.java @@ -0,0 +1,24 @@ +package me.day05.practice.Practice01; + +import java.time.LocalDate; + +public class Test { + public static void main(String[] args) { + //checking electronic + Electronic device1 = new Electronic("iphone13", CompanyName.APPLE, LocalDate.of(2021, 9, 1), new AuthMethod[] {AuthMethod.얼굴인증}); + Electronic device2 = new Electronic("iphone8", CompanyName.APPLE, LocalDate.of(2017, 9, 1), new AuthMethod[] {AuthMethod.지문인증}); + + System.out.println(device1); + System.out.println(device2); + /* 출력 + Electronic{productNo='2304180001', modelName='iphone13', companyName=APPLE, dateOfMade=2021-09-01, authMethods=[얼굴인증]} + Electronic{productNo='2304180002', modelName='iphone8', companyName=APPLE, dateOfMade=2017-09-01, authMethods=[지문인증]} + */ + + User user1 = new User("abc", "1234", "010-1111-2222", "abc@efg.com", "010101", new String[] {"device2"}); + System.out.println(user1); + + //출력 Users{userId='abc', userPassword='1234', userPhoneNumber='010-1111-2222', userEmail='abc@efg.com', userBirthDate='010101', electronicDevices=[device2], registerTime=2023-04-18} + + } +} diff --git a/src/me/day05/practice/Practice01/User.java b/src/me/day05/practice/Practice01/User.java new file mode 100644 index 0000000..cf9d273 --- /dev/null +++ b/src/me/day05/practice/Practice01/User.java @@ -0,0 +1,120 @@ +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(); + + } + + 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 int hashCode() { + return Objects.hash(userId, userPassword, userPhoneNumber, userEmail, userBirthDate, electronicDevices); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + User user = (User) obj; + 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); + } + + @Override + public String toString() { + return "Users{" + + "userId='" + userId + '\'' + + ", userPassword='" + userPassword + '\'' + + ", userPhoneNumber='" + userPhoneNumber + '\'' + + ", userEmail='" + userEmail + '\'' + + ", userBirthDate='" + userBirthDate + '\'' + + ", electronicDevices=" + Arrays.toString(electronicDevices) + + ", registerTime=" + registerTime + + '}'; + } +} + diff --git a/src/me/day05/practice/Practice02/Users.java b/src/me/day05/practice/Practice02/Users.java new file mode 100644 index 0000000..da427c4 --- /dev/null +++ b/src/me/day05/practice/Practice02/Users.java @@ -0,0 +1,69 @@ +package me.day05.practice.Practice02; +import me.day05.practice.Practice01.User; + +import java.util.Arrays; + +public class Users { + private User[] userList; + private Users() { + } + + private static Users instance = new Users(); + + //2-1 Users 클래스의 객체를 싱글톤으로 생성하는 함수를 작성 + public static Users getInstance() { + if (instance == null) { + instance = new Users(); + } + return instance; + } + + public User[] getUserList() { + return userList; + } + + public void setUserList(User[] userList) { + this.userList = userList; + } + + //2-2 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성 + public User findByUserId(String userId) { + for (User user : userList) { + if (user.getUserId().equals(userId)) { + return user; + } + } + throw new IllegalArgumentException("Not found"); + } + + //2-3 인자로 주어진 회원 정보를 깊은 복사 (deepCopy) 하는 함수를 작성 + public User copy(User original) { + User user_info = new User( + original.getUserId(), + original.getUserEmail(), + original.getUserPassword(), + original.getUserBirthDate(), + original.getUserPhoneNumber(), + original.getElectronicDevices() + ); + return user_info; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + Users users = (Users) obj; + 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/src/me/day05/practice/Practice03/Electronics.java b/src/me/day05/practice/Practice03/Electronics.java new file mode 100644 index 0000000..2026e72 --- /dev/null +++ b/src/me/day05/practice/Practice03/Electronics.java @@ -0,0 +1,86 @@ +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.util.Arrays; +import java.util.ArrayList; +import java.util.List; + +public class Electronics { + private static Electronic[] electronicList; + private Electronics() { + } + + private static Electronics instance; + + //3-1 Electronics 클래스의 객체를 싱글톤으로 생성하는 함수를 작성 + public static Electronics getInstance() { + if (instance == null) { + instance = new Electronics(); + } + return instance; + } + + public static Electronic[] getElectronicList() { + return electronicList; + } + + public static void setElectronicList(Electronic[] electronicList) { + Electronics.electronicList = electronicList; + } + + //3-2 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성 + public Electronic findByProductNo(String productNo) { + for (Electronic electronic : electronicList) { + if (electronic.getProductNo().equals(productNo)) { + return electronic; + } + } + throw new IllegalArgumentException("Not found"); + } + + //3-3 제조 회사를 찾아서 하나의 배열에 반환하는 함수를 작성 + public Electronic[] groupByCompanyName(CompanyName company) { + List electronics = new ArrayList<>(); + for (Electronic electronic : electronicList) { + if (electronic.getCompanyName().equals(company)) { + electronics.add(electronic); + } + } + + return electronics.toArray(new Electronic[electronics.size()]); + } + + + //3-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()])); + } + + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + Electronics electronics = (Electronics) obj; + return Arrays.equals(electronicList, electronics.electronicList); + } + + @Override + public int hashCode() { + return Arrays.hashCode(electronicList); + } + + @Override + public String toString() { + return "{" + "userList=" + Arrays.toString(electronicList) + "}"; + } +} \ No newline at end of file