본문 바로가기

Java/JAVA STUDY

JAVA 친구 주소록 관리 프로그램 _추가 : 상속(extends)과 오버라이딩(Override)

상속(extends)과 오버라이딩(Override)으로 기능 간결하게 수정, 중학교(MiddleFriend) class 추가


 * 문제) 고등학교/대학교 친구 주소록 관리 프로그램.

 *       키보드로부터 입력 받아 저장하고, 
 *       사용자의 요청시 출력하는 기능을 구현하세요. 

 

 *       - 중학교 친구 : 이름 / 폰번호 / 주소 / 반.
 *       - 고등학교 친구 : 이름 / 폰번호 / 주소 / 직업.
 *       - 대학교 친구 : 이름 / 폰번호 / 주소 / 전공.
 *       
 */

 

MVC

 

Model : DB와 연동해 구성. 데이터 저장
View : 보여주는 역할
Controller :  모델과 뷰를 연동해 동작시켜주는 역할

 

(View가 뭔지 정확하게 이해할 것..!)

세 파트로 나뉘어 프로젝트를 구성. 가장 많이 일반적으로 잡아주는 패턴 모델

 

가장 간단한 MVC의 형태

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package exam15;
 
public class AddressBook {
    /*
     * 문제) 고등학교/대학교 친구 주소록 관리 프로그램.
     *       - 중학교 친구 : 이름 / 폰번호 / 주소 / 반.
     *       - 고등학교 친구 : 이름 / 폰번호 / 주소 / 직업.
     *       - 대학교 친구 : 이름 / 폰번호 / 주소 / 전공.
     *       
     *       키보드로부터 입력 받아 저장하고,
     *       사용자의 요청시 출력하는 기능을 구현하세요.
     */
    public static void main(String[] args) {
        Menu menu = new Menu();
        
        menu.displayMenu();
    }
}
 
cs

Controller-----------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package exam15;
 
import java.util.Scanner;
 
class Menu {
    FriendInfoController controller;
 
    Menu(){ 
        controller = new FriendInfoController();
    }
    
