๐ 2023๋ 12์ 26์ผ
[java 15์ผ์ฐจ]
- Local[Date,Time,DateTime]
LocalDate birthDay = LocalDate.of(1980 ,2, 19); LocalTime birthTime = LocalTime.of(2,2,19); LocalDateTime birthDayTime = LocalDateTime.of(birthDay,birthTime); // ํฌ๋ก๋ ธํ๋ enum ํ์ ์ฌ์ฉ : ๋งค๊ฐ๋ณ์๋ก ํฌ๋ก๋ ธํ๋๋ฅผ ๋ฐ์ ํํธ๊ทธ๋จ์ ์ ์ฐ์ฑ ํฅ์ System.out.println(birthDayTime.get(ChronoField.YEAR)); // 0 : ์ค์ , 1 : ์คํ System.out.println(birthDayTime.get(ChronoField.AMPM_OF_DAY)); LocalTime newTime = LocalTime.now(); System.out.println("ํ์ฌ ์๊ฐ์ " + (newTime.get(ChronoField.AMPM_OF_DAY) == 1 ? "์คํ " : "์ค์ ")+ " ์ ๋๋ค.");
- Generic
๋ฐ์ดํฐ ํ์ ์ ํด๋์ค ๋ด๋ถ์์ ์ง์ ํ๋ ๊ฒ์ด ์๋ ์ธ๋ถ์์ ์ฌ์ฉ์์ ์ํด ์ง์ ๋๋ ๊ฒ์ ์๋ฏธ/* ์ ๋ค๋ฆญ ๋ฉ์๋ ์์ฑ : ๋ฐํ ํ์ ์์ชฝ์ <T> ์ ๋ค๋ฆญ์ ๊ฐ์ฒด ํ์ ์ด ๋ค์ด์์ผ ํจ์ ์ ์ */ public static <T> void swap(T[] arr, int a, int b){ T temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
class GenericStudent <T> { private String name; private T age; public void setName(String name) { this.name = name; } public void setAge(T age) { this.age = age; } public String getName() { return name; } public T getAge() { return age; } public GenericStudent(String name, T age) { this.name = name; this.age = age; } @Override public String toString(){ return "์ด๋ฆ์ "+this.name +" ๋์ด๋ "+this.age; } }
- Iterator
ํ๋ก๊ทธ๋๋ฐ ๋ฐ๋ณต๊ธฐ, ์ปฌ๋ ์ ์ ์ํํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฐ์ฒด๋ก ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ ๊ณตList<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry"); for(String str : list){ System.out.println(str); } System.out.println(); Iterator<String> is = list.iterator(); while(is.hasNext()){ if(is.next().equals("banana")){ is.remove(); }
- Enum
์ด๊ฑฐ์ฒด ํด๋์ค, ํน์ ํ ๊ฐ๋ค๋ง์ ๊ฐ์ง ์ ์๋ ์ ํ๋ ๋ฐ์ดํฐ ํ์enum Role{ // ๊ฐ ์ด๊ฑฐํ ์์๋ ์ฝค๋ง๋ก ๊ตฌ๋ถํ๊ณ , ์์ ๋ชฉ๋ก ๋์๋ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๋ง๋ฌด๋ฆฌ GENERAL_USER, ADMIN_USER, SUPER_USER } class EnumStudent{ private Role role; public Role getRole() { return role; } }
/* * unchecked exception ์์ throws ๋ฅผ ํ์ง ์๋๋ผ๋ ์์ธ๋ ํธ์ถํ ๊ณณ์ผ๋ก ์ ํ * ์ด๋์ throws ๋ฅผ ํ๋ ์ด์ ๋ ๋ช ์์ ์ผ๋ก ์์ธ๊ฐ ๋ฐ์ํ ์ ์์์ ์๋ฆฌ๋ ๊ฒ์ผ ๋ฟ. * * checked exception ์ ์์ธ์ฒ๋ฆฌ๊ฐ ๊ฐ์ ๋๊ณ , ํด๋น ๋ฉ์๋์์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ ์ง throws ํตํด ํธ์ถํ ๊ณณ์ ์์ * ์ด๋ ํธ์ถํ ์ชฝ์์๋ ์์ธ์ฒ๋ฆฌ๊ฐ ๊ฐ์ ๋๋ค. */ try { System.out.println("10์"+input+"์ ๋๋๋ฉด"+num/input+"์ ๋๋ค."); // catch์๋ try ๊ตฌ๋ฌธ์์์ ๋ฐ์๊ฐ๋ฅํ ์์ธ์ฌํญ์ ์ ์ด์ผ ์ ์์ ์ผ๋ก catch๊ฐ ๋๋ค. } catch (NullPointerException e){ e.printStackTrace(); } catch (ArithmeticException e){ // e์์ ์์ธ๊ด๋ จ๋ ์ ๋ณด๋ค์ด ๋ค์ด์์. // e.getMessage()๋ login ๋ฉ์๋์์ throw new ํ ๊ณณ์์ ๋์ด์จ ๋ฉ์์ง System.out.println(e.getMessage()); System.out.println("์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค."); e.printStackTrace(); }finally { // ๋ฐ๋์ ์คํ๋์ด์ผ ํ๋ ๊ตฌ๋ฌธ ์ฝ์ }
- Entity
์๋ฃ์ ๊ตฌ์กฐ๋ก DB์ ์ ๊ทผํ๋ ๊ฐ์ฒด์ด๋ค.class Author{ private Long id; private String name; private String email; private String password; private static Long static_count = 0L; public Long getId() { return id; } public String getName() { return name; } public String getEmail() { return email; } public String getPassword() { return password; } Author( String name, String email, String password ){ static_count++; this.id = static_count; this.name = name; this.email = email; this.password = password; } }
- Controller
์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํด ์ฃผ๋ ๊ณณ์ผ๋ก Model์ด ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ฉฐ,
์์ฒญ์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ Service๋ฅผ ํธ์ถํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ง์ ๋ ๋ทฐ์ ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ค๋ค.
์ฌ์ฉํ๋ ์ด์ ๋ Controller๋ผ๋ ์ค๊ฐ ์ ์ด์๋ฅผ ๋ง๋ค์ด ๋ก๊ทธ์ธ ์๋น์ค๋ ๋ก๊ทธ์ธ ์ปจํธ๋กค๋ฌ์์, ๊ฒฐ์ ์๋น์ค๋ ๊ฒฐ์ ์ปจํธ๋กค๋ฌ์์ ์ญํ ์ ๋๋์ด ์ค๊ณํ๋ฉด ๊ฐ๋ฐ๋น์ฉ์ด๋ ์ ์ง๋ณด์๋น์ฉ์์ ์ ๋ฆฌํ ์ฅ์ ์ด ์๋ค.public class AuthorController { public static void main(String[] args) { // ๋ฉ๋ชจ๋ฆฌ DB์ ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ ๋ถ๋ถ์ repository ๋ก ๋ถ๋ฆฌ AuthorService authorService = new AuthorService(); top_loop: while (true){ Scanner sc = new Scanner(System.in); System.out.println("์ฌ์ฉํ์ค ์๋น์ค๋ ๋ฌด์์ธ๊ฐ์?"); System.out.println("1. ํ์๊ฐ์ "); System.out.println("2. ๋ก๊ทธ์ธ"); int service = sc.nextInt(); switch (service){ case 1: System.out.println("ํ์๊ฐ์ ์๋น์ค ์ ๋๋ค."); System.out.println(); sc.nextLine(); System.out.println("์ด๋ฆ์ ์ ๋ ฅํ์ธ์."); String name = sc.nextLine(); System.out.println("์ด๋ฉ์ผ์ ์ ๋ ฅํ์ธ์."); String email = sc.nextLine(); System.out.println("๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ธ์."); String password = sc.nextLine(); Author auth = new Author(name, email, password); try { authorService.register(auth); System.out.println("ํ์๊ฐ์ ์ ์ฑ๊ณตํ์ต๋๋ค."); }catch (IllegalArgumentException e){ System.out.println(e.getMessage()); } System.out.println(); break; case 2: System.out.println("๋ก๊ทธ์ธ ์๋น์ค ์ ๋๋ค."); System.out.println(); sc.nextLine(); System.out.println("๋ก๊ทธ์ธ ํ์ค Email์ ์ ๋ ฅํ์ธ์."); String login_email = sc.nextLine(); System.out.println("๋ก๊ทธ์ธ ํ์ค password๋ฅผ ์ ๋ ฅํ์ธ์."); String login_pwd = sc.nextLine(); Optional<Author> login_Author = Optional.empty(); try { login_Author = authorService.login(login_email,login_pwd); System.out.println( login_Author.get().getName()+"๋ ๋ก๊ทธ์ธ ๋์์ต๋๋ค."); } catch (IllegalArgumentException | NoSuchElementException e) { System.out.println("๋ก๊ทธ์ธ ์คํจ"); System.out.println(e.getMessage()); } break; } } } }
- Service
Controller์ ์ํด ํธ์ถ๋์ด ์ค์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๋ค.
Controller์์ ๋ฐ๋ก Repository๋ก ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ์๋ ์๋ค.
๊ทธ๋ด ๊ฒฝ์ฐ ๋น์ฆ๋์ค ๋ก์ง ์ฝ๋๊ฐ ์ปจํธ๋กค๋ฌ์ ๊ตฌํ๋์ด ์๋ ๊ฒฝ์ฐ ์ปจํธ๋กค๋ฌ๋ง๋ค ์ค๋ณต์ฝ๋๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ํ์ฅ์ฑ, ์ฌ์ฌ์ฉ์ฑ, ์ค๋ณต์ฝ๋๋ฅผ ์ ๊ฑฐ๋ฅผ ์ํด Service๋ฅผ ์ฌ์ฉํ๋ค.class AuthorService { AuthorRepository authorRepository; AuthorService(){ authorRepository = new AuthorRepository(); } void register(Author author) throws IllegalArgumentException{ // ๋ง์ฝ์ password 5์๋ฆฌ ์ดํ์ด๋ฉด ์์ธ๋ฐ์ (IllegalArgu) Optional <Author> authors = authorRepository.getAuthorByEmail(author.getEmail()); if (author.getPassword().length()>=5) { if(authors.isPresent()){ throw new IllegalArgumentException("์ด๋ฏธ ๊ฐ์ ํ์์ด ์กด์ฌํฉ๋๋ค."); }else{ authorRepository.register(author); } }else{ throw new IllegalArgumentException("๋น๋ฐ๋ฒํธ ๊ธธ์ด๊ฐ ์งง์ต๋๋ค."); } } Optional<Author> login(String email, String pwd ) throws IllegalArgumentException, NoSuchElementException { Optional <Author> author = authorRepository.getAuthorByEmail(email); if(author.isPresent()){ if(author.get().getPassword().equals(pwd)){ return author; }else{ throw new IllegalArgumentException("๋น๋ฐ๋ฒํธ๊ฐ ํ๋ ธ์ต๋๋ค."); } }else{ throw new NoSuchElementException(email+" : ์ด๋ฉ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค."); } } }
- Repository
DB์ ์ ๊ทผํ๋ ๋ฉ์๋๋ค์ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ก Service์ ์ํด ํธ์ถ๋์ด CRUD๋ฅผ ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.public class AuthorRepository { List<Author> authors; // DB ์ฐ๊ฒฐ์ด ์๋์ด ์์ด ์ผ๋จ์ Author๋ฆฌ์คํธ๋ฅผ DB ๋์ฉ์ผ๋ก ์ฌ์ฉํจ. AuthorRepository(){ authors = new ArrayList<>(); } public void register(Author author) { authors.add(author); } Optional<Author> getAuthorByEmail(String email){ for(Author author:this.authors){ if(author.getEmail().equals(email)){ return Optional.of(author); } } return Optional.empty(); } }