2021. 3. 1. 01:31ใ๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/Java
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค.
์ค๋์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์์ ์ฝ๋๋ฅผ ๋ถ์ํ๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฐ์ฒด์งํฅ์ ๋ํด ๊ณต๋ถํ๊ณ ์ถ์ผ์ ๋ถ๋ค์ [Java] ์๋ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-Oriented Programming)์ ๊ด์ฌ์ ์ฃผ์ธ์.
๐ ๋์ ๊ฒ์ ํ๋ก๊ทธ๋จ (๊ฐ์ฒด ์ฌ์ฉ)
๐ ConsoleApp.java (Main)
package oopconcept_210225;
import java.util.Scanner;
import oopconcept_210225.bookstore.*;
/**
* ๊ฒ์ ๊ธฐ๋ฅ: ์ฑ
(Book)
*/
public class ConsoleApp {
public static void main(String[] args) {
// ํค๋ณด๋๋ก๋ถํฐ ๊ฒ์์ด๋ฅผ ์
๋ ฅ๋ฐ์์ ๊ฒ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ์ถ๋ ฅํ๋ค....
Scanner kb = new Scanner(System.in);
SearchService service = new SearchService();
while(true) {
System.out.println("[1]๋์๋ช
[2]์ถํ์ฌ๋ช
[0]์ข
๋ฃ> ");
String menu = kb.nextLine();// "1" or "0"
// ์
๋ ฅ์ ๋ฐ๋ผ์ ์คํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌ,์ถ๋ ฅํ๋ค..
if( menu.equals("0")) { // ๋ฌธ์์ด์ด ๊ฐ์ผ๋ฉด true
break;
}
String key;
switch( menu ) {
case "2":
System.out.println("๊ฒ์ํ ์ถํ์ฌ๋ช
> ");
key = kb.nextLine();
Publisher[] pubs = service.searchPubsName(key);
if( pubs != null) {
for(int i=0; i<pubs.length;++i) {
// null ์ธ ์์๊ฐ ์์ ๊ฒฝ์ฐ
if( pubs[i] != null) {
System.out.println(i+":"+pubs[i]);
// Book ์ค์์ ์ถํ์ฌ๋ช
์ด pubs[i].getName() ์ธ ๊ฒ ์ฐพ๊ธฐ
String pubname = pubs[i].getName();
Book[] list = service.searchBookByPubName(pubname);
if(list != null) {
for(int b=0; b<list.length;++b) {
if( list[b] != null) {
System.out.println(b+":"+list[i]);
}
}
}
}
}
}else {
System.out.println("๋ฑ๋ก๋ ๊ฑฐ ์๋ค");
}
break;
case "1":
System.out.println("๊ฒ์ํ ๋์๋ช
> ");
key = kb.nextLine();
// ์
๋ ฅ๋ฐ์ ๋ฌธ์์ด key ๋ฅผ ์ ๋ฌํด์ ๊ฒ์๋ ๋์ ๋ชฉ๋ก ๋ฐ๋๋ค
Book[] list = service.searchBookName(key);
// ์ถ๋ ฅํ๊ธฐ
if( list == null) {
System.out.println("๋ฑ๋ก๋ ๋์๊ฐ ์์ต๋๋ค.");
}else {
for(int i=0; i< list.length; ++i) {
Book book = list[i];
if( book != null) {
System.out.println(i+":"+book);// ์ฐธ์กฐ๊ฐ.toString()
}
}
}
break;
}
}
kb.close();// ํค๋ณด๋์ ์ฐ๊ฒฐ๋ ๊ฒ์ ๋๋๋ค... ์ด์ ์ ์ธ๊ฑฐ๋๊น
} // Main End
} // Class End
๐ SearchSercvice.java
package oopconcept_210225.bookstore;
/**
* ๋์๋ช
์ ๊ฒ์ํ๋ Method ํ์
*/
public class SearchService {
private Book[] bookStorage;
private Publisher[] pubStorage;
public SearchService() {
// ๊ฒ์ ๊ธฐ๋ฅ ํ์ธ ์ํด ๋ฏธ๋ฆฌ ๋์ ์ ๋ณด๋ฅผ ์ ์ฅํด ๋๊ณ ์ถ๋ค.
// ์ด ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์ ์ฅํ๊ฒ ๋ค....
String[] pubnames = {"ํ๋ฆฌ๋ ","ํ๋น","์์ด์ฝ","์ฑ์๋น","๋ฏธ๋์ด์ํธ"};
// ๋์ ์ ๋ณด ๋ฏธ๋ฆฌ ๋ฃ์ด๋๊ธฐ
this.bookStorage = new Book[10];
for(int i=0; i<5; ++i) {
Book book = new Book();
book.setTitle("bitcamp"+i);
book.setPubName(pubnames[i]);
bookStorage[i] = book;
}
// ์ถํ์ฌ ์ ๋ณด ๋ฏธ๋ฆฌ ๋ฃ์ด๋๊ธฐ
this.pubStorage = new Publisher[5];
for( int i=0; i< pubStorage.length; ++i) {
Publisher p = new Publisher();
p.setName(pubnames[i]);
pubStorage[i] = p;
}
}
public Book[] searchBookName(String bookTitle) {
// ๋ฐฐ์ด ์ฌ์ฉ ์ -. ๊ณ ์ ๊ธธ์ด : ์คํ ์ค ๊ธธ์ด ๋ณ๊ฒฝํ ์ ์๋ค
Book[] temp = new Book[bookStorage.length];
int count = 0;// ๊ฒ์๋ ๊ฐ์
// ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ contains -> ๋ถ๋ถ ๋ฌธ์์ด ๊ฒ์(ํฌํจ๋์ด ์์ผ๋ฉด ์ฐธ์ ๋ฐํ)
for(int i=0; i<bookStorage.length;++i) {
if( bookStorage[i] != null ) {
Book book = bookStorage[i];
if( book.getTitle().contains(bookTitle)) {
temp[count] = book;
++count;
}
}
}
if( count > 0 ) {
Book[] list = new Book[count];// ์ฐธ์กฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด์์ ์์ง ๋ง์ NullPointerException
// temp ๋ฐฐ์ด์ ์ ์ฅ๋ ์์๋ค์ list ๋ฐฐ์ด๋ก ๋ณต์ฌํ๊ฒ ๋ค
for(int i=0; i< count;++i) {
list[i] = temp[i];
}
// System.arraycopy(temp, 0, list, 0, count);
return list;
}
return null;// ๊ฒ์๋๊ฒ์ด ์๋ค...
}
public Publisher[] searchPubsName(String pubsTitle) {
// ๋ฐฐ์ด ์ฌ์ฉ ์ -. ๊ณ ์ ๊ธธ์ด : ์คํ ์ค ๊ธธ์ด ๋ณ๊ฒฝํ ์ ์๋ค
Publisher[] temp = new Publisher[pubStorage.length];
int count = 0;// ๊ฒ์๋ ๊ฐ์
for(int i=0; i<pubStorage.length;++i) {
if( pubStorage[i] != null ) {
Publisher pub = pubStorage[i];
if( pub.getName().contains(pubsTitle)) {
temp[count] = pub;
++count;
}
}
}
if( count > 0 ) {
return temp;
}
return null;// ๊ฒ์๋๊ฒ์ด ์๋ค...
}
public Book[] searchBookByPubName(String pubname) {
// ์ถํ์ฌ๋ช
์ ์ ๋ฌ๋ฐ์์ Book[] ํ๋๋ฅผ ๊ฒ์ฌํ๊ณ ๋ฐํํ๋ค.
Book[] temp = new Book[ bookStorage.length ];
int count = 0;
// ๋ฐ๋ณต๋ฌธ์ for-each ๋ฅผ ์ฌ์ฉํด๋ณธ๋ค...
for(Book book : bookStorage) {
if( book != null ) {
if( book.getPubName().equals(pubname)) {
temp[count] = book;
++count;
}
}
}
return (count > 0)? temp : null;
}
}
๐ Book.java
package oopconcept_210225.bookstore;
public class Book {
private String title;//๋์๋ช
private String pubName;//์ถํ์ฌ๋ช
<- ์ด ์ฑ
์ ์ถํํ ํ์ฌ๋ช
public String getPubName() {
return this.pubName;
}
public void setPubName(String name) {
this.pubName = name;
}
public String getTitle() {
return this.title;// title
}
public Book setTitle(String title) {
this.title = title;
return this;
}
@Override
public String toString() {
return "Book [title=" + title + ", pubName=" + pubName + "]";
}
// ๊ฐ์ฒด๋ช
์ผ๋ก ์ถ๋ ฅํ ๋ toString() ํธ์ถ๋๋ค...
}
๐ Publisher.java
package oopconcept_210225.bookstore;
public class Publisher {
private String name;//์ถํ์ฌ๋ช
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Publisher [name=" + name + "]";
}
}
๐ ์ฝ๋ ๋ถ์
Scnner ๊ฐ์ฒด์ Systme.in ์ธ์ ๊ฐ์ ๋ฃ์ด ํธ์ถํ์ฌ Scnner ์๋ฃํ kb๋ณ์์ ๋ฃ์ต๋๋ค. ์ด๊ฒ์ ํค๋ณด๋ ์ ๋ ฅ๊ฐ์ ๋ฐ๊ธฐ ์ํ ํจ์์ ๋๋ค.
SearchService Type์ service ๋ณ์์ SerchService(); ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฃ์ต๋๋ค.
while๋ฌธ์ true๋ฅผ ๋ฃ์ด ํญ์ ๋ฐ๋ณต์ด ์์๋๋๋ก ์ค์ ํ ๋ค ์ฌ์ฉ์์๊ฒ ์ด๋ค ์์ ์ ํ ๊ฒ์ธ์ง๋ฅผ ๋ฌป์ต๋๋ค. ๊ทธ๋ฐ ๋ค ์์์ ๋ง๋ Scnnerํจ์๋ฅผ ์ด์ฉํ์ฌ kb์์ netxtLineํจ์๋ฅผ ํธ์ถํ์ฌ ๋ฌธ์์ด ํ์ menu๋ณ์์ ๋ฃ๋๋ฐ, ์ด๊ฒ์ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ ๋ฌธ์์ด์ menu์ ๋ฃ๊ฒ ๋ค๋ ์๋ฏธ์ ๋๋ค.
๊ทธ๋ฐ ๋ค if๋ฌธ์ ํตํด menu๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ Object ๊ฐ์ฒด ์ค equalsํจ์์ ์ธ์ ๊ฐ 0์ ๋ฃ์ด ์ ๋ ฅ๊ฐ์ด ๋ฌธ์์ด 0๊ณผ ๊ฐ์์ง๋ฅผ ํ์ธํ๊ณ , ๊ทธ๊ฒ์ด ์ฐธ์ด๋ผ๋ฉด if๋ฌธ์ด ์คํ๋์ด while๋ฌธ์ ์ข ๋ฃํ๊ณ , ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๊ฒ ๋ฉ๋๋ค.
๋จผ์ ์ฌ์ฉ์๊ฐ 2๋ฒ์ ๋๋ฅด๊ฒ ๋๋ฉด ์ถํ์ฌ๋ช ์ ๊ฒ์ํ๊ฒ ๋๋๋ฐ, ์ด๊ฒ๋ถํฐ ๋ถ์ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
while๋ฌธ์์ 0๋ฒ์ ๋๋ฅด์ง ์์๋ค๋ฉด shich๋ฌธ์ผ๋ก ๋ค์ด์ค๊ณ , switch๋ฌธ์ menu ์ธ์๋ฅผ ๋ฃ์ด ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๊ฐ์ง๊ณ , case ๋ฌธ๊ณผ ๋น๊ตํ๊ฒ ๋ฉ๋๋ค. case "2"๋ก ์ธํด case๋ฌธ ์์ ๋ด์ฉ์ด ์คํ๋๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค ์ฌ์ฉ์์๊ฒ ๊ฒ์ํ ์ถํ์ฌ๋ช ์ด ๋ฌด์์ธ์ง ๋ฌผ์ด๋ณด๊ณ , ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ key๋ผ๋ ๋ฌธ์์ด ๋ณ์์ ๋ฃ๊ฒ ๋ฉ๋๋ค. switch๋ฌธ ์์ String key;๋ฅผ ์ ์ธํ ๊ฒ์ switch๋ฌธ์์ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํจ์ ๋๋ค.
31๋ฒ ๋ผ์ธ์ Publisher ์ฐธ์กฐํ ๋ฐฐ์ดํ pubs๋ณ์์ service.searchPubsNameํจ์๋ฅผ ํธ์ถํ๋๋ฐ, ์ธ์ ๊ฐ(๋งค๊ฐ๋ณ์)์ผ๋ก ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ ์๋ค์.
์! ๊ทธ๋ผ ํธ์ถ์ ํ์์ผ๋ ์ด ๊ณณ์ผ๋ก ์์ ์ด ๋์ด์ค๊ฒ ๋๋ ๊ฒ์ด์์. ์ด๋ Memory์์๋ main Method์์ serchPubsName Method๊ฐ ์ฌ๋ผ๊ฐ๊ณ , ์ด๊ฒ์ด Run์ํ๊ฐ ๋๊ณ , main Method๋ ๋๊ธฐ ์ํ๊ฐ ๋ฉ๋๋ค.
66๋ฒ ์ค์ ๋ณด๋ ๋ ๋ค๋ฅธ ์ฐธ์กฐํ ๋ฐฐ์ด์ ๋ง๋ค์ด ์ฃผ๊ณ ์๋ค์. Publisher ๋ฐฐ์ดํ ์ฐธ์กฐ ๋ณ์ temp์ publisher์ด๋ผ๋ ๋ฐฐ์ด์ ์์ฑํ๋๋ฐ, ๊ทธ ๋ฐฐ์ด์ ๊ธธ์ด๋ pubStorage๋งํผ ์ ๋๋ค.
์ ๊ทธ๋ผ ์ด ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ์ผ๋งํผ์ธ์ง ๋ด์ผ๊ฒ ์ฃ ? ๋จผ์ ์ด ๋ฐฐ์ด์ ํ๋์ private์ผ๋ก ์ ์ธ๋์๊ธฐ ๋๋ฌธ์ ๊ฐ์ Class ์ธ์๋ ์ ๊ทผ์ด ๋ถ๊ฐํ๊ฒ ๋ค์! Publisher ๋ฐฐ์ดํ ์ฐธ์กฐ ๋ณ์ pubStorage๋ฅผ 12๋ฒ์งธ ์ค์์ ์ ์ธ์ ํ๊ณ , 19๋ฒ์งธ ์ค์์ this.bookStorage (ํ๋๋ช )์ Book ๋ฐฐ์ด์ 10์ ๊ธธ์ด๋ก ์์ฑ์ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด pubStorage์ ๊ธธ์ด๋ 10์ด๊ฒ ๋ค์!
์ด๋ฒ์๋ serchPubsName ํจ์์ 67๋ฒ์งธ ์ค๋ถํฐ ๋ค์ ๋ถ์์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ ์ํ count๋ณ์์ 0์ ๋ฃ์ด ์ด๊ธฐํ๋ฅผ ํด ์ฃผ๊ณ ์๋ค์.
๊ทธ๋ฐ ๋ค for๋ฌธ (๋ฐ๋ณต๋ฌธ)์ ์์ํฉ๋๋ค. ์ด ๋ฐ๋ณต๋ฌธ์ pbuStorage ์ฐธ์กฐํ ๋ฐฐ์ด ๊ธธ์ด๋งํผ์ธ๋ฐ, ์๊น 10์ด๋ผ๋ ๊ฒ์ ํ์ธํ์ง์? ๊ทธ๋ผ 0๋ฒ๋ถํฐ 10 ๋ณด๋ค ์์ ๋๊น์ง์ด๋ 10๋ฒ ๋๊ฒ ๋ค์!
๊ทธ๋ฐ ๋ค if๋ฌธ์ ๋ง๋ฉ๋๋ค. if๋ฌธ์ pubStorage์ Index ๋ฒํธ์ i๋ฅผ ์ฃผ๋๋ฐ, i๋ 0๋ถํฐ 9๊น์ง ์ฌ๋ผ๊ฐ ํ ๋ ๊ฐ ๋ฐฐ์ด์ด null์ด ์๋๋ผ๋ฉด ์ด๋ผ๊ณ ๋ฌป๊ณ ์๋ค์. ๊ทธ๋ ๋ค๋ฉด ์ด if๋ฌธ์ pubStorage๋ฅผ ๊ฐ์ง๊ณ ์ฐ์ฐ์ ํ ๋, NPE (Null Point exception)์ ๊ฒ์ฌํ๋ ์์ ๊ฒ์ฌ ๋ถ๋ถ์ด ๋๊ฒ ์ต๋๋ค.
์! pubStorage ๋ฐฐ์ด์ null์ด ์๋ค๋ฉด if๋ฌธ ์์ผ๋ก ๋ค์ด์ค๊ฒ ๋ฉ๋๋ค. 70๋ฒ ์ค์ ๋ณด๋ฉด Publisher ์ฐธ์กฐํ ํ์ pub ๋ณ์์ pubStorage i๋ฒ Index์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ค์. ๊ทธ๋ผ ์ด ๊ณณ์ ๋ฌด์ธ๊ฐ ๊ฐ์ ๋ฃ์๋ค๋ ๊ฒ์ธ๋ฐ, ๋ฌด์์ด ๋ค์ด ์๋์ง ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด ๋ด์ฉ์ SearchService Method์์ ํ์ธ์ ํ ์ ์๊ฒ ๋ค์. ๋ณด๋๊น String ํ์ ๋ฐฐ์ด pubnames์ ์ถํ์ฌ ์ด๋ฆ์ ๋ฌธ์์ด๋ก 5๊ฐ ๋ฃ์ด์คฌ๋ค์. ๊ทธ๋ผ pubnames ๋ฐฐ์ด์ 5์ ๊ธธ์ด๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
19๋ฒ์งธ ์ค์ ๋ณด๋๊น bookStorage ํ๋์ Book ํ์ ๋ฐฐ์ด์ ์์ฑํ๋๋ฐ, 10์ ๊ธธ์ด๋ฅผ ๊ฐ๋ค์.
๊ทธ๋ฐ ๋ค ๋ฐ๋ณต๋ฌธ์ ๋ค์ด๊ฐ๊ณ , 5๋ฒ์ ๋ฐ๋ณต์ ํ๋๋ฐ, 21๋ฒ์งธ ์ค์ Book ํ์ ์ book ๋ณ์์ Book์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฃ์ต๋๋ค.
21๋ฒ์งธ ์ค์ ๋ํ ๋ด์ฉ์ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆฌ๋ฉด ์์ ๊ฐ์ด ๋์ค๊ฒ ๋๋ ๊ฒ์ด์์.
22๋ฒ์งธ ์ค์ ๋ถ์ ํด ๋ณด๊ฒ ์ต๋๋ค. book๋ณ์ ์์ setTitle ๋ฉ์๋๊ฐ ์๋๋ฐ, ์ธ์(๋งค๊ฐ๋ณ์) ๊ฐ์ผ๋ก "bitcmap"+[i]๋ฅผ ์ฃผ๊ณ ์๋ค์.
setter๋ ํ๋๊ฐ private(๊ฐ์ Class์์๋ง ์ ๊ทผ ๊ฐ๋ฅ)์ผ๋ก ์ค์ ๋์ด ์์ ๋, ๊ทธ ํ๋์ ๊ฐ์ ๋ฃ์ด์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด์์.
๋งค๊ฐ ๋ณ์๋ก "bitcamp"๋ฅผ ์ฃผ์๊ณ , i๊ฐ์ ์ฃผ์์ผ๋ bitcamp0, 1, 2... ์์ผ๋ก ๋ค์ด์ฌ ๊ฒ์ด๊ณ , ๊ทธ๊ฒ์ด title์ ๋ค์ด์จ ๋ค this.title ์ฆ, ํ๋์ ์ ์ฅ์ด ๋๊ฒ ์ต๋๋ค. ๊ทธ๋ฐ ๋ค ๋ฐํ ๊ฐ์ผ๋ก this๋ฅผ ์ฃผ๋ ํ๋์ ์ ์ฅ๋ ๊ฐ์ ๋๋ ค์ค๋ค๋ ๊ฒ์ด ๋๊ฒ ๋ค์. ๋ฐํ ๊ฐ์ ํ์ ์ Book์ ๋๋ค.
๊ทธ๋ฐ ๋ค 23๋ฒ์งธ ์ค์์ ๋ค์ book ์ฐธ์กฐ ๋ณ์ ์์ setPubName Method๊ฐ ์๋๋ฐ, ์ธ์(๋งค๊ฐ๋ณ์) ๊ฐ์ผ๋ก pubnames [i]๋ฅผ ์ฃผ๊ณ ์์ต๋๋ค.
17๋ฒ์งธ ์ค์์ pubnames๋ผ๋ ๋ฐฐ์ดํ ์ฐธ์กฐ ๋ณ์์ ์ถํ์ฌ๋ช ์ ๋ฃ์ ๊ฒ ๊ธฐ์ตํ์๋์? ๊ทธ๋ผ ๊ฐ๊ฐ์ ๋ฐฐ์ด Index์ ๋ค์ด ์๋ ํ๋ฆฌ๋ ๋ฑ๋ฑ์ ์ถํ์ฌ๋ฅผ PubName setter์ ์ ๋ฌํ๋ ๊ฒ์ด ๋๊ฒ ๋ค์! ์ด๊ฒ์ ํ์ธํด๋ด์ผ๊ฒ ์ด์!
์ด ๊ณณ์ ์์ ๋ณด๋ ์ญ์ String ํ์ ์ผ๋ก ์ธ์ ๊ฐ์ ์ ๋ ฅ๋ฐ๊ณ ์๋ ๊ฒ์ด์์. pubnames ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์์๋ ๋ฌธ์์ด์ด ๋ค์ด ์์์ผ๋ ๊ทธ๊ฒ๋ค์ด for๋ฌธ์ ๋๋ฉด์ ํ๋ํ๋ ๋ค์ด์ค๊ฒ ๋ ๊ฒ์ด๊ณ , ๊ทธ ์ ๋ ฅ๊ฐ์ด this.pubName ์ฆ, pubName์ด๋ผ๋ ํ๋์ ์ ์ฅ์ด ๋๊ฒ ์ต๋๋ค.
๋ฐํ ํ์ ์ด void๋ return์ ์๋ต๋์ด ์๋ ๊ฒ ์ฐธ๊ณ ๋ฐ๋๋๋ค!
์๋ค ๊ฐ๋ค ์ ๋ง ์ ์ ์ด ์๋ ๊ฒ์ด์์! ํ์ง๋ง, ๋ค์ ๋์๊ฐ์ ๊ณ์ ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค!
24๋ฒ์งธ ์ค์ ๋ณด๋ book ๋ณ์ ๊ฐ์ bookStorage ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์์ Index ๋ฒํธ๋ฅผ ํ๋์ฉ ์ฌ๋ ค ์ ์ฅํ๊ณ ์๋ ๊ฒ์ด์์.
book์๋ ์ด๋ค ๋ด์ฉ์ด ์์์ง์? ๋ฐ๋ก ์ฑ ์ ๋ชฉ (setTitle)๊ณผ ์ถํ์ฌ๋ช (setPubName)์ด ๋ค์ด ์๋ ๊ฒ์ด์์. ์ด ๋์ ๊ฐ์ด ๋ฃ๊ณ ์๋ค์!
27๋ฒ์งธ ์ค์ ๋ณด๋๊น pubStorage ํ๋์ Publisher ํ์ ๋ฐฐ์ด 5์ ๊ธธ์ด๋ฅผ ์์ฑํ๊ณ ์๋ ๊ฒ์ด์์. ์๋ง ์ถํ์ฌ ์ ๋ณด๋ฅผ ๋ฃ์ ๊ฒ ๊ฐ์ง์?
๋ค์ for๋ฌธ์ด ๋์๊ฐ๋๋ค~~ ๋น๊ธ๋น๊ธ ๋์๊ฐ๋ ์ธ์~ for๋ฌธ์ pubStorage ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ ๊ธธ์ด๋งํผ ๋๋ ๊ฒ์ด์์. 27๋ฒ์งธ ์ค์์ bpuStorage์์ Publisher ํ์ ๋ฐฐ์ด 5์ ๊ธธ์ด๋ฅผ ๋ฃ์์ผ๋ 5์ ๊ธธ์ด๋ฅผ ๊ฐ๊ฒ ๋๊ฒ ๋ค์ ๊ทธ๋ผ 5๋ฒ ๋๊ฒ ๋๊ฒ ์ต๋๋ค!
29๋ฒ์งธ ์ค์ ๋ณด๋ Publisher ํ์ ์ p๋ณ์ ์์ Publisher ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฃ๊ณ ์์ต๋๋ค.
29๋ฒ์งธ ์ค ๋ด์ฉ์ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆฌ๋ฉด ์์ ๊ฐ์ด ๋์ค๊ฒ ๋๊ฒ ๋ค์!
30๋ฒ์งธ ์ค์ ๋ณด๋ p๋ณ์ ์์ setName Method๋ฅผ ํธ์ถํ์ฌ ์ธ์(๋งค๊ฐ๋ณ์)๋ก pubnames [i]๋ฅผ ์ฃผ๊ณ ์๋ ๊ฒ์ด์์. setName์ ๊ฐ๋ด์ผ๊ฒ ์ด์!
pubnames [i]์ ์ ๋ ฅ๊ฐ์ ๋ฌธ์์ด ํ์ name๋ณ์๊ฐ ๋ฐ์ name๋ณ์์ ์ ๋ ฅ๋๊ณ ์ด๊ฒ์ ํ๋ name์ ๋์ ํด ์ค ๋ค return์ ํ๊ณ ์์ด์!
pubnames ๋ฌธ์ ๋ฐฐ์ดํ ๋ณ์์๋ 5๊ฐ์ ์ถํ์ฌ๋ช ์ด ๋ค์ด ์์์ต๋๋ค. ์ด๊ฒ๋ค์ด ํ๋์ฉ ๋ค์ด๊ฐ์ p๋ณ์์ ์ ์ฅ์ด ๋๊ฒ ๋ค์.
31๋ฒ์งธ ์ค์ ๋ณด๋ p ๋ณ์์ ์ ์ฅ๋ ๋ด์ฉ์ pubStorage ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์์ ๊ฐ Index์ ์ฐจ๊ณก์ฐจ๊ณก ์ ์ฅํ๊ณ ์์ต๋๋ค.
์ถํ์ฌ๋ช ์ ์ ์ฅํ๋ ๋ด์ฉ๋ค์ด ๋ค ๋์์ผ๋ ์ด๋ฅผ ํธ์ถํ์๋ Main Method์ 31๋ฒ์งธ ์ค๋ก ๋์์ค๊ฒ ์ต๋๋ค.
Publisher ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ pubs์ service ๋ณ์ ์์ searchPubsName Method์ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ด ์ ๋ฌ๋ ์ถํ์ฌ ๋ช ์ ๋น๊ตํด์ ์๋ค๋ฉด ๋์ ์ ํด ์ฃผ๊ณ ์์ต๋๋ค.
32๋ฒ์งธ ์ค์ if ๋ฌธ์ด ์์๋๋๋ฐ, pubs ๋ณ์๊ฐ null์ธ์ง๋ฅผ ํ์ธํ๊ณ ์๋ค์. ๋ง์ฝ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ์ถํ์ฌ๋ช ์ด ์์๋ค๋ฉด pubs ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์์ ๋ด๊ฒผ์ ํ ๋ if๋ฌธ ์์ผ๋ก ๋ค์ด๊ฐ๊ฒ ์ง์?
for ๋ฌธ์ด๋ i๋ ์ซ์๊ฐ ๋์ฌ ๊ฒ์ด๊ณ , :๋ฅผ ์ถ๋ ฅํ ๋ค์ pubs๋ฐฐ์ด์ i๋ฒ์งธ ๋ด์ฉ์ ์ถ๋ ฅํฉ๋๋ค. ์ถํ์ฌ ๋ช ์ด ๊ฒ์๋์ด pubs์ ๋ค์ด๊ฐ ์ถํ์ฌ ๋ช ๋ค์ด ์ถ๋ ฅ์ด ๋๊ฒ ๊ณ , ๊ฒ์๋์ง ์์ ๊ฒ๋ค์ null๊ฐ์์ผ๋ก ๋ช ๋ฒ์งธ ์ธ์ง๋ ์ถ๋ ฅ๋์ง ์๊ฒ ๋ค์.
๊ทธ๋ฐ ๋ค์ String (๋ฌธ์์ด) ํ์ list ๋ณ์์ service ์์ serchBookBypubName Method๋ฅผ ํธ์ถํ๋๋ฐ, ์ ๋ ฅ๊ฐ์ผ๋ก pubname์ ์ ๋ฌํฉ๋๋ค. ๊ทธ๋ผ serchBookByPubName์ ํ์ธํ๋ฌ ๊ฐ๋ด์ผ๊ฒ ์ด์!
pubName์ ์ ๋ฌ๋ฐ์ ์ด Method์์ ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น์? ๋จผ์ , 86๋ฒ์งธ ์ค์ ๋ณด๋ Book ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ temp ์์ Book ํ์ ๋ฐฐ์ด์ ์์ฑํ๋๋ฐ, ๊ทธ ๊ธธ์ด๋ฅผ bookStorage ๋ฐฐ์ด๋งํผ์ผ๋ก ํ๋ค์. bookStorage ๋ฐฐ์ด์ 10(SearchService Class 19๋ฒ์งธ ์ค)์ ๊ธธ์ด๋ฅผ ๊ฐ๊ณ ์๋ ๊ฒ ์๊ณ ๊ณ์์ง์?
67๋ฒ์งธ ์ค์์ ์ ์ํ ๋ณ์ count์ 0์ ๋ฃ์ด ์ด๊ธฐํ๋ฅผ ํด ์ฃผ๊ณ , for๋ฌธ์ด pubStorage ๊ธธ์ด(5 - SearchService Class 27๋ฒ์งธ ์ค)๋งํผ ๋์๊ฐ๋๋ค.
< for each ๋ฌธ ํ์ >
for (๋ณ์ ํ์ ๋ณ์๋ช : ๋ฐฐ์ด ์ด๋ฆ) {
// ์คํ ๋ถ๋ถ;
}
89๋ฒ์งธ ์ค์ ๋ณด๋ฉด for - each๋ฌธ์ด ๋์๊ฐ๋ ๊ฒ์ด์์. ๋ฐ๋ณต์ด ์ด๋ค์ง ๋๋ง๋ค ๋ฐฐ์ด์ ํญ๋ชฉ(bookStorage)์ ํ๋์ฉ ๊บผ๋ด Book ํ์ ์ book ๋ณ์์ ๋ฃ์ด ์ค๋ค๋ ์๋ฏธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ , if๋ฌธ์ ๋ง๋๊ฒ ๋๋ค์! bookStorage์์ ํ๋์ฉ ๊ฐ์ ์ ๋ฌ๋ฐ์ book์ด null์ธ์ง๋ฅผ ํ์ธํฉ๋๋ค. null์ด ์๋๋ฉด ๋ค์ if๋ฌธ์ ๋ง๋๊ฒ ๋๋๋ฐ, book์์ getPubName Method๊ฐ pubname๊ณผ ๊ฐ์์ง๋ฅผ ํ์ธํ๋ equals Method๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค temp ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์์ count Index๋ฒํธ์ book ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ ์๋ค์. ์ฒ์์๋ 0์ผ๋ก ์์๋ ๊ฒ์ด๊ณ , 93๋ฒ์งธ ์ค์ ++count;๊ฐ ์์ผ๋ ํ๋์ฉ ์ฆ๊ฐํ๋ฉด์ ๊ฒ์๋ book ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๊ฒ ์ต๋๋ค.
๊ทธ๋ฐ ๋ค return์ผ๋ก ์กฐ๊ฑด์ ์ฐ์ฐ์ (์ผํญ ์ฐ์ฐ์)๋ฅผ ํตํด count ๋ณ์๊ฐ 0๋ณด๋ค ํฌ๋ฉด temp๊ฐ์ ๋ฐํํ๊ณ , ์๋๋ฉด null์ ๋ฐํํ๊ณ ์์ต๋๋ค. count๊ฐ 0๋ณด๋ค ์๋ค๋ ๊ฒ์ boot์์ getpubName์ด pubname๊ณผ ๊ฐ์ ๊ฒ์ด ์์ด count๊ฐ ์ฆ๊ฐํ์ง ์์๋ค๋ ๊ฒ์ด๊ณ , ๊ทธ๊ฑด ๊ฒฐ๊ตญ ๊ฒ์๋ ์ฑ ์ด ์๋ค๋ ๊ฒ์ด๊ฒ ์ง์?
ํด! ํ๋๋ค์! ๋ค์ ConsoleApp Class์ 40๋ฒ์งธ ์ค์ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. if๋ฌธ์ ๋ง๋๋๋ฐ, list๊ฐ null์ด ์๋๋๊ณ ๋ฌป๊ณ ์์ต๋๋ค. ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ list์๋ searchBookByPubName Method์ pubname์ ์ ๋ ฅํ์ฌ ๊ฒ์๋ ์ฑ ์ด ์๋ค๋ฉด ์ ๋ฌ ๊ฐ์ผ๋ก temp๊ฐ ์ ๋ฌ๋์ด null์ด ์๋ ๊ฒ์ด๊ณ , ๊ฒ์๋ ๊ฒ์ด ์๋๋ฉด null์ด ๋ฐํ๋์์ ๊ฒ์ ๋๋ค.
์! ๊ทธ๋ค์์ for๋ฌธ์ ๋ง๋ฉ๋๋ค list ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ ๊ธธ์ด (์ฑ ๊ฒ์ ๊ธธ์ด)๋งํผ ๋๋๋ฐ, ๊ทธ ์์ ๋ณด๋ ๋ if๋ฌธ์ด list์ b Index์ null์ด ์๋์ง๋ฅผ ํ์ธํฉ๋๋ค. null์ด ์๋๋ฉด ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ b๋ก ๋ฒํธ๋ฅผ ์ถ๋ ฅํ ๋ค์ list [i]๋ก ์ถ๋ ฅ์ ํ๊ฒ ๋๊ฒ ๋ค์!
์ด else๋ฌธ์ 35๋ฒ์งธ if๋ฌธ์ else์ ๋๋ค. ์ฆ, pubs [i]์ null๊ฐ์ด ์๋ค๋ฉด ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ ๋ด์ฉ์ด ๊ฒ์๋์ง ์์ "๋ฑ๋ก๋ ๊ฑฐ ์๋ค"๋ผ๊ณ ์ถ๋ ฅํ๊ณ , break;๋ฅผ ๋ง๋ swich๋ฌธ์ ๋๊ฐ ๋ค์ while๋ฌธ์ด ๋์ํ๊ฒ ๋๊ฒ ๋ค์.
์! ์ด์ ๋ ๋ค๋ฅธ case๋ฅผ ๋ถ์ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฌ์ฉ์๊ฐ menu๊ฐ ๋ฐ๋ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฌธ์์ด 1์ ์ฃผ์๋ค๋ฉด ์ด ๊ณณ์ผ๋ก ์ค๊ฒ ๋๊ฒ ์ง์?
๋จผ์ ๊ฒ์ํ ๋์๋ช ์ ๋ฌป๊ณ , ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐ์ ๋ฌธ์์ด ํ์ key ๋ณ์์ ๋ฃ์ด ์ค๋๋ค.
57๋ฒ์งธ ์ค์ ๋ณด๋ Book ํ์ ์ ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ list์ service์์ serchBookName ํจ์๋ฅผ ํธ์ถํ๋๋ฐ, ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ด ๋ค์ด์๋ key๋ณ์๋ฅผ ์ ๋ ฅ๊ฐ์ผ๋ก ์ ๋ฌํด ์ฃผ๊ณ ์๋ค์! serchBookName์ ํ์ธํด ๋ด์ผ๊ฒ ์ด์!
์ด Method๋ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ์ธ์(๋งค๊ฐ๋ณ์)๋ก ๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ String(๋ฌธ์์ด) ํ์ ์ผ๋ก bookTitle์ ๋ฐ๊ณ ์๋ค์.
38๋ฒ์งธ ์ค์ ๋ณด๋ Book ํ์ ์ ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ temp ์์ Book ํ์ ๋ฐฐ์ด์ ๋ฃ๋๋ฐ, ๊ทธ ๊ธธ์ด๋ bookStorage (10์ ๊ธธ์ด - SearchService Class 19๋ฒ์งธ ์ค)๋งํผ ๋ง๋ค์ด ์ฃผ๊ณ ์๋ค์. ๊ทธ๋ฐ ๋ค ์ ์ํ ๋ณ์ count๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๊ณ ์ด๋ฅผ ๊ฒ์๋ ๊ฐ์๋ก ์ฌ์ฉํ๋ ค๊ณ ํ๊ณ ์๋ ๊ฒ์ด์์.
๋ค์ for๋ฌธ์ ๋ง๋ฉ๋๋ค. bookStorage ๋ฐฐ์ด ๊ธธ์ด๋งํผ์ด๋ 10๋ฒ ๋๊ฒ ๋๊ฒ ์ต๋๋ค!
๊ทธ๋ฐ ๋ค if๋ฌธ์ ๋ง๋๋๋ฐ, bookStorage ๊ฐ Index ์์ null์ด ์๋์ง ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ค์ํ๊ณ ์์ต๋๋ค. null ์๋ ์๋๋ฉด Book ํ์ ์ ์ฐธ์กฐํ ๋ณ์ book์ bookStorage [i] ๋ฒ์งธ ์ ๋ณด๋ฅผ ํ๋์ฉ ๋ฃ์ด ์ฃผ๊ฒ ๋๊ณ , ๋ค์ if๋ฌธ์ ๋ง๋ book์ ์ ๋ ฅ๋์๋ ๊ฐ๋ค์ด getTitle์ ๊ฑฐ์ณ Book Class์ private String title ํ๋์ ์๋ ๊ฒ์ ์ฝ์ด๋๋ฆฌ๊ณ , ๊ทธ๊ฒ์ด ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ ๋ด์ฉ ์ค ํ๋๋ผ๋ ๊ธ์๊ฐ ์ผ์นํ๋์ง๋ฅผ ํ์ธํ๊ณ ์์ต๋๋ค.
์ฐธ์ด๋ผ๋ฉด temp๋ฐฐ์ด์ ๊ฒ์๋ ๊ฐ์๋ฅผ ๋ํ๋ด๋ count๋ณ์๋ฅผ Index๋ฒํธ๋ก ํ์ฌ ๊ทธ ์์ book์์ ๊ฐ์ ๋ฃ์ด์ค ๋ค count ๊ฐ์ ํ๋ ์ฆ๊ฐ์ํค๊ณ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค 51๋ฒ์งธ ์ค์์ count๊ฐ 0์ธ์ง๋ฅผ ํ์ธํ์ฌ ๊ฒ์๋ ๊ฒ์ด ์๋์ง ์๋์ง๋ฅผ ํ์ธํ๊ณ , ์๋ค๋ฉด Book ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ list์ Book ํ์ ๋ฐฐ์ด์ ์์ฑํ๋๋ฐ, ๊ทธ ๊ธธ์ด๋ count (๊ฒ์ ๊ฒฐ๊ณผ ๊ฐ์)๋งํผ์ ๊ธธ์ด๋ก ๋ง๋ญ๋๋ค. ์ด ๋ฐฐ์ด์ ๊ฐ์ ์ง์ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ์ฐธ์กฐ ์ฆ, ์ฃผ์ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด์์ ์์ด์๋ ์๋ ๋๋ ๊ฒ์ด์์!
54๋ฒ์งธ ์ค์์ for๋ฌธ์ ๋ง๋ฌ์ด์! count๋งํผ์ด๋ ๊ฒ์ ๊ฒฐ๊ณผ ๊ฐ์๋งํผ ๋๊ฒ ๋ค์! ๊ทธ๋ฌ๋ฉด ๊ทธ ๊ฐ์๋งํผ temp ๋ฐฐ์ด ๋ด์ฉ์ list์ i๋ฒ์งธ ๋ฐฐ์ด์ ๋ฃ๊ณ , 58๋ฒ์งธ ์ค์์ ๋ฐํ ๊ฐ์ผ๋ก list์ ์๋ ๊ฐ์ ๋ฃ์ด ์ค๋๋ค. 55๋ฒ์งธ ์ค์์ ์ ๊ฒ ๋์ ์ฌ์ฉํ ์ ์๋ Method๊ฐ ์๋๋ฐ, ์๋ ์ฐธ๊ณ ์ฌํญ์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋ผ๋ ๊ฒ์ด์์.
๋ง์ฝ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์๋ค๋ฉด if๋ฌธ์ ๋ค์ด๊ฐ์ง ๋ชปํ๊ณ , ๋ฐํ๊ฐ์ผ๋ก null์ด ์ ๋ฌ๋ฉ๋๋ค.
์! ๋ค์ Main Method๋ก ๋์๊ฐ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!
serchBookName Method์์ ์ฐ์ฐ๋ ๊ฒฐ๊ณผ๋ Book ํ์ ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์ list์ ์ ์ฅ์ด ๋์์ ๊ฒ์ด๊ณ , ์ด์ 59๋ฒ์งธ ์ค์์ if๋ฌธ์ ๋ง๋๊ฒ ๋์์ต๋๋ค. list๊ฐ null์ธ์ง๋ฅผ ๋ฌป๊ณ ์๋ค์. ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์๋ค๋ฉด list๋ null์ด์์ ๊ฒ์ด๊ณ , ๊ทธ๋ ๋ค๋ฉด ์ด if๋ฌธ์ ๋ค์ด๊ฐ ์ถ๋ ฅ๋๋ "๋ฑ๋ก๋ ๋์๊ฐ ์์ต๋๋ค."๊ฐ ๋์ค๊ฒ ๋๊ฒ ์ต๋๋ค.
else ์๋๋ผ๋ฉด? ์ฆ, list๊ฐ null์ด ์๋๋ผ๋ฉด for๋ฌธ์ ๋ง๋๊ฒ ๋ฉ๋๋ค. list ๊ธธ์ด๋งํผ์ด๋ ๊ฒ์ ๊ฒฐ๊ณผ๋งํผ ๋๊ฒ ๋๊ฒ ๋ค์!
Book ํ์ ์ book ์ฐธ์กฐํ ๋ณ์์ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋ด๊ธด list ๋ฐฐ์ด์ ๋ด์ฉ์ i๋ฒ์ฉ ํ๋ํ๋ ์ฎ๊ฒจ ์ฃผ๊ณ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค ๋ค์ if๋ฌธ์ ๋ง๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๋๋ฐ, book์ด null์ด ์๋๋ฉด ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด ์ฃผ๊ฒ ๋ค์!
์ฌ๊ธฐ์ ํ ๊ฐ์ง ์์์ผ ํ ๊ฒ์ println์ book์ ์ถ๋ ฅ์ ํ๋๋ฐ, toString์ด๋ผ๋ Method๋ฅผ ํธ์ถํ๋ ๊ฒ์ด์์.
์ดํด๋ฆฝ์ค์์ ์ฝ๋ ์ ๋ ฅ ๋ถ๋ถ์ ๋ง์ฐ์ค ์ฐํด๋ฆญ์ ํ๋ฉด Source๊ฐ ๋ณด์ด๊ฒ ๋ ๊ฒ์ด๊ณ , ์ด Source ์ ๋ฐ์ ๋ณด๋ฉด Generate toStrint()... ์ด ๋ณด์ด๊ฒ ๋๋ ๊ฒ์ด์์. ์ด๊ฒ์ ๋๋ฅด๋ฉด toString Method๊ฐ ๋ณด์ด๊ฒ ๋๊ณ , Overriding์ ํ์ฌ ์ฐธ์กฐ ๋ฐฐ์ดํ ๋ณ์๋ฅผ ์ถ๋ ฅํ์ ๋ ๋ณด์ด๋ ์ฃผ์ ๊ฐ์ด ์๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ผ๋ก ์ถ๋ ฅ๋๋๋ก ๋ง๋ค์ด ์ค ์ ์๋ ๊ฒ์ด์์.
toString Method๋ฅผ ๋ณด๋ฉด ๋ฐํ ๊ฐ์ผ๋ก Book [title=์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋๊ณ , title ํ๋ ๊ฐ์ด ๋์ค๊ณ , pubName= ๋ฌธ์๊ฐ ๊ทธ๋๋ก ์ถ๋ ฅ๋ ๋ค pubName ํ๋์ ๊ฐ์ด ์ถ๋ ฅ์ด ๋ ๊ฒ์ด์์.
69๋ฒ์งธ ์ค์ break๋ switch๋ฌธ์ ๋ํ break๋ก ๊ฒ์์ด ์๋ฃ๋ ๋ค ๋ค์ while๋ฌธ์ผ๋ก ์ฌ๋ผ๊ฐ๊ฒ ๋ฉ๋๋ค.
73๋ฒ์งธ ์ค์ ๋ณด๋ฉด kb.close();๋ผ๊ณ ์๋๋ฐ, ์ด Method์ ๋ํด์๋ ์๋ ์ฐธ๊ณ ์ฌํญ์ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋ผ๋ ๊ฒ์ด์์.
๐ฌ ์ฐธ๊ณ ์ฌํญ
contains(); ์ด Method๋ ๋น๊ต ๋์๋ค์ ๋ฌธ์๋ค ์ค ํ๋๋ผ๋ ๊ฐ์ ๊ฒ ์์ผ๋ฉด ์ฐธ์ด ๋ฉ๋๋ค.
equlas(); ์ด Method๋ ๋น๊ต ๋์๋ค์ ๋ชจ๋ ๋ฌธ์๊ฐ ์ผ์นํด์ผ ์ฐธ์ด ๋ฉ๋๋ค.
System.arraycopy (์ ์ฅ ๋ณ์๋ช , Index ์ด๊ธฐ ๋ฒํธ, ๊ฐ์ ์ ๋ฌํ ๋ณ์๋ช , Index ์ด๊ธฐ๋ฒํธ, ๊ฐ์);
- ์ด๊ฒ์ ๊ฐ์ ์ ๋ฌํ ๋ณ์์์ ์ ์ฅ ๋ณ์์๊ฒ Index ์ด๊ธฐ ๋ฒํธ๋ถํฐ ๊ฐ์๊น์ง ๊ฐ์ ๋ณต์ฌํ๋ Method์ธ ๊ฒ์ด์์!'
close(); ์ด Method๋ ํค๋ณด๋์ ์ฐ๊ฒฐ๋ ๊ฒ์ ๋๋ ๊ฒ์ ๋๋ค. ์ด์ ์ฌ์ฉ์ด ๋๋ฌ๊ธฐ ๋๋ฌธ์ ํค๋ณด๋์ ๋ํ ์ ์ด๊ถ์ ๋๋ ค์ค๋ค๊ณ ์๊ฐํ์๋ฉด ๋๊ฒ ์ต๋๋ค.