diff --git a/Practice01/AuthMethod.java b/Practice01/AuthMethod.java new file mode 100644 index 0000000..035616e --- /dev/null +++ b/Practice01/AuthMethod.java @@ -0,0 +1,5 @@ +package Practice01; + +public class AuthMethod { + public enum authMethod{Fingerprint, Pattern, Pin, Face}; +} diff --git a/Practice01/Company.java b/Practice01/Company.java new file mode 100644 index 0000000..f12d9f9 --- /dev/null +++ b/Practice01/Company.java @@ -0,0 +1,5 @@ +package Practice01; + +public class Company { + public enum companyName {SAMSUNG, LG, APPLE} +} diff --git a/Practice01/Electronic.java b/Practice01/Electronic.java new file mode 100644 index 0000000..adfbd7e --- /dev/null +++ b/Practice01/Electronic.java @@ -0,0 +1,78 @@ +package Practice01; + +import java.util.Arrays; +import java.util.Objects; + +public class Electronic { + private String productNo; + private String modelName; + private String dateOfMade; + + private Company companyName; + private AuthMethod[] arrAuth; + + + @Override + public String toString() { + return "Electronic{" + + "productNo='" + productNo + '\'' + + ", modelName='" + modelName + '\'' + + ", dateOfMade='" + dateOfMade + '\'' + + '}'; + } + + 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[] getArrAuth() { + return arrAuth; + } + + public void setArrAuth(AuthMethod[] arrAuth) { + this.arrAuth = arrAuth; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Electronic e = (Electronic) o; + return Objects.equals(productNo, e.productNo) && + Objects.equals(modelName, e.modelName) && + Objects.equals(dateOfMade, e.dateOfMade); + } + + @Override + public int hashCode() { + int result=Objects.hash(productNo, modelName, dateOfMade); + result=31*result+ Arrays.hashCode(arrAuth); + return result; + } +} diff --git a/Practice01/User.java b/Practice01/User.java new file mode 100644 index 0000000..a0ac22a --- /dev/null +++ b/Practice01/User.java @@ -0,0 +1,101 @@ +package Practice01; + +import java.time.LocalTime; +import java.util.ArrayList; +import java.util.Objects; + +public class User { + + String userId; + String userPassword; + String userPhoneNumber; + String userEmail; + String userBirthDate; + + ArrayList<String> electronicDevices =new ArrayList<>(); + LocalTime registertime=LocalTime.now();//현재 시간 출력 + + + + public String toString(){ + return "[User info] Id: " + userId+"PassWord: "+userPassword+"PhoneNumber: " + +userPhoneNumber+"Email: "+userEmail+"BirthDate: "+userBirthDate+ + "Registertime: "+registertime+"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 String getUserBirthDate() { + return userBirthDate; + } + + public void setUserBirthDate(String userBirthDate) { + this.userBirthDate = userBirthDate; + } + + public ArrayList<String> getElectronicDevices() { + return electronicDevices; + } + + public void setElectronicDevices(ArrayList<String> electronicDevices) { + this.electronicDevices = electronicDevices; + } + + public LocalTime getRegistertime() { + return registertime; + } + + public void setRegistertime(LocalTime registertime) { + this.registertime = registertime; + } + + @Override + public int hashCode(){ + return Objects.hash(electronicDevices, registertime, userBirthDate, userEmail, userId, userPassword, + userPhoneNumber); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + User u = (User) o; + return Objects.equals(electronicDevices, u.electronicDevices) && + Objects.equals(registertime, u.registertime)&& + Objects.equals(userBirthDate, u.userBirthDate)&& + Objects.equals(userEmail, u.userEmail)&& + Objects.equals(userId, u.userId)&& + Objects.equals(userPassword, u.userPassword)&& + Objects.equals(userPhoneNumber, u.userPhoneNumber) ; + } +} diff --git a/Practice02/Users.java b/Practice02/Users.java new file mode 100644 index 0000000..60d503a --- /dev/null +++ b/Practice02/Users.java @@ -0,0 +1,84 @@ +package Practice02; + +import Practice01.User; + +import java.util.Arrays; + +//실습2. 객체 배열 `User[] userList`를 필드로 있는 `Users` 클래스를 작성하시오. +// - 필드 - User[] userList (생성된 User 객체들을 모두 저장) +// - 메소드 - 생성자, getter(), setter(), hashCode(), equals(), toString() +public class Users { + private static User[] userslist; + private static Users singleton; + private Users(){ + userslist =new User[10]; + } + + public User[] getUserslist() { + return userslist; + } + + public void setUserslist(User[] userslist) { + this.userslist = userslist; + } + + @Override + public int hashCode() { + return Arrays.hashCode(userslist); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Users u = (Users) o; + return Arrays.equals(userslist, u.userslist); + } + + @Override + public String toString() { + String s=""; + for(int i=0;i<userslist.length;i++){ + s+=userslist[i]; + } + return s; + } + + //2-1 Users 클래스의 객체를 싱글톤으로 생성하는 함수를 작성(Double Checked Locking 방식) + + public Users getInstance(){ + if(singleton==null){ + synchronized (Users.class) { + if (singleton == null) { + singleton = new Users(); + } + } + } + return singleton; + } + + //2-2 회원 아이디 userId를 통해 인자로 주어진 회원번호에 해당하는 회원을 반환하는 함수를 작성 + public User findByUserId(String userId){ + for(int i=0; i<userslist.length;i++){ + if(userslist[i].getUserId()==userId){ + return userslist[i]; + } + } + return null; + } + + + //2-3 인자로 주어진 회원 정보를 깊은 복사 (deepCopy - '실제 값'을 새로운 메모리 공간에 복사하는 것) 하는 함수를 작성 + public User copy(User user){ + User copy =new User(); + copy.setUserId(user.getUserId()); + copy.setUserPassword(user.getUserPassword()); + copy.setUserEmail(user.getUserEmail()); + copy.setUserBirthDate(user.getUserBirthDate()); + copy.setUserPhoneNumber(user.getUserPhoneNumber()); + copy.setElectronicDevices(user.getElectronicDevices()); + copy.setRegistertime(user.getRegistertime()); + + return copy; + } +} diff --git a/Practice03/Electronics.java b/Practice03/Electronics.java new file mode 100644 index 0000000..c98be0c --- /dev/null +++ b/Practice03/Electronics.java @@ -0,0 +1,92 @@ +package Practice03; + +import Practice01.AuthMethod; +import Practice01.Company; +import Practice01.Electronic; +import Practice02.Users; + +import java.util.*; +import java.util.Arrays; + +public class Electronics { +//- 객체 배열 `Electronic[] electronicList`를 필드로 가지고 있는 `Electronics`클래스를 작성하시오. +// - 필드 - Electronic[] electronicList (생성된 Electronic 객체들을 모두 저장) +// - 메소드 - 생성자, getter(), setter(), hashCode(), equals(), toString() + private static Electronic[] electroniclist; + private Electronics singleton; + private Electronics(){ + + } + + public Electronic[] getElectroniclist() { + return electroniclist; + } + + public void setElectroniclist(Electronic[] electroniclist) { + this.electroniclist = electroniclist; + } + @Override + public int hashCode() { + return Arrays.hashCode(electroniclist); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Electronics e = (Electronics) o; + return Arrays.equals(electroniclist, e.electroniclist); + } + + @Override + public String toString() { + + return Arrays.toString(electroniclist); + } + + //3-1 Electronic 클래스의 객체를 싱글톤으로 생성하는 함수를 작성(Double Checked Locking 방식) + + public Electronics getInstance(){ + if(singleton==null){ + synchronized (Users.class) { + if (singleton == null) { + singleton = new Electronics(); + } + } + } + return singleton; + } + + //3-2 전자제품 일련번호 productNo를 통해 인자로 주어진 일련번호에 해당하는 전자제품을 반환하는 함수를 작성 + public static Electronic findByProductNo(String productNo){ + for(int i=0; i<electroniclist.length;i++){ + if(electroniclist[i].getProductNo()==productNo){ + return electroniclist[i]; + } + } + return null; + } + + //3-3 전자제품들 중 인자로 주어진 제조 회사를 찾아서 하나의 배열에 반환하는 함수를 작성 + public static List<Electronic> groupByCompanyName(Company company){ + List<Electronic> groupByCompanyNamelist =new ArrayList<>(); + for(int i=0; i<electroniclist.length;i++){ + if(electroniclist[i].getCompanyName().equals(company)){ + groupByCompanyNamelist.add(electroniclist[i]); + } + } + return groupByCompanyNamelist; + } + + //3-4 전자제품들 중 인자로 주어진 인증 방법을 찾아서 하나의 배열에 반환하는 함수를 작성 + public static List<Electronic> groupByAuthMethod(AuthMethod authMethod){ + + List<Electronic> groupByAuthMethodlist =new ArrayList<>(); + for(int i=0; i<electroniclist.length;i++){ + if(electroniclist[i].getArrAuth().equals(authMethod)){ + groupByAuthMethodlist.add(electroniclist[i]); + } + } + return groupByAuthMethodlist ; + } +}