2021. 3. 3. 20:59ใ๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/Java
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค.
์ค๋์ ๊ฐ์ฒด์งํฅ + List์ ArrayList๋ฅผ ๋ฐฐ์ด ๊ฒ์ด์์ List์ ArrayList๋ ์ปฌ๋ ์
ํ๋ ์์ํฌ์ด๊ณ ,
์ด๊ฒ์ ์ด์ฉํ๋ ์ฝ๋ ์์๋ฅผ ๋ถ์ ํด ๋ณด๋ฉด์ ๊ณต๋ถ ํด ๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!
๊ทธ๋ผ ๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค!
๐ ๊ต์ก ๊ณผ์ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ (๊ฐ์ฒด์ ์ปฌ๋ ์ list ๋ฐฐ์ด ์ฌ์ฉ)
๐ ArrayAndList02.java (Main)
package com.test.collection;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ArrayAndList02 {
// "๊ต์ก๊ณผ์ " ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ
public static void main(String[] args) {
CourseService service = new CourseService();
Scanner kb = new Scanner(System.in);
// ๊ณ์ํด์ ์คํ๋๋ค.
while(true) {
// ๋ช
๋ น(String)์ ์
๋ ฅ ๋ฐ๋๋ค
System.out.println("cmd >");
String cmd = kb.nextLine();
// ๋ช
๋ น์ ํ์ํ ์ฒ๋ฆฌ๋ฅผ service ์๊ฒ ๋๊ธด๋ค.
// ์
๋ ฅ๋ฐ์ ๋ฌธ์์ด์ด ๋ฌด์์ธ์ง ํ์ธํ๊ธฐ : ๋ฑ๋ก, ์์ , ๊ฒ์
if( cmd.equals("exit")) {// ๊ฐ์์ง ๋น๊ตํ๋ค.
break;// stop while
}
// ์์ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด๋ค...
// ๋ชฉ๋ก๋ณด๊ธฐ -> "list"
if( cmd.equals("list")) {
// ๋ณด์ฌ์ค ๋ฐ์ดํฐ๋ค์ด ์ด๋์ ์๋, ๋๊ตฌ์๊ฒ ์์ฒญํด์ผ ํ๋
String result = service.getAll();
System.out.println(result);
}
// ๋ฑ๋กํ๊ธฐ,์ถ๊ฐํ๊ธฐ
if( cmd.equals("new")) {
// form ์
๋ ฅ๋ฐ๊ธฐ
Course course = new Course();
System.out.println("๊ณผ์ ๋ช
> ");
course.setName(kb.nextLine());// ์ ์ฅํ ๋ฌธ์์ด์ ์ ๋ฌ
System.out.println("๋ถ๋ฅ๋ช
> ");
course.setCategory(kb.nextLine());
service.regist(course);
}
if( cmd.equals("search")) {
// ๊ฒ์์ด ์
๋ ฅ ๋ฐ๊ธฐ
System.out.println("๊ฒ์์ด > ");
Course course = new Course();
course.setName(kb.nextLine());
// ์๋น์ค์๊ฒ ์ ๋ฌํด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋๋ค.
List<Course> list = service.get(course);// ArrayList.get(index)
if( list != null && list.size() > 0) {
for(int i=0; i<list.size();++i) {
Course c = list.get(i);
System.out.println("("+i+")"+c.getName()+"-"+c.getCategory());
}
// ์์ ,์ญ์ ํ๋ ค๋ฉด ์ด๋ ๊ฒ? ์ ํ
System.out.println("edit or del else enter");
String sub = kb.nextLine();
if( sub.isEmpty() ) {
System.out.println("์ง๋๊ฐ๋ค.");
}else {
// ๊ณต๋ฐฑ์ด ํฌํจ๋ ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ์ชผ๊ฐ ๋ค/๋๋๋ค
String[] splited = sub.split(" ");
int idx = Integer.parseInt(splited[1]);
Course op = list.get(idx);// ์์ ๋๋ ์ญ์ ์ ๋์์ด ๋๋ ๊ฒ์ ๊บผ๋ธ๋ค
if( splited[0].equals("edit")) {
System.out.println("(์์ )๊ณผ์ ๋ช
> ");
op.setName(kb.nextLine());
System.out.println("(์์ )s๋ถ๋ฅ๋ช
> ");
op.setCategory(kb.nextLine());
}
if( splited[0].equals("del")) {
service.remove(op);
}
}
}
}
// ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ๋ชจ๋ํฐ์ ์ถ๋ ฅํ๋ค.
}
System.out.println("exit");
kb.close();
}
๐ CourseService.java
package test_210303;
import java.util.List;
// "๊ต์ก ๊ณผ์ "์ ๋ํ ์ฒ๋ฆฌ ๋ด๋น
public class CourseService {
private CourseDAO dao; // "๊ต์ก๊ณผ์ "๋ค์ด ์ ์ ๋๋ ๊ฐ์ฒด
// DAO๋ ์ฐฝ๊ณ ๊ฐ๋
์ผ๋ก ๋ฃ๊ณ , ๋นผ๋ ์ญํ ๋ง ๋ด๋น (Storage)
public CourseService() {
// ํ๋์ ํ์ํ ์ด๊ธฐํ ์์
์ ์์ฑ์๊ฐ ํ๋ค.
this.dao = new CourseDAO();
}
public String getAll() {
// ์ ์ฅ๋ Course๋ค์ ๋ชจ๋ ๋ชจ์ ํ๋์ ๋ฌธ์์ด์ ๋ง๋ ๋ค.
String s = "";
// if ( dao == null) {
// System.out.println("dao is null");
//dao์ ์๋ Course ์ ๋ณด๋ค์ ๋ฐ๋๋ค.
List<Course> list = dao.selectAll();
if ( list == null || list.size() < 1) { // list๊ฐ null์ด๊ฑฐ๋, ๊ธธ์ด๊ฐ 1๋ณด๋ค ์์ผ๋ฉด ์ฆ, 0์ด๋ฉด (Data๊ฐ ์๋ค๋ฉด)
s = "๋ฑ๋ก๋ ๊ณผ์ ์ด ์์ต๋๋ค!";
} else { // list ์์ Data๊ฐ ์๋ค๋ฉด
for ( Course c : list) { // list์ ์์์ธ Course๋ฅผ ํ๋์ฉ ๊บผ๋ด Course ์ฐธ์กฐํ ๋ณ์ c์ ๋ฃ๋๋ค.
// ๋ฌธ์์ด ์์ฑ(ํฉ์น๊ธฐ): + ์ฐ์ฐ ๋ฐฉ๋ฒ๊ณผ StringBuilder();, StringBuffer(); ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์กด์ฌ.
s += c.getName() + c.getCategory();
}
}
return s;
}
public void regist(Course course) {
// ํ์ธ, ์ถ๊ฐ์ ๋ณด๋ฅผ ๋ํ์ฌ ์ ์ฅํ ์ค๋น๋ฅผ ํด ์ค๋ค.
dao.save(course);
}
public List<Course> get(Course course) {
// TODO Auto-generated method stub
if ( course != null) {
if ( course.getName() != null && course.getName().length() > 0) {
return dao.findByName(course.getName());
}
}
return null;
}
public void remove(Course op) {
// ์ค์ Course ๋ฐ์ดํฐ๋ค์ dao ์ ์์ผ๋ฏ๋ก
dao.delete(op);
}
}
๐ CourseDAO.java
package bitcamp_210303;
import java.util.ArrayList;
import java.util.List;
// Course Info Storage
public class CourseDAO {
private List<Course> storage;
public CourseDAO() {
this.storage = new ArrayList<Course>(); // List๋ ์ธํฐํ์ด์ค๋ผ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค. ๊ทธ๋์ ๊ตฌํ์ฒด์ธ ArrayList๋ฅผ ์ฌ์ฉํด์ฃผ์ด์ผ ํ๋ค.
}
public List<Course> selectAll() {
// ํ์ฌ ์ ์ฅ๋ ๋ชจ๋ ๊ฒ์ ๋ฐํํ๊ธฐ ์ํ Method
// ์์ฑ์์ ์ํด ์ด๊ธฐํ๋ storage๋ null์ด ๋ฐํ๋ ์ผ์ ์๋ค.
return this.storage;
}
public void save(Course course) {
// List์ ์ถ๊ฐํ๋ ๋์
this.storage.add(course);
}
public List<Course> findByName(String name) {
// ๊ฒ์์์๋ ์ผ์นํ๋ ๊ฒ์ ์ฐพ์ ๊ฒ์ธ์ง, ํฌํจ๋๋ ๊ฒ์ ์ฐพ์ ๊ฒ์ธ์ง ์ ํด์ผ ํ๋ค.
// ๋ ์ค์ ๋ญ ํด์ผ ๋ ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ์ผ๋จ, ์ผ์น๋ก ๊ฐ์!
// ๊ฒ์์ ๋ฐ๋ณต์ด๋ค ๋ฐ๋ณตํ๋ ๋ฌธ์ฅ์ ๋ง๋ค๊ณ , ์์ ์กฐ๊ฑด์ ํํํ๋ค.
List<Course> result = new ArrayList<Course>();
for (Course c : storage) { // storage์์ ์๋ course๋ค์ ํ๋์ฉ ๋นผ์ c๋ณ์์ ๋ฃ๋๋ค.
if(c.getName().equals(name)) {
//๋ณต์ฌ ์์ฑ์: ํ์ฉ
// Course course = new Course();
// course.setName(c.getName()); // c๋ storage์ ์๋ ๊ฒ ํ๋๋ฅผ course๋ ์์์ ๋ฐฉ๊ธ ์์ฑํ ๊ฐ์ฒด๋ฅผ ํ๋๊ฐ์ ์ ์ฅ.
// course.setCategory(c.getCategory());
result.add(new Course(c)); // ํ์ฌ ์ด ์ฝ๋๋ Storage์ ์ ์ฅ๊ฐ์ result์ ๋ฃ๋ ๊ฒ์ด ์๋๋ค.
}
}
return result;
}
public void delete(Course op) {
this.storage.remove(op);
}
public void update(Course op) {
Course ori = this.storage.get(0);
ori.setName(op.getName());
ori.setCategory(op.getCategory());
}
}
๐ Course.java
package test_210303;
public class Course {
private String name;
private String category;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
}
๐ ์ฝ๋ ๋ถ์
์์ ์ฝ๋๋ CourseServcie๋ผ๋ ์ฐธ์กฐํ ์๋ฃํ์ service ๋ณ์์ CourseService ๊ฐ์ฒด(Class)๋ฅผ ์์ฑํด์ ๋ฃ์ด์ค๋ค๋ ์๋ฏธ์ ๋๋ค.
์ด๋ ๊ฒ ํ๊ฒ ๋๋ฉด CourseService๋ผ๋ Class๋ฅผ ํ๋ ์์ฑํด์ค์ผ ํ๋ค๋ ์ ์์ง ๋ง์ธ์!
์์ 0x100์ Memory์ ์ฃผ์๊ฐ(์ฐธ์กฐ๊ฐ)์ด๊ณ , ์ฃผ๋ํ๋์ด ์์๋ก ์ ์ด๋ ๊ฒ์์ ์ฐธ๊ณ ํ์ฌ ์ฃผ์ธ์!
๊ทธ ๋ค์ 16๋ฒ์งธ ์ค์ ๋ณด๋ฉด ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๋ฐ๊ธฐ ์ํด Scanner ํจ์๋ฅผ kb๋ณ์์ ๋ฃ์ด ์ฌ์ฉํ๊ฒ ๋ค๊ณ ํ๊ณ ์์ต๋๋ค.
while๋ฌธ์ true๊ฐ์ ์ค์ break๋ฅผ ๋ง๋์ง ์์ผ๋ฉด ํ์ํ ๋ก ๋์๊ฐ๋ ๋ฌดํ ๋ฃจํ๋ฅผ ๋ง๋ค์ด ์ค๋๋ค @_@
๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์์๊ฒ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด๋ฌ๋ผ๊ณ ์ถ๋ ฅ์ ํ๊ณ ์๊ณ , 22๋ฒ์งธ ์ค์ ์์์ ์ ๋ ฅ๊ฐ์ ๋ฐ๊ธฐ ์ํด ์ ์ธํ๋ Scanner Method๋ฅผ ๋ด๊ณ ์๋ ๋ณ์๋ฅผ nexLine Method๋ฅผ ํธ์ถํด์ ๋ฌธ์์ด์ ๋ฐ์ ๋ฌธ์์ด ์ฐธ์กฐ ํ์ ์ cmd๋ณ์์ ๋ฃ์ด์ฃผ๊ณ ์์ต๋๋ค.
25๋ฒ์งธ ์ค์ ๋ถ์ํด ๋ณด๋ฉด if๋ฌธ์ ์กฐ๊ฑด์์ผ๋ก cmd ์ฆ, ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ด ๋ฌธ์์ด exit์ ๊ฐ๋ค๋ฉด? ์ด๋ผ๊ณ ๋ฌผ์ด๋ณด๊ณ ์๋ค์!
์ด๋ ๊ฒ ๋๋ฉด 26๋ฒ์งธ break๋ฌธ์ ๋ง๋ ์์ ์ด ์ํ๋ ๋ฐ๋ณต๋ฌธ ์ฆ, while๋ฌธ์ ๋ฒ์ด๋๊ฒ ๋๊ณ , ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ ๋ฉ๋๋ค.
๋ค์ if๋ฌธ์ ๋ง๋๊ณ , ์กฐ๊ฑด์์๋ cmd ์ฆ, ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ด ๋ฌธ์์ด list์ ๊ฐ๋๊ณ ๋ฌป๊ณ ์๋ค์! ๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด? if๋ฌธ์ผ๋ก ์์ฅ! ๋ค์ด ๊ฐ๋๋ค!
32๋ฒ์งธ ์ค์ ๋ณด๋ ๋ฌธ์์ด ์ฐธ์กฐ ํ์ result ๋ณ์์ service.getAll();์ ํธ์ถํ๊ณ ์๋ค์. ์ด๊ฒ์ ๋ฌด์จ ๋ป์ด๋๋ฉด ์ฐ๋ฆฌ๊ฐ ์์์ ์ ์ธํ๋ ์ฐธ์กฐ ํ์ ๋ณ์ service๊ฐ ์์์ฃ ? ๊ทธ๊ฑธ ๋ง๋ค๋ฉด์ CourseService๋ผ๋ ๊ฐ์ฒด(Class)๊ฐ ๋ง๋ค์ด ์ง๋ค๊ณ ๋ง์ ๋๋ ธ์ต๋๋ค. ๊ทธ ๊ฐ์ฒด์์ getAll์ด๋ผ๋ Method๊ฐ ์์ ๊ฒ์ธ๋ฐ, ๊ทธ๊ฒ์ ํธ์ถํด์ ๊ทธ ๊ฐ์ result์๊ฒ ๋ฃ๊ฒ ๋ค! ๋ผ๋ ์๋ฏธ๊ฐ ๋๊ฒ ๋ค์!
๊ทธ๋ผ! getAll Method๋ฅผ ๋ง๋๋ฌ ๊ฐ๋ด์ผ ๊ฒ ์ด์!
getAll์ด๋ผ๋ Mehotd๋ public์ผ๋ก ์ ๊ทผ ์ ํ์๊ฐ ์ค์ ๋์ด ์์ผ๋ ์ด๋์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ฒ ์ง์? ์ ๊ทผ ์ ํ์๋ฅผ ์ ๋ชจ๋ฅด์ ๋ค๋ฉด [Java] ์๋ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐํธ ์์ ์๋ก๋ ์ ๊ทผ ์ ํ์ ๋ด์ฉ์ ๊ด์ฌ์ ๊ฐ์ ธ ์ฃผ์ธ์.
๊ทธ ๋ค์ ์๋ฃํ ํ์ ์ ์ฐธ์กฐํ์ธ ๋ฌธ์์ด ํ์ ์ผ๋ก ๋์ด ์๊ณ , return๊ฐ์ ์๋ค์. ์ธ์(๋งค๊ฐ๋ณ์) ์ฆ, ์ ๋ ฅ๊ฐ๋ ๋ฐ๋ก ์์ต๋๋ค.
์ด Method์ ๋ค์ด์ค๊ฒ ๋๋ฉด s๋ผ๋ ๋ฌธ์์ด ๋ณ์์ ๊ณต๋ฐฑ์ด ์ ๋ ฅ์ด ๋ฉ๋๋ค. ๊ทธ๋ผ ArrayAndList01 32๋ฒ์งธ ์ค์์ result์๋ ๊ณต๋ฐฑ์ด ๋ค์ด๊ฐ๊ฒ ๋ค์!
๊ทธ ๋ค์ ArrayAndList01dp 34๋ฒ์งธ ์ค์ด result๊ฐ ์ถ๋ ฅ๋๋ ์ง๊ธ๊น์ง ๊ณต๋ฐฑ์ด ์ถ๋ ฅ์ด ๋๊ฒ ๋ค์!
๋ค์ ์ฐ๋ฆฌ๋ if๋ฌธ์ ๋ง๋๊ฒ ๋ฉ๋๋ค.
cmd ์ฆ, ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ด new๋ผ๋ ๋ฌธ์์ด๊ณผ ๊ฐ๋๊ณ ๋ฌผ์ด๋ณด๊ณ ์๋ค์! ๋ง๋ค๋ฉด? if๋ฌธ์ผ๋ก ์์ฅ! ๋ค์ด๊ฐ๋๋ค!
39๋ฒ์งธ ์ค์ ๋ณด๋ฉด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์ด์! ์ด๋ ๊ฒ ๋๋ฉด Course๋ผ๋ Class๊ฐ ๋ ํ๋ ์์ฑ๋๊ฒ ์ง์?
service ๋ณ์๋ Course ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ๊ฐ๊ณ ์๊ฒ ๋ฉ๋๋ค. ์ฆ, ์ฐธ์กฐํ ๋ณ์๋ผ๋ ์ !
40๋ฒ์งธ ์ค์์ "๊ณผ์ ๋ช ์ ์ ๋ ฅ ํด ์ฃผ์ธ์" ๋ผ๊ณ ๋ฌป๊ณ 41๋ฒ์งธ ์ค์์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฌธ์์ด(kb.nextLine())์ course๊ฐ์ฒด์ setName Method (Setter)์๊ฒ ๋ฃ์ด์ฃผ๊ณ ์๋ ๊ฒ์ด์์! Setter์ ๋ํด์ ๋ชจ๋ฅด์ ๋ค๋ฉด [Java] ์๋ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐํธ์ ๊ด์ฌ์ ๊ฐ์ ธ ์ฃผ์ธ์!
setter๋ ์ฝ๊ฒ ๋งํด course ๊ฐ์ฒด์ ํ๋ (์ธ์คํด์ค ๋ณ์)์ ์ ๊ทผ ์ ํ์๊ฐ Private์ด๋ผ ๋ง๋ค์ด ์ค ๊ฒ์ด์์. Private๋ ๊ฐ์ Class๊ฐ ์๋๋ฉด ์ ๊ทผ์ด ๋ถ๊ฐํ๊ธฐ ๋๋ฌธ์ setter๋ฅผ ํตํด main Method์์ ๊ฐ์ ์กฐ์ ํ๊ธฐ ์ํด์ ์ฌ์ฉ ํ๋ต๋๋ค!
๊ทธ๋ผ Setter๋ฅผ ๋ง๋๋ฌ ๊ฐ๋ด์ผ ๊ฒ ์ด์!
์ญ์ private์ผ๋ก ๋์ด ์์ฃ ?
Setter, Getter ์ญ์ Method์ ๋๋ค. ์ด Setter๋ ์ธ์(๋งค๊ฐ๋ณ์) ์ฆ, ์ ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๊ณผ์ ๋ช ์ ์ ๋ ฅ๋ฐ์ ๊ทธ๊ฒ์ ์ง์ญ๋ณ์ name์๊ฒ ๋๊ฒจ์ฃผ๊ณ , ๊ทธ ์ง์ญ๋ณ์ name์ this.name ์ฆ, ์์ private์ผ๋ก ์ง์ ๋ ํ๋(์ธ์คํด์ค ๋ณ์)์๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค.
์์์๋ ์ด์ผ๊ธฐ ํ์ง๋ง, private์ผ๋ก ์ค์ ๋์ด ์์ด ์ง์ ์ฐธ์กฐ๊ฐ ๋ถ๊ฐํ๊ธฐ ๋๋ฌธ์ setter๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์์ง ๋ง์ธ์!
๊ฒฐ๊ณผ์ ์ผ๋ก ArrayAndList01์ 41๋ฒ์งธ ์ค์ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ์ด ๊ณณ course ๊ฐ์ฒด (Class)์ ํ๋ name์๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค.
๋ค์ Main Method๋ก ์์ ๋ณด๋ ์ด๋ฒ์๋ ๋ถ๋ฅ๋ช ์ ์ ๋ ฅํด๋ฌ๋ผ๊ณ ํ๋ค์ ๊ทธ๋ฆฌ๊ณ , ์์ ๋์ผํ์ง๋ง, set๊ฐ Name์ด ์๋ Category๋ก ์ ๋ฌ์ ํ๋ ๊ฒ์ด์์.
category๋ private๋ก ์ง์ ๋ ํ๋์ธ ๊ฒ ํ์ธ ํ์ จ์ฃ ? ๊ทธ๋ ๋ค๋ฉด Name๊ณผ ๋์ผํ ์ด์ ๋ก setter๋ฅผ ํธ์ถํ๊ฒ ๋ฉ๋๋ค.
์์ setName๊ณผ ๋ณ๋ฐ ๋ค๋ฅผ๊ฒ ์๋ ๊ฒ์ด์์. ์ญ์ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ์ธ์(๋งค๊ฐ๋ณ์) ์ฆ, ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ์ ์ง์ญ ๋ณ์ category์ ์ ๋ฌํ๊ณ , ๊ทธ๊ฒ์ ํ๋ category์๊ฒ ์ ๋ฌ ํด ์ฃผ๋ ๊ฒ์ด์์.
์ฌ๊ธฐ์๋ ์ฐธ์กฐํ ๋ณ์ service๊ฐ ๊ฐ๋ฅดํค๋ CourseService ๊ฐ์ฒด ์์ regist Method๋ฅผ ํธ์ถํ๋๋ฐ, ์ ๋ ฅ(์ธ์, ๋งค๊ฐ๋ณ์)๊ฐ์ผ๋ก course๋ฅผ ๋๊ฒจ ์ฃผ๋ค์. course๋ 39๋ฒ์งธ ์ค์์ ์ ์ธํ๊ณ , setName๊ณผ setCategory๋ฅผ ํ์ฌ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๋ฐ์์ผ๋, ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ณผ์ ๋ช ๊ณผ ๋ถ๋ฅ๋ช ์ ์ ๋ ฅ ๋ฐ๊ฒ ๋๊ฒ ๋ค์! ๊ทธ๋ผ regist๋ฅผ ๋ง๋๋ฌ ๊ฐ๋ด์ผ ๊ฒ ์ด์!
regist Method๋ Course ์ฐธ์กฐํ ํ์ ์ course๋ฅผ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ๊ณ ์์ด์! course๋ฅผ Main Method์์ ์ ์ธ(ArrayAndList 39๋ฒ์งธ ์ค)ํ ๋ ์๋ฃํ์ Course๋ก ํ๊ธฐ ๋๋ฌธ์ด์์! ๊ทธ๋ ๋ค๋ฉด ์ฌ๊ธฐ์๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๊ณผ์ ๋ช ๊ณผ ๋ถ๋ฅ๋ช ์ด ๋ค์ด์๋ ๊ฒ์ด๊ณ , ๊ทธ๊ฒ์ dao ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ CourseDAO์ sava Method๋ฅผ ํธ์ถํด์ ์ ๋ ฅ๊ฐ์ผ๋ก ์ฃผ๋ ๊ฒ์ด์์.
dao๋ผ๋ ๋ณ์๊ฐ ์ CourseDAO๋ฅผ ๊ฐ๋ฅดํจ๋ค๊ณ ํ๋์ง ๊ถ๊ธํ์์ง ์๋์? ๋ฐ๋ก ์ฌ๊ธฐ daoํ๋๋ฅผ ์ ์ธํ ๋, ์๋ฃํ ํ์ ์ ์ฐธ์กฐํ์ผ๋ก CourseDAO Class์ ์ฃผ์๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ์ ์ธํ ๊ฒ์ด์์.
๊ทธ๋ผ Save Method๋ฅผ ๋ง๋๋ฌ ๊ฐ๋ด์ผ๊ฒ ์ด์!
์ฌ๊ธฐ save Method๊ฐ ์๋ค์! public์ด๋ ์ด๋์๋ ํธ์ถ์ด ๊ฐ๋ฅํ ๊ฒ์ด๊ณ , void ์ฆ, ๋ฐํ๊ฐ์ ์๋ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ , ์ ๋ ฅ๊ฐ์ผ๋ก Course ์๋ฃํ ํ์ course๋ฅผ ๋ฐ๊ณ ์๋ ๊ฒ์ด์์. ๊ทธ๋ผ ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ๊น์? ๋ฐ๋ก ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ณผ์ ๋ช ๊ณผ ๋ถ๋ฅ๋ช ์ด ๋ค์ด์ค๋ ๊ฒ์ด์์.
์ด ์ ๋ ฅ๊ฐ์ด storage๋ผ๋ ํ๋๊ฐ ๊ฐ๋ฅดํค๋ add Method๋ฅผ ํธ์ถํ๋๋ฐ, ์ธ์๊ฐ์ผ๋ก ์ถ๊ณ ์๋ ๊ฒ์ด์์.
storage ํ๋๊ฐ ๊ฐ๋ฅดํค๋ ๊ณณ์ ๋ฐ๋ก List<Course>์๋ ๊ฒ์ด์์. Course๋ฅผ ์๋ฃํ์ผ๋ก ํ๋ List๋ผ๋ ๋ป์ด๊ณ , ์ด๊ฒ ์ญ์ private์ด๋ค์.
๊ทธ๋ฆฌ๊ณ , 11๋ฒ์งธ ์ค์ ๋ณด๋ฉด CourseDAO ๊ฐ์ฒด์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๋๋ฐ, ์ฌ๊ธฐ์ storage ํ๋์ ์๋ฃํ ํ์ ์ด Course์ธ ArrayList๋ฅผ ์์ฑํด์ ๋ฃ์ด์ฃผ๊ณ ์๋ ๊ฒ์ด์์. add๋ผ๋ Method๋ ์ด๋ฏธ ์๋ฐ์์ ์ ๊ณตํ๋ API๋๋๋ค. ๋ฐ๋ก ์ ์ธ ํด ์ฃผ๋ ๊ฒ์ด ์๋์์. List๋ฅผ ๋ง๋ค๋ฉด
import๋ฅผ ํด์ค์ผ ํ๊ณ , java.util.ArrayList๋ฅผ ํด์ค์ผ ํ๋๋ฐ, ์ด ์์ ๋ค์ด ์๋ ๊ฒ์ด๋๋๋ค. add๋ ๋ง ๊ทธ๋๋ก ์ถ๊ฐ๋ฅผ ํ๊ธฐ ์ํ Method๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ ๊ฒ์ด์์. ๊ทธ๋ ๋ค๋ฉด CourseDAO Class 27๋ฒ์งธ ์ค์ ๋ค์ ๋ณด๋ฉด ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ณผ์ , ๋ถ๋ฅ๋ช ์ ๋ฐ์ ์ถ๊ฐ๋ฅผ ํ๋๋ฐ, ๊ทธ๊ฑธ storage๋ผ๋ ํ๋์ ์ถ๊ฐํ๊ฒ ๋ค๋ ์๋ฏธ ์ ๋๋ค.
ํ๋ฒ๋๊ฒ ์๋ค๊ฐ๋ค ํ๋ ๊ฒ์ด์์. ์ด๋ฒ์ ๋ค์ Main์ผ๋ก ๋์์ต๋๋ค!
์ด๋ฒ์ ์ฌ์ฉ์๊ฐ ๊ฒ์์ด๋ฅผ ์ ๋ ฅ ํด ์ฃผ์ธ์์์ ๋ฐ์๋ ์ ๋ ฅ๊ฐ์ด search์ ๊ฐ๋ค๋ฉด if๋ฌธ์ผ๋ก ์์ฅ! ๋ค์ด๊ฐ๋ ๊ฒ์ด์์.
์ฐธ๊ณ ํด์ผ ํ ๊ฒ์ equals๋ ๋น๊ต ๋ฌธ์์ด์ด ์์ ํ ๊ฐ์์ผ์ง๋ง, ์ฐธ(True)๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ด์์.
51๋ฒ์งธ ์ค์ ๋ณด๋ ์ด๋ฒ์ ๊ฒ์์ด๋ฅผ ์ ๋ ฅ ํด ๋ฌ๋ผ๊ณ ํ๊ณ ์์ด์! search๋ผ๋ ๋จ์ด๋ฅผ ๋ณด๋ ๋ฌด์ธ๊ฐ ๊ฒ์์ ํ๋ ๊ณณ์ด๋ผ๋ ์์์ด ๋์ง์?
Course ์ฐธ์กฐํ ํ์ course๋ณ์์ Course ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฃ๊ณ ์์ด์! ๊ทธ๋ ๋ค๋ฉด course ๋ณ์๋ Course Class์ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๊ฒ ๋ค์?
์ฃผ์ํ ๊ฒ์ ArrayAndList01 39๋ฒ์งธ ์ค์์ ์์ฑํ ๊ฒ๊ณผ ๋ค๋ฅธ ๊ฒ์์ ๊ผญ ์ฐธ๊ณ ํด์ผ ํ๋ ๊ฒ์ด์์!
๊ทธ ๋ค์ course ๋ณ์๊ฐ ๊ฐ๋ฅดํค๊ณ ์๋ Course ๊ฐ์ฒด์ setName Method(Setter)๋ฅผ ํธ์ถํ๋๋ฐ, ์ ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด๋ฅผ ์ ๋ฌํ๊ณ ์๋ ๊ฒ์ด์์. SetName์ผ๋ก ๋ค์ ๊ฐ๋ด์ผ๊ฒ ์ด์!
์์์ ์ค๋ช ํ๋ฏ ์ด๋ฒ์๋ ๊ฒ์์ด๋ก ์ ๋ ฅ๋ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐ์์ ๊ทธ๊ฒ์ ๋ค์ ํ๋๋ก ๋ฐํํด ์ฃผ๋ ๊ฒ์ด์์!
ArrayAndList01 ์ฆ, Main Method๋ก ๋์๊ฐ๊ฒ์!
์ด๋ฒ์ 54๋ฒ์งธ ์ค์ธ ๊ฒ์ด์์. Course ์๋ฃํ ํ์ List ์๋ฃํ ๋ณ์ list์ service ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ CourseService ๊ฐ์ฒด์ get Method๋ฅผ ํธ์ถํ๋๋ฐ, ์ ๋ ฅ๊ฐ์ course๋ฅผ ์ฃผ๊ณ ์๋ ๊ฒ์ด์์. course๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด์ธ ๊ฒ ์์ผ์๋ฉด ์๋๋ ๊ฒ์ด์์!
์! ๊ทธ๋ผ get Method๋ฅผ ๋ง๋๋ฌ ๊ฐ๋ด์ผ ๊ฒ ์ด์!
์ฌ๊ธฐ get Method๋ Course ์๋ฃํ ํ์ List๋ฅผ ์๋ฃํ์ผ๋ก ๋ฐํ๊ฐ์ ๋ฑ์ด์ฃผ๊ณ ์๋ค์! ์ ๋ ฅ๊ฐ์ผ๋ก๋ Course ํ์ ๊ฐ์ ๋ฐ๊ณ ์์ต๋๋ค.
Course๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด์๋ ๊ฒ์ด์์. ๊ทธ๊ฒ์ด 46๋ฒ์งธ course ์ง์ญ ๋ณ์์ ๋ค์ด๊ฐ๊ฒ ๋๊ณ , ๊ทธ๊ฒ null์ธ์ง ์๋์ง ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํด ์ค๋๋ค. 47๋ฒ์งธ if๋ฌธ์ course๊ฐ ๊ฐ๋ฅดํค๋ Course ๊ฐ์ฒด์ getName Method(Getter)๋ฅผ ํธ์ถํ๊ณ ์๋๋ฐ, ๊ทธ ๊ฐ์ด null์ด ์๋๊ณ , getName Method์ ๊ธธ์ด๊ฐ 0๋ณด๋ค ํฌ๋ค๋ฉด ์ฆ, getName์ setName์์ ์ ๋ ฅ๋ ํ๋๊ฐ์ ๊ทธ๋๋ก ์ฝ์ด์ค๋ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ setName์ ์๋ฌด ๊ฐ์ด ์๋ค๋ฉด ์ด if๋ฌธ์ ๋ค์ด๊ฐ ์๊ฐ ์๋ ๊ฒ์ด์์. ๋ค์ ๋งํด ์ฌ์ฉ์๊ฐ ๊ฒ์์ด๋ก ์ ๋ ฅํ ๊ฐ์ด ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๊ณ ์๊ณ , ์๋ค๋ฉด dao ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ CourseDAO ๊ฐ์ฒด์ findByName Method๋ฅผ ํธ์ถํ๋๋ฐ, course๊ฐ ๊ฐ๋ฅดํค๋ Course ๊ฐ์ฒด์์ findByName Method๋ฅผ ํธ์ถํ๊ณ , ๊ทธ ์ ๋ ฅ๊ฐ์ผ๋ก course ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ Course ๊ฐ์ฒด ์์ getName Method ์ฆ, Getter์ ๊ฐ์ ์ฃผ๋ ๊ฒ์ด์์.
์๊น ์์์ setName์ผ๋ก ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด๊ฐ ๋ค์ด๊ฐ๋ค๊ณ ํ์ด์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ getName์ผ๋ก ๋์ค๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด์ธ ๊ฒ์ด์์. ๊ทธ๊ฒ์ findByName Method์ ๋ฃ๊ฒ ๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด๊ฐ ์ธ์(๋งค๊ฐ๋ณ์)๋ก ๋ค์ด์ค๊ฒ ๋๋ฉด ์ด๋ป๊ฒ ๋๋์ง ๋ด์ผ๊ฒ ์ด์!
๋จผ์ List ์์ ์๋ฃํ์ด Course๋ง ๋ฐ๋ Genneric์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ์ด์์. <์๋ฃํ ํ์ > ์ด๋ ๊ฒ ์ ํ ์๋ ๊ฒ์ Genneric์ด๋ผ๊ณ ํ๊ณ , Gennric์ ์ฐ๋ฉด ๊ทธ ์๋ฃํ๋ง ์ฌ์ฉํ๊ฒ ๋ค๋ผ๋ ์๋ฏธ๊ฐ ๋๋ค๋ ์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋ผ๋ ๊ฒ์ด์์!
์ ๊ทธ๋ผ List ์๋ฃํ ํ์ ์ธ result๋ณ์์ ArrayList ์๋ฃํ์ Course์๋ฃํ๋ง ๋ฐ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฃ๊ฒ ๋ค๋ ์๋ฏธ๋ผ๋ ๊ฒ ์์๊ฒ ์ฃ ?
์ปฌ๋ ์ ํ๋ ์์ํฌ์ ํ๋์ธ List ๋ฑ์ ๋ค์ ํฌ์คํ ์์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
36๋ฒ์งธ ์ค์ ๋ณด๋๊น for๋ฌธ์ ๋ง๋๊ณ ์์ด์! ์กฐ๊ฑด์ Course ์๋ฃํ ํ์ c ๋ณ์์ Storage ๊ฐ์ ํ๋ํ๋ ๋ฃ์ผ๋ฉด์ ๋ฐ๋ณต ํ๊ฒ ๋ค๊ณ ํ๋ For - each๋ฌธ์ ์ฌ์ฉํ๊ณ ์๋ค์! Storage๋ ๊ต์ก ๊ณผ์ ์ ๋ชจ๋ ๋ด๊ณ ์๋ ๋ณ์ ์ ๋๋ค. storage ํ๋ (์ธ์คํด์ค ๋ณ์)๋ CourseDAO Class์์ ArrayList<Course>๋ฅผ ๋ด๋ ์ฐธ์กฐํ ๋ณ์๋ก ์ด๊ธฐํ๊ฐ ๋์์ด์.
storage๋ ArrayAndList01์ 45๋ฒ์งธ ์ค์ ๋ณด๋ฉด service ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ CourseService ๊ฐ์ฒด์ regist Method๋ฅผ ํธ์ถํ๋ฉด์ course๋ผ๋ ์ ๋ ฅ๊ฐ์ ์ ๋ฌํ๊ณ ์์ด์. save Method๋ CourseDAO์ 25 ~ 29๋ฒ์งธ ์ค์ ์๋๋ฐ, ๊ทธ ๊ฐ์ ์ ๋ ฅ ๋ฐ์ storage List์ add Method๋ฅผ ํตํด course๊ฐ์ ์ ๋ ฅ์ ํด์ฃผ๊ณ ์์ต๋๋ค! ๊ทธ๋ ๋ค๋ฉด storage์ ์ ์ฅ๋๋ ๊ฐ์ course๋ผ๋ ๊ฐ์ด ๋ ๊ฒ์ด๊ณ , course๋ผ๋ ๊ฐ์ ArrayAndList01์ 41, 43๋ฒ์งธ ์ค์ ๋ณด๋ฉด ์ฌ์ฉ์์๊ฒ ๊ณผ์ ๋ช ๊ณผ ๋ถ๋ฅ๋ช ์ ์ ๋ ฅ๋ฐ์ ๊ฐ Setter์๊ฒ ์ ๋ฌํด ์ฃผ๊ณ , ๊ทธ๊ฒ์ ๊ฐ ํ๋์ ์ ์ฅ ํด ์ฃผ๊ณ ์๋ ๊ฒ์ด์์!
๊ฒฐ๊ตญ storage์ ์ฌ์ฉ์๊ฐ ๋ฑ๋กํ ๊ณผ์ ๋ช ๊ณผ ๋ถ๋ฅ๋ช ์ด ๋ค์ด์๊ฒ ์ง์? ๊ทธ๋ฆฌ๊ณ ๋์ if๋ฌธ์ ๋ง๋๊ฒ ๋ฉ๋๋ค. c๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ์ฒด๋ For๋ฌธ ์กฐ๊ฑด์์์ ์ง์ ์ ํด ์ค ๊ฒ์ด์์. ์ฆ, Course๋ฅผ ๊ฐ๋ฅดํค๊ณ ์๊ณ , Course ๊ฐ์ฒด ์์ getName Method๋ฅผ ํธ์ถํ๋๋ฐ, ๊ทธ Method๊ฐ ๊ฐ์ง ๊ฐ๊ณผ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ค์ด์จ ๊ฐ์ด ๊ฐ์์ง ํ์ธํ๊ณ ์๋ ๊ฒ์ด์์. Name ํ๋(์ธ์คํด์ค ๋ณ์)์๋ ์ฌ์ฉ์๊ฐ ๋ฑ๋กํ ๊ณผ์ ๋ช ์ด ๋ค์ด๊ฐ๊ฒ ๋์ด ์์ด์!
๊ทธ ๋์ ๋น๊ตํด์ ๊ฐ๋ค๋ฉด? result ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ ArrayList<Course>์์ add Method๋ฅผ ํธ์ถํ์ฌ Course๋ผ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ, ์ธ์ ๊ฐ์ c๋ณ์(๊ณผ์ ๋ช )๋ฅผ ์ฃผ์ด List์ ์ ์ฅํ๊ณ ์๋ ๊ฒ์ด์์. ๊ทธ๋ฆฌ๊ณ ๋์ if๋ฌธ์ด ๊ฑฐ์ง์ด๋ผ๋ฉด result๊ฐ์ ๋ฐํ ํด ์ฃผ๊ณ ์์ต๋๋ค.
๊ทธ ๋ค์์ if๋ฌธ์ ํตํด ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ด search์ธ์ง ๊ฒ์ฌํ๊ณ ์์ต๋๋ค. ๊ฒ์์ ํ๋ ๋ถ๋ถ์ด๋ผ๋ ๊ฒ์ ๋์น์ฑ ์ ์๊ฒ ์ง์?
52๋ฒ์งธ ์ค์ Course ์๋ฃํ ํ์ course ๋ณ์์ Course ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฃ์ด์ฃผ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ , course ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ Course ๊ฐ์ฒด์ setName Method๋ฅผ ํธ์ถํ๋๋ฐ, ๊ทธ Method์ ์ ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด๋ฅผ ์ ๋ฌํ๊ณ ์๋ค์!
์ฐธ๊ณ ๋ก course ๋ณ์์ Course ๊ฐ์ฒด๋ฅผ 3๋ฒ์งธ ์์ฑ ์ค์ ๋๋ค. course ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ์ฒด ์ฃผ์๋ 3๋ฒ์งธ ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
54๋ฒ์งธ ์ค์ ๋ณด๋ Course ์๋ฃํ๋ง ๋ฐ๋ List ์๋ฃํ list๋ณ์์ service ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ CourseService ๊ฐ์ฒด์ get Method๋ฅผ ํธ์ถํ๋๋ฐ, ์ธ์(๋งค๊ฐ๋ณ์) ์ฆ, ์ ๋ ฅ๊ฐ์ผ๋ก course ๊ฐ์ฒด๊ฐ ๊ฐ๋ฅดํค๋ Course ๊ฐ์ฒด์ ์๊น setName์ผ๋ก ๊ฒ์์ด๋ฅผ Nameํ๋๋ก ์ ๋ฌํ ๊ฐ์ ์ ๋ฌ ํด ์ฃผ๊ณ ๊ทธ๊ฒ์ list ๋ณ์์ ๋ด๊ณ ์์ต๋๋ค! ๊ฒฐ๊ตญ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด๊ฐ Listํ list ๋ณ์์ ๋ด๊ธด๋ค๋ ๊ฒ ์์๊ฒ ์ฃ ?
56๋ฒ์งธ ์ค์ ๋ณด๋ if๋ฌธ์ด ์๋ค์! ์กฐ๊ฑด์์ list ๊ฐ์ด null๊ฐ์ด ์๋๊ฑฐ๋, list์ ํฌ๊ธฐ๊ฐ 0๋ณด๋ค ํฌ๋ค๋ฉด ์ธ๋ฐ, List๋ ๊ฐ๋ณ๊ธธ์ด์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ํ๋ํ๋ ๋ฐฐ์ด์ด ๋์ด๋๋ค๊ณ ์๊ฐํ์๋ฉด ๋๋ ๊ฒ์ด์์. ๊ทธ ๋ง์ธ ์ฆ์จ, ์ด if๋ฌธ์ null ์ ํจ์ฑ ๊ฒ์ฌ์ ํจ๊ป ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด๊ฐ ์๋ค๋ฉด ์ด if๋ฌธ์ ํต๊ณผํ์ง ๋ชปํ๋ค๋ ์ด์ผ๊ธฐ๊ฐ ๋ฉ๋๋ค.
for๋ฌธ์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๊ฒ์ด์์. list ํฌ๊ธฐ ๋งํผ ๋๊ฒ ๋๋ค์! ๊ฒ์์ด๋ฅผ ์ผ๋ง๋ ์ ๋ ฅํ๋์ ๋ฐ๋ผ ๋ฐ๋ณต ํ์๋ ๋ฌ๋ผ์ง๊ฒ ๋๋ ๊ฒ์ด์์.
Course ์๋ฃํ c ์ฐธ์กฐ ๋ณ์์ list๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ service.get(course);์ ๊ฐ์ ๋ฃ๊ณ ์๋ ๊ฒ์ด์์! ๊ฒฐ๊ตญ ๊ฒ์์ด๋ฅผ ๋ด๋ ๋ณ์๊ฐ ๋๊ฒ ์ง์?๊ทธ๊ฒ์ i๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๊ฒ ๋ค๊ณ ํ๋ ๊ฒ์์ด๊ฐ 3๊ฐ๊ฐ ์ ์ฅ ๋์๋ค๋ฉด ์ด for๋ฌธ์ 3๋ฒ์ ๋๊ฒ์ด๊ณ , ํ๋ํ๋ ๋นผ์ c๋ณ์์ ์ ์ฅํ๊ฒ ๋๊ฒ ๋ค์! ๊ทธ๋ฐ ๋ค ์ฌ์ฉ์๊ฐ ๊ฒ์ํ ๊ณผ์ ๋ช (c.getName();)๊ณผ ๋ถ๋ฅ๋ช (c.getCategory();)์ ์ถ๋ ฅํ๊ณ ์๋ ๊ฒ์ด์์!
๊ทธ๋ฆฌ๊ณ , 61๋ฒ์งธ ์ค์์ ๋ฌป์ต๋๋ค. edit or del else enter๋ผ๊ณ ๋ฌธ์์ด ๋ณ์ sub์ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๋ฃ์ต๋๋ค. ๊ทธ๋ฐ ๋ค if๋ฌธ์ ๋ง๋๊ฒ ๋๋ค์!
sub.isEmpty() ๋ผ๊ณ ์กฐ๊ฑด์์ด ๋์ด ์๋๋ฐ, ์ด๊ฒ์ sub์ ์ ๋ ฅ๋ ๋ฌธ์์ด์ด 0์ด๋๊ณ ๋ฌป๋ ๊ฒ ์ ๋๋ค! 0์ด๋ผ๋ฉด ์ง๋๊ฐ๋ค๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ์ถ๋ ฅํ๊ฒ ๋๊ฒ ๊ณ , ์๋๋ผ๋ฉด(else) String ๋ฐฐ์ด ์ฐธ์กฐํ ๋ณ์ splited์ sub.split(" ")์ฆ, ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ์ ๋ ฅ๊ฐ์ ๊ณต๋ฐฑ์ผ๋ก ๋๋์ด์ ํน์ ๊ตฌ๋ณํด์ ๊ทธ๊ฒ์ splited ๋ณ์์ ๋ฃ๊ฒ ๋ค๋ผ๋ ์๋ฏธ๊ฐ ๋๊ฒ ์ต๋๋ค.
์ ์ํ ๋ณ์ idx์ Integer ์์ ์๋ parseInt Method๋ฅผ ํธ์ถํ๋๋ฐ, ์ธ์๊ฐ์ผ๋ก splited ๋ฌธ์์ด ๋ฐฐ์ด์ Index Number 1์ ๊ฐ์ ์ ๋ฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ Course ์๋ฃํ op๊ฐ์ฒด์ list๊ฐ ๊ฐ๊ณ ์๋ ๊ฐ๋ค์ ๊บผ๋ด๋๋ฐ, ์ธ์๊ฐ์ผ๋ก idx๋ฅผ ์ฃผ๊ณ ์๋ ๊ฒ์ด์์ idx๋ ๊ณต๋ฐฑ์ ๊ฐ์๋ฅผ ๋ด๊ณ ์๋ ๊ฑฐ ์์์ฃ ? ์ฆ, list์ ๋ค์ด๊ฐ idx๋ ๊ณต๋ฐฑ์ ๊ฐ์ ๋งํผ list์ ๊ฐ์ ๊บผ๋ด op์ ์ ์ฅํ๊ฒ ๋๊ฒ ๋ค์!
๊ทธ๋ฆฌ๊ณ ๋ง๋ if๋ฌธ! splited ๋ฌธ์์ด ๋ฐฐ์ด์ 0๋ฒ Index์ ๋ด์ฉ์ด edit๊ณผ ๊ฐ๋๊ณ ๋ฌป๊ณ ์๋ ๊ฒ์ด์์. ๋ง๋ค๋ฉด "์์ "์ด๋ผ๋ ๊ธฐ๋ฅ์ด ์๋ํ๊ฒ ๋๊ณ , ์์ ํ ๊ณผ์ ๋ช ๊ณผ ๋ถ๋ฅ๋ช ์ ์ ๋ ฅ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฐ๋ค์ op๋ผ๋ ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ Course ๊ฐ์ฒด์ ๊ณผ์ ๋ช ์ setName์ผ๋ก ๋ถ๋ฅ๋ช ์ setCategory๋ก ๋ณด๋ด ๊ฐ ํ๋์ ๊ฐ์ ์ ๋ ฅํ๊ณ , service ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ CourseService ๊ฐ์ฒด ์์ update Method๋ฅผ ํธ์ถํ๋๋ฐ, ์ ๋ ฅ๊ฐ์ผ๋ก ์์ ์ ์ํด ์ ๋ ฅ ๋ฐ์๋ ๊ณผ์ ๋ช ๊ณผ ๋ถ๋ฅ๋ช ์ ์ ๋ฌํ๊ฒ ๋ฉ๋๋ค.
์ด์ update Method๋ฅผ ๋ง๋๋ฌ ๊ฐ๋ด์ผ ๊ฒ ์ด์!
update Method๋ ์ ๋ ฅ๊ฐ์ผ๋ก Course ์๋ฃํ ํ์ op๋ฅผ ์ ๋ ฅ ๋ฐ๊ณ , ๊ทธ๊ฒ์ dao ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ CouseDAO ๊ฐ์ฒด์ update Method๋ฅผ ํธ์ถํ๋๋ฐ, ์ ๋ ฅ๊ฐ์ผ๋ก op๋ณ์๋ฅผ ์ ๋ฌํ๊ณ ์๋ ๊ฒ์ด์์. update Method๋ฅผ ๋ง๋๋ฌ ๊ฐ๋ด์ผ ๊ฒ ์ด์!
์ด Method ์ญ์ ์ ๋ ฅ๊ฐ์ผ๋ก Course ์๋ฃํ ํ์ ๊ฐ์ ๋ฐ๊ณ ์๋ ๊ฒ์ด์์. ๊ทธ๋ฆฌ๊ณ , ์์ผ๋ก ๊ฐ๋ณด๋ Course ์ฐธ์กฐ ํ์ ori ๋ณ์์ storage ํ๋์ 0๋ฒ์งธ ๊ฐ์ ๊บผ๋ด ์ ์ฅํ๋ ๊ฒ์ด์์.
ori๊ฐ ๊ฐ๋ฅดํค๋ Course ๊ฐ์ฒด์ setName Method๋ฅผ ํธ์ถํด์ ์ธ์๊ฐ์ผ๋ก op.getName ์ฆ, ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ์์ ๊ณผ์ ๋ช ์ ์ ๋ฌํด์ Course ๊ฐ์ฒด์ Name ํ๋์ ์ ์ฅํ๊ณ , setCategory๋ Category ํ๋์ ์ ์ฅํ๋ ๊ฒ์ด์์. ๋ฐํ๊ฐ์ ์์ผ๋ ๋ค์ Main์ผ๋ก ๊ฐ๋ด ๋๋ค!
if๋ฌธ์ ๋ง๋ ๊ฒ์ด์์ splited ๋ฌธ์์ด ๋ฐฐ์ด 0๋ฒ์งธ ๊ฐ์ด del๊ณผ ๊ฐ๋๊ณ ๋ฌป๊ณ ์๊ณ , ๋ง๋ค๋ฉด service ๋ณ์๊ฐ ๊ฐ๋ฅดํค๋ CourseService ๊ฐ์ฒด์ remove Method๋ฅผ ํธ์ถํด์ op๋ผ๋ ๊ฐ์ ์ ๋ฌ ํด ์ฃผ๋ ๊ฒ์ด์์.
remove Method๋ฅผ ๋ง๋๋ฌ ๊ฐ์ผ๊ฒ ์ด์!
์ ๋ฌ ๋ฐ์ ์ ๋ ฅ ๊ฐ์ ๊ฐ์ง๊ณ dao(Course DAO ๊ฐ์ฒด)์์ delete Method๋ฅผ ํธ์ถํ๊ณ ์์ด์! ์ ๊น delete๋ฅผ ๋ง๋๋ฌ ๊ฐ๋ณผ๊น์?
์ด Method๋ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ (๊ณผ์ ๋ช ๊ณผ ๋ถ๋ฅ๋ช ์ ๋ด๊ณ ์๋ op๋ณ์)๋ฅผ ๊ฐ์ง๊ณ storage ํ๋ (List<Course>)์์ ๊ฐ์ ์ญ์ ํ๊ณ ์๋ ๊ฒ์ด์์. ๋ฐํ๊ฐ์ ์์ผ๋ ์ง์ฐ๊ณ ๋ ์ ๋๋ค~
์์ 25๋ฒ์งธ ์ค์์ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ด exit์๋ค๋ฉด ์์ ์ด ์ํ๋ ๋ฐ๋ณต๋ฌธ while์ ๋น ์ ธ ๋์ ์ด ๊ณณ์ผ๋ก ๋ฐ๋ก ์ค๊ฒ ๋๋ ๊ฒ์ด์์!
exit๋ผ๊ณ ์ถ๋ ฅ๋ ๋ค ํค๋ณด๋ ์ ๋ ฅ ์ฅ์น๋ฅผ ํด์ ์ํค๊ณ ๋์ด ๋ฉ๋๋ค!