본문 바로가기

Java

Day 10~11. 친구관리 프로그램

간단한 친구관리 프로그램을 작성해보았다. 친구의 정보(이름, 전화번호)를 입력받아서 저장하고, 정보를 불러와서 보여주고, 삭제(절교)하고, 친구 리스트의 숫자를 보여주는 프로그램이다. 


1. 인터페이스를 만들고 추상 메소드들을 만들어줬다. 

package my.examples.friendlist.dto;

import java.util.List;

public interface FriendManagerInterface {
abstract void addFriend(Friend friend);
abstract List<Friend> searchFriend(String name);
abstract int deleteFriend(String phone);
abstract int countFriend();

}


2. Friend 클래스를 만들고 필드값(name, phone)과 getter,setter, toString 메소드들을 선언해주었다. 

package my.examples.friendlist.dto;

public class Friend {
private String name;
private String phone;

public Friend(String name, String phone) {
this.name = name;
this.phone = phone;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

@Override
public String toString() {
return "Friend{" +
"name='" + name + '\'' +
", phone='" + phone + '\'' +
'}';
}
}


3. FriendManagerInterface를 상속받는 FriendManager를 만들어 각 메소드들의 기능을 구현했다.

package my.examples.friendlist.dto;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class FriendManager implements FriendManagerInterface {
private List<Friend> friendList;

public FriendManager() {
friendList = new ArrayList<Friend>();
}

public void addFriend(Friend friend) {
friendList.add(friend);
}

public List<Friend> searchFriend(String name) {
List<Friend> searchList = new ArrayList<Friend>();
for(Friend friend : friendList){
if(friend.getName().equals(name)){
searchList.add(friend);
}
}

return searchList;
}

public int deleteFriend(String phone) {
// for(Friend friend : friendList){
// if(friend.getPhone().equals(phone)){
// friendList.remove(friend);
// }
// }
/*
int size = friendLIst.size();
for(int i = 0; i < size ; i++){
if(phone.equals(friendList[i].getPhone()){
remove(friendList[i];
}
}
*/

int deleteCount = 0;
Iterator<Friend> iterator = friendList.iterator();
while(iterator.hasNext()){
Friend friend = iterator.next();
if(friend.getPhone().equals(phone)){
iterator.remove();
deleteCount++;
}
}
return deleteCount;
}

public int countFriend() {
return friendList.size();
}

}


4. FriendUI 클래스를 만들어서 console에 값들을 보여주는 메소드들을 만들었다.

package my.examples.friendlist.dto;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class FriendUI {
Scanner scanner = new Scanner(System.in);
FriendManager fm = new FriendManager();
public String startUI(){
System.out.println("*******친구 정보 시스템********");
System.out.println("1.입력 || 2.조회(이름) || 3. 절교(전화번호) || 4.종료" );
String selectNum = scanner.nextLine();
return selectNum;
}

public void input(){
System.out.println("이름");
String name = scanner.nextLine();
System.out.println("전화번호");
String phone = scanner.nextLine();
Friend friend = new Friend(name, phone);
fm.addFriend(friend);

}

public void search(){
System.out.println("조회하실 이름을 입력하세요");
String name = scanner.nextLine();
List<Friend> list = fm.searchFriend(name);
print(list);
}

public void print(List<Friend> list){
System.out.println("이름 전화번호");
for(Friend friend : list){
System.out.println(friend.getName()+" "+friend.getPhone());
}
}

public void delete(){
System.out.println("삭제할 친구의 전화번호를 입력하세요");
String phone = scanner.nextLine();
int delete = fm.deleteFriend(phone);
System.out.println(delete + "명의 친구를 삭제했습니다.");
}



}


5. Test코드를 작성해보았다.(처음해본 경험이다. TDD를 맛볼 수 있는 좋은 경험이었다.)

package my.examples.friendlist;

import my.examples.friendlist.dto.Friend;
import my.examples.friendlist.dto.FriendManager;
import org.junit.Before;

public class Test {
private Friend friend1;
private Friend friend2;
private FriendManager fm;

@Before
public void init(){
friend1 = new Friend("hong","010-5052-4754");
friend2 = new Friend("scw","010-1111-2222");
fm = new FriendManager();
}

@org.junit.Test
public void addTest(){

fm.addFriend(friend1);
fm.addFriend((friend2));
System.out.println(fm.countFriend());
}

@org.junit.Test
public void searchTest(){
fm.addFriend(friend1);
fm.addFriend(friend2);
System.out.println(fm.searchFriend("hong"));
}

@org.junit.Test
public void deleteTest(){
fm.addFriend(friend1);
fm.addFriend(friend2);
System.out.println(fm.deleteFriend("010-5052-4754"));
}
}


6. FriendExam 클래스를 만들어 main메소드에서 만든 것들을 실행시켰다. 

package my.examples.friendlist.dto;

public class FriendExam {
public static void main(String[] args){
FriendUI ui = new FriendUI();

while(true){
int selectNum = Integer.parseInt(ui.startUI());
if(selectNum == 1){
ui.input();
}else if(selectNum == 2){
ui.search();
}else if(selectNum == 3){
ui.delete();
}else if(selectNum == 4){
System.out.println("종료되었습니다.");
break;
}
}
}
}



실행화면(console)이다.


*******친구 정보 시스템********

1.입력 || 2.조회(이름) || 3. 절교(전화번호) || 4.종료

1

이름

scw

전화번호

010-1111-2222

*******친구 정보 시스템********

1.입력 || 2.조회(이름) || 3. 절교(전화번호) || 4.종료

2

조회하실 이름을 입력하세요

scw

이름       전화번호

scw    010-1111-2222

*******친구 정보 시스템********

1.입력 || 2.조회(이름) || 3. 절교(전화번호) || 4.종료

3

삭제할 친구의 전화번호를 입력하세요

010-1111-2222

1명의 친구를 삭제했습니다.

*******친구 정보 시스템********

1.입력 || 2.조회(이름) || 3. 절교(전화번호) || 4.종료

4

종료되었습니다.


Process finished with exit code 0


'Java' 카테고리의 다른 글

Class.forName()의 동작 원리  (0) 2019.01.23
Thread란?  (0) 2019.01.04
Day 10. 예외처리  (0) 2018.12.19
IO 패키지 예습  (0) 2018.12.17
Day 9. maven에서 json사용하기  (0) 2018.12.17