상속(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 1: case 2: case 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 |
출력 결과-----------------------------------------------------------------------------------------------------------------------------

'Java > JAVA STUDY' 카테고리의 다른 글
JAVA Thread 추가하는 법 (0) | 2021.01.26 |
---|---|
JAVA Generic 자바 제네릭을 활용한 회원 정보 출력 프로그램 (0) | 2021.01.24 |
JAVA 로또번호 생성기 (0) | 2021.01.22 |
JAVA 사용자가 지정한 예외 처리 (0) | 2021.01.21 |
JAVA 친구 주소록 관리 프로그램 (1) | 2021.01.18 |