4월 13일 내용정리
아래는 내가 스스로 짜본 코드
처음으로 객체지향을 좀 이해해보고 짠코드...
감격..그전에도 코드를 짜봤으나 객체지향을 이해하고 짠건 아니고 남들이 짠코드 흉내정도...이번에는 다르다!!!
선언 클래스
package study_0413;
import java.util.Scanner;
public class printerPractice {
/*코드설계
*초기용지 100장 설정
*10장을 인쇄하면 "10장 인쇄 했습니다."출력
*100-10=90 현재 남은 용지는 90장 있습니다.
*
* 만약 용지가 부족하면
*90장 남았는데 100장 더 출력하라고 하면
*90-100=-10 90장은 출력하고 -10장은 모자른다고 출력하기
*용지를 보충할건지 묻기
*
*용지를 50장 보충한다고 하면
*기존 총장수=기존남은용지장+50하고
*총장수 남았습니다.
*
*
*다짜면 양면인지 단면 인지 구분하고다시 출력하기
* 양면 단면 구분했으면 private로 출력하기
*
*
* void는 메서드안에 컴파일러가 임의로 return을 넣어주며, 이것은 메서드가 끝났고, 반환값은 없으면
* 호출한곳으로 돌아가 그다음거 실행
* 반환값이 있으면 반환타입과 return을 직접써주고 반화값을 호출한곳으로 데리고가서 마져 실행해줌
*
*/
//필드 선언
int printNum;
int printMinus;
int printPlus;
//생성자
public printerPractice(int printNum) {
this.printNum=printNum;
}
//메서드 선언
public int doubleCopy(int printMinus) {
if(printMinus%2==0) {
this.printMinus=printMinus/2;
return this.printMinus;
}else{
this.printMinus=(printMinus/2)+1;
return this.printMinus;
}
}
public void showPrint(int printMinus) {
Scanner scan=new Scanner(System.in);
System.out.println("현재 프린트 용지 매수:"+printNum);
System.out.println("단면인쇄(1)양면인쇄(2)");
int num01=scan.nextInt();
if(num01==1) {
System.out.println("단면인쇄 필요 용지매수:"+printMinus);
printNum-=printMinus;
}else if(num01==2){
doubleCopy(printMinus);
System.out.println("양면인쇄 필요 용지매수:"+this.printMinus);
printNum-=this.printMinus;
}
if(0<printNum) {
System.out.println("남은 프린트 용지 매수:"+printNum);
}else if(0==printNum){
System.out.println("인쇄 용지가 없습니다.");
System.out.println("용지를 보충하세요.");
printNum=0;
System.out.println("보충 하시겠습니까? yes(1),no(2)");
int num=scan.nextInt();
if(num==1) {
System.out.println("보충매수를 입력하세요");
int numPlus=scan.nextInt();
showPlus(numPlus);
}else if(num==2) {
System.out.println("인쇄를 종료 합니다.");
return;//메서드 빠져나오기
}
}else {
System.out.println("인쇄 용지가"+(printNum*-1)+"장 모자릅니다.");
System.out.println("용지를 보충하세요.");
System.out.println("보충 하시겠습니까? yes(1),no(2)");
int num=scan.nextInt();
if(num==1) {
System.out.println("보충매수를 입력하세요");
int numPlus=scan.nextInt();
showPlus(numPlus);
}else if(num==2) {
System.out.println("인쇄를 종료 합니다.");
return; //메서드 빠져나오기
}
}
}
public void showPlus(int printPlus) {
System.out.println(printPlus+"장 보충");
System.out.println("추가인쇄"+(printNum*-1)+"장");
printNum+=printPlus;
System.out.println("현재 남은 용지 매수:"+printNum);
}
}
실행 클래스
package study_0413;
import java.util.Scanner;
public class printerPractice_Tset {
public static void main(String[] args) {
printerPractice PP =new printerPractice(100);
Scanner scan=new Scanner(System.in);
for(int i=0;true;i++) {
System.out.println("인쇄진행하시겠습니까? yes(1),no(2)");
int goStop=scan.nextInt();
if(goStop==1) {
System.out.println("현재 인쇄가능 매수는"+PP.printNum);
System.out.println("인쇄매수를 입력하세요.");
int num=scan.nextInt();
PP.showPrint(num);
}else if(goStop==2) {
System.out.println("인쇄프로그램을 종료합니다.");
break;
}
}
}
}