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