    public void displayMenu() {
        
        while(true) {
            System.out.println("*****  메뉴 선택  *****");
            System.out.println("0. 프로그램 종료.");
            System.out.println("1. 중학교 친구 정보 저장.");
            System.out.println("2. 고교 친구 정보 저장.");
            System.out.println("3. 대학교 친구 정보 저장.");
            System.out.println("4. 중학교 친구 정보 출력.");
            System.out.println("5. 고교 친구 정보 출력.");
            System.out.println("6. 대학교 친구 정보 출력.");
            System.out.println("7. 친구 정보 출력.");
            
            System.out.print("원하는 항목 번호를 선택하세요>> ");
            
            Scanner input = new Scanner(System.in);
            
            int choice = input.nextInt();
            
            switch(choice) {
                case 0:
                    System.out.println("프로그램을 종료합니다.");
                    return;
                case 1case 2case 3// 중/고/대학교 친구 정보 저장.
                    controller.addFriend(choice);
                    break;
                case 4//중학교 친구 정보 출력
                    controller.displayMiddleFriendInfo();
                    break;
                case 5// 고교 친구 정보 출력
                    controller.displayHighFriendInfo();
                    break;
                case 6// 대학교 친구 정보 출력
                    controller.displayUnivFriendInfo();
                    break;
                case 7:
                    controller.displayFriendInfo();
                    break;
                default:
                    System.out.println("잘못된 입력을 하셨습니다.");
                    System.out.println("번호를 확인하세요.");
                    break;
            }
        }
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package exam15;
 
import java.util.Scanner;
 
// menu -> 데이터 입력 -> 저장
class FriendInfoController {
    private Friend[] friend;
    private int indexOfFriend;
    final private int MAX_FRIEND;
 
    FriendInfoController(){
        MAX_FRIEND = 200;
        indexOfFriend = 0;
        friend = new Friend[MAX_FRIEND];
    }
    
    public void addFriend(int choice) {
        Scanner input = new Scanner(System.in);
        String work, major, ban;
        
        System.out.print("이름을 입력하세요 : ");
        String name = input.nextLine();
        System.out.print("전화번호를 입력하세요 : ");
        String phone = input.nextLine();
        System.out.print("주소를 입력하세요 : ");
        String address = input.nextLine();
        
        if(choice == 2) {
            System.out.print("직업을 입력하세요 : ");
            work = input.nextLine();
            
            friend[indexOfFriend++= new HighFriend(name, phone, address, work);
            
        }else if(choice == 3){
            System.out.print("전공을 입력하세요 : ");
            major = input.nextLine();
            
            friend[indexOfFriend++= new UnivFriend(name, phone, address, major);
        
        }else if(choice == 1){
            System.out.print("반을 입력하세요 : ");
            ban = input.nextLine();
            
            friend[indexOfFriend++= new MiddleFriend(name, phone, address, ban);
        }
        
    }
    
    public void displayHighFriendInfo() { 
        for(int i = 0; i < indexOfFriend; i++) {
            if(friend[i] instanceof HighFriend) {
                friend[i].displayOverridingFriendInfo();
                System.out.println();
            }
        }
    }
    
    public void displayUnivFriendInfo() { 
        for(int i = 0; i < indexOfFriend; i++) {
            if(friend[i] instanceof UnivFriend) {
                friend[i].displayOverridingFriendInfo();
                System.out.println();
            }
        }
    }
    
    public void displayMiddleFriendInfo() { 
        for(int i = 0; i < indexOfFriend; i++) {
            if(friend[i] instanceof MiddleFriend) {
                friend[i].displayOverridingFriendInfo();
                System.out.println();
            }
        }
    }
    
    public void displayFriendInfo() {
        for(int i=0; i < indexOfFriend; i++) {
            friend[i].displayOverridingFriendInfo();
            System.out.println();
        }
    }
}
cs

 

Model (DB)--------------------------------------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package exam15;
 
class Friend {
    // field
    private String name; // 이름
    private String phoneNum; // 폰번호
    private String address; // 주소
    
    // Constructor
    Friend(String name, String phoneNum, String address){
        this.name = name;
        this.phoneNum = phoneNum;
        this.address = address;
    }
    
    // Method
    public void displayFriendInfo() {
        System.out.println("이름 : "+name);
        System.out.println("폰번호 : "+phoneNum);
        System.out.println("주소 : "+address);
    }
    
    public void displayOverridingFriendInfo() {}
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package exam15;
 
class MiddleFriend extends Friend{
    private String ban; //반
    
    MiddleFriend(String name, String phoneNum, String address, String ban){
        super(name, phoneNum, address);
        this.ban = ban;
    }
    
    public void displayMiddleFriendInfo() {
        displayFriendInfo();
        System.out.println("반 : "+ban);
    }
    
    public void displayOverridingFriendInfo() {
        displayFriendInfo();
        System.out.println("반 : "+ban);
    }
 
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package exam15;
 
class HighFriend extends Friend{ // 고등학교 친구
    private String work; // 직업
    
    HighFriend(String name, String phoneNum, String address, String work){
        super(name, phoneNum, address);
        this.work = work;
    }
    
    public void displayHighFriendInfo() {
        displayFriendInfo();
        System.out.println("직업 : "+work);
    }
    
    public void displayOverridingFriendInfo() {
        displayFriendInfo();
        System.out.println("직업 : "+work);
    }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package exam15;
 
class UnivFriend extends Friend{
    private String major; // 전공
    
    UnivFriend(String name, String phoneNum, String address, String major){
        super(name, phoneNum, address);
        this.major = major;
    }
    
    public void displayUnivFriendInfo() {
        displayFriendInfo();
        System.out.println("전공 : "+major);
    }
    
    public void displayOverridingFriendInfo() {
        displayFriendInfo();
        System.out.println("전공 : "+major);
    }
}
cs

 

출력 결과-----------------------------------------------------------------------------------------------------------------------------