반응형
추상메소드를 이용한 스택/을 만들었습니다.
추상메소드를 가진 Memory를 각각 Stack와Queue에서 상속받아 구체화 시키는 작업입니다.
훨씬 더 간단해진 코드를 만들 수 있었습니다.
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
public abstract class Memory {
protected int arr[]; //arr,index 선언
protected int index;
public Memory() { //생성자 초기화
arr = new int[5];
index = 0;
}
public Memory(int count) { //오버로딩
arr = new int[count];
}
public void push(int i) { //배열에 입력
arr[index++] = i;
System.out.println("입력값 : "+ i);
}
public abstract int pop(); //추상메소드를 통한 출력 동적바인딩.
}
=======================================================================
//후입선출 LIFO
public class MyStack extends Memory { //Memory 상속
public int pop() { //pop 추상 메소드를 받는다. 구체화
return arr[--index]; //index 값이 증가해 있기 때문에 전위 감소
}
}
=========================================================================
//선입선출 FIFO
public class MyQueue extends Memory { //Memory 상속
private int front; //필드 변수
public MyQueue() { //생성자 front 초기화
front = 0;
}
public int pop() { //추상메소드를 받는 함수. 구체화
return arr[front++];
}
}
==========================================================================
public class MainClass {
public MainClass() {
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Memory mem; // 메모리
MyStack ms = new MyStack(); // 스택 객체 생성
MyQueue mq = new MyQueue(); // 큐 객체 생성
int index = 0; // 인덱스 초기화
int index1 = 0;
while (true) {
System.out.println("1.Stack 2.Queue 3.break");
index = sc.nextInt(); // 입력받는 값
if (index == 1) { // 조건문을 통해 큐 스택 선택
mem = ms;
} else if (index == 2) {
mem = mq;
} else if (index == 3) {
break; // 반복문 탈출
} else { // 선택사항 외에 다시 입력
System.out.println("다시 입력하세요");
continue; // 반복문 제일 위로 이동
}
while (true) {
System.out.println("1.push 2.pop 3.break");
index1 = sc.nextInt();
if (index1 == 1) {
System.out.println("값을 입력하세요 : ");
mem.push(sc.nextInt()); //입력받은값을 매개변수로 push에 입력
} else if (index1 == 2) {
} else if (index1 == 3) {
break; // 반복문 탈출 //반복문 탈출
} else { // 선택사항 외에 다시 입력
System.out.println("다시 입력하세요");
continue; // 반복문 제일 위로 이동
}
}
}
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
|
|
반응형
'JAVA' 카테고리의 다른 글
[Java] 자바 직렬화(Serialization) (0) | 2021.04.12 |
---|---|
[Java] ArrayList를 이용한 성적처리V3 (0) | 2019.06.13 |
[Java] 배열을 이용한 다수 성적처리V2 (0) | 2019.06.13 |
[Java] 배열을 이용한 성적처리V1 (0) | 2019.06.13 |
[Java] 계산기 만들기 (switch문 연습) (0) | 2019.06.12 |