티스토리 뷰
[주제]
- 클래스를 활용하여 배열 기반의 스택 구현하기
[중요]
- 'playerCls' 객체를 이용하여 'DTOClass'에 접근 후 멤버 변수의 값을 저장
※ 'playerCls'라는 가상의 껍데기만 있는 선수를 만든 후 정보(man_id ~ money)를 입력 후 저장
- 'dto'라는 배열(스택) 객체를 통해 'DTOClass'에 접근하여 배열 인덱스에 'playerCls'를 저장
[소스 코딩]
■ DTOClass.java
package sampleDao; public class DTOClass { private int man_id; private String first_name; private String last_name; private String position; private int money; public DTOClass() {} public int getMan_id() { return man_id; } public void setMan_id(int man_id) { this.man_id = man_id; } public String getFirst_name() { return first_name; } public void setFirst_name(String first_name) { this.first_name = first_name; } public String getLast_name() { return last_name; } public void setLast_name(String last_name) { this.last_name = last_name; } public String getPosition() { return position; } public void setPosition(String position) { this.position = position; } public int getMoney() { return money; } public void setMoney(int money) { this.money = money; } } | cs |
■ DAOClass.java
package sampleDao; import java.util.Scanner; import sampleDao.DTOClass; public class DAOClass { Scanner sc = new Scanner(System.in); private int top; private final int maxSize = 2; // 배열의 최대 개수 private DTOClass dto[]; ///// 생성자. 리스트 공간 초기화 public DAOClass() { dto = new DTOClass[maxSize]; top = -1; } ///// 리스트에 등록된 선수가 없는지 확인 public boolean empty() { return (top == -1); } ///// 리스트에 선수를 더 이상 등록할 수 없는 상태인지 확인 public boolean full() { return (top == maxSize-1); } ///// 선수 등록 public void push() { if (full()) throw new ArrayIndexOutOfBoundsException((top + 1) + ">=" + maxSize); DTOClass playerCls = new DTOClass(); System.out.println("선수를 등록합니다."); System.out.print("번호: "); playerCls.setMan_id(sc.nextInt()); System.out.print("이름: "); playerCls.setFirst_name(sc.next()); System.out.print("성: "); playerCls.setLast_name(sc.next()); System.out.print("위치: "); playerCls.setPosition(sc.next()); System.out.print("연봉: "); playerCls.setMoney(sc.nextInt()); dto[++top] = playerCls; System.out.println(); } ///// 선수 검색 public DTOClass peek() { if(empty()) throw new ArrayIndexOutOfBoundsException(top); // 가장 마지막에 등록된 선수의 정보 출력 System.out.println("번호:" + dto[top].getMan_id() + " 이름:" + dto[top].getFirst_name() + " 성:" + dto[top].getLast_name() + " 위치:" + dto[top].getPosition() + " 연봉:" + dto[top].getMoney()); System.out.println(); return dto[top]; } ///// 선수 삭제 ※ 실제 데이터가 삭제되지 않음 public DTOClass pop() { // 가장 마지막에 등록된 선수의 정보 출력 DTOClass player = peek(); top--; return player; } ///// 선수의 정보 수정 public void update() { System.out.print("수정할 선수 번호: "); int fPos = 0; int fNum = sc.nextInt(); // 리스트에서 동일한 번호의 선수 찾기 for (int i = 0; i < dto.length; i++) { if (fNum == dto[i].getMan_id()) { fPos = i; break; } } boolean endUpdate = false; while (!endUpdate) { System.out.println(); System.out.println("번호(1), 위치(2), 연봉(3), 종료(4)"); System.out.print("무엇을 수정 하시겠습니까?: "); while (true) { switch (sc.nextInt()) { case 1: System.out.print("새로운 번호: "); dto[fPos].setMan_id(sc.nextInt()); break; case 2: System.out.print("새로운 위치: "); dto[fPos].setPosition(sc.next()); break; case 3: System.out.print("새로운 연봉: "); dto[fPos].setMoney(sc.nextInt()); break; case 4: System.out.println("수정을 종료합니다."); endUpdate = true; break; default: System.out.println("'1 or 2 or 3 or 4'를 입력해주세요."); break; } break; } } System.out.println(); } ///// 리스트에 등록된 모든 선수 정보 출력 ※ 리스트에선 삭제됨 public void daoprint() { System.out.println(); System.out.println("[선수 리스트]"); while (top >= 0) { pop(); } } } | cs |
■ mainClass.java
package sampleDao; import java.util.Scanner; public class mainClass { public static void main(String[] args) { Scanner sc = new Scanner(System.in); DAOClass daocls = new DAOClass(); System.out.println("[선수 관리자 모드]"); boolean endManager = false; while (!endManager) { System.out.println("추가(1), 삭제(2), 검색(3), 수정(4), 출력(5), 종료(6)"); System.out.print("어느 작업을 하시겠습니까?: "); while (true) { switch (sc.nextInt()) { case 1: daocls.push(); break; case 2: System.out.println("제명된 선수"); daocls.pop(); break; case 3: System.out.println("가장 최근에 등록된 선수"); daocls.peek(); break; case 4: daocls.update(); break; case 5: daocls.daoprint(); break; case 6: System.out.println("관리자 모드를 종료합니다"); endManager = true; break; default: System.out.println("'1 or 3 or 4 or 5'를 입력해주세요"); break; } break; } } sc.close(); } } | cs |
■ 실행결과
■ 첨부파일
'프로그래밍 언어 > Java(연습)' 카테고리의 다른 글
추상 클래스, 인터페이스 (0) | 2016.05.09 |
---|---|
클래스(상속), Over Ride (0) | 2016.05.09 |
야구게임(객체 지향 클래스 연습) (0) | 2016.05.03 |
constuctor(생성자) (0) | 2016.05.03 |
객체 클래스, 접근 제어자 (0) | 2016.05.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 일기
- java
- 교육센터
- 대상
- System
- 여행영어 100일의 기적
- tdataset
- 작문
- VCL
- Delphi
- wfd
- 왕초보 영어회화 100일의 기적
- ADODB
- RA
- SysUtils
- Pte
- 말하기
- 자료구조
- 독해
- Reference
- 정렬
- 계산기
- 상황
- 문법
- SWT
- 응용
- 알고리즘
- 설명
- 스택
- 영어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함