Java -OOP -1
약간 게임으로 치면 보스 등장 같은 느낌같다. 내용이 이..이해는 되는데.. (되는걸까..) 아직 개개인과 친해지지도않았는데 갑자기 낯선 친구를 만난느낌이랄까.
객체지향프로그래밍 oop 라는걸 해봤다. 강의도 듣고 책을 보면서 객체지향에 대한 학습을 했는데 오… 도저히 무슨말을 하는지 모르겠어서 살짝 막히던 중이였는데 실습으로 한번 해보고나니 아!! 이것이군 ! 하고 깨달음이 왔다. 확실히 편리하고 정리가 되니까 좋긴하다. 저많을걸 한줄에 적는다 생각하면 (절레절레.. ) 넘 끔찍하다. 아직 초초초초초초짜 여서 약간 퍼즐이 맞춰지려고하는데 삐뚤어진 모양새인것같다.. ㅎㅎ
이게 이렇게 프로그램 짜면서 이해하세요 하면 와우 너무재밌다인데 이론적으로 접근하니까 토..가나와요.. 하지만.. 꼭해야하는거겠지. 재!밌겠다 !! 코피나게 열심히하자 ^^
대표 Main class
import java.util.*;
import Address.RunAddress;
import Score.RunScore;
import product.RunProduct;
public class Main {
public static void main(String[] args) {
Scanner s= new Scanner(System.in);
boolean run= true;
while(run) {
System.out.println("\n********메인메뉴*********");
System.out.println("----------------------------");
System.out.println("1.성적관리");
System.out.println("2.주소관리");
System.out.println("3.상품관리");
System.out.println("4.프로그램종료");
System.out.println("----------------------------");
System.out.print("선택>");
int menu = Integer.parseInt(s.nextLine());
switch(menu) {
case 1:
// RunScore s1 = new RunScore();
// s1.start();
RunScore.start (); //Runscore class 에 static 추가해주면됨
break;
case 2:
RunAddress.start();
break;
case 3:
RunProduct.start();
break;
case 4:
run= false;
break;
default:
System.out.println("1~3번 메뉴를 선택하세요!");
}//switch
} //while
System.out.println("프로그램 종료!");
} //main
} //class
이 클래스가 제일 먼저 뜨는 말그대로 메인이 될것이고,
여태 짰던 프로그램들이 1~3번에 들어가게 만들것이다.
start() 라는 메소드에 대해서는 정확하게 공부하지 않아서 잘모르겠지만 RunScore를 불러오는 메서드이다.
다른 구조는 똑같다.
이제 1번 성적관리 클래스를 만들어보자 !
1번 성적관리
class Score
public class Score {
//필드
private String name="홍길동";
private int kor;
private int eng ;
private int mat ;
private int tot;
private double avg;
//기본생성자
//메서드
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
public int getTot() {
return tot;
}
public void setTot(int tot) {
this.tot = tot;
}
public double getAvg() {
return avg;
}
public void setAvg(double avg) {
this.avg = avg;
}
Source -> Genernate Getter Setter 로 간단하게 불러왔다.
메인class RunScore
import java.util.ArrayList;
import java.util.Scanner;
public class RunScore {
public static void start () {
ArrayList<Score> array = new ArrayList<>();
Scanner s = new Scanner(System.in);
boolean run =true;
while(run) {
System.out.println("----------------------------------------------------------");
System.out.print("1.성적등록|");
System.out.print("2.성적목록|");
System.out.print("3.성적검색|");
System.out.print("4.성적수정|");
System.out.print("5.성적삭제|"); //CURD 작업
System.out.println("6.프로그램종료");
System.out.println("----------------------------------------------------------");
System.out.print("선택>");
int menu = s.nextInt(); s.nextLine(); //int값입력하고 엔터칠꺼니까 들어가서 없어지는것 공식처럼외울것
switch(menu) {
case 1: //성적등록
Score s1 = new Score();
Score score =new Score();
System.out.print("이름>");
String name=s.nextLine();
score.setName(name);
System.out.print("국어>");
int kor=Integer.parseInt(s.nextLine());
score.setKor(kor);
System.out.print("영어>");
int eng=Integer.parseInt(s.nextLine());
score.setEng(eng);
System.out.print("수학>");
int mat=Integer.parseInt(s.nextLine());
score.setMat(mat);
score.setTot(kor+eng+mat);
score.setAvg(score.getTot()/3.);
System.out.println("총점 :" +score.getTot());
System.out.printf("평균 :%.2f" ,score.getAvg());
System.out.println("");
array.add(score); //꼭 바구니에넣어줘야한다!
break;
case 2:
System.out.println("이름"+"\t"+"\t"+"국어"+"\t"+"영어"+"\t"+"수학"+"\t"+"총점"+"\t"+"평균");
System.out.println("==================================");
for(Score a:array) {
System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\n", a.getName(),a.getKor(),a.getEng(),a.getMat(),a.getTot(),a.getAvg());
}
break;
case 3:
System.out.print("이름>");
String sname=s.nextLine();
boolean find = false;
for(Score a:array) {
if(a.getName().equals(sname)) {
System.out.println("---------");
System.out.printf("국어:%d\n",a.getKor());
System.out.printf("영어:%d\n",a.getEng());
System.out.printf("수학:%d\n",a.getMat());
System.out.printf("합계:%d\n",a.getTot());
System.out.printf("총점:%.2f\n",a.getAvg());
find =true;
}
}
if(!find) System.out.println("등록학생이없습니다!");
break;
case 4:
System.out.print("이름>"); sname = s.nextLine();
boolean find1=false;
for(Score a:array) {
if(sname.equals(a.getName())) {
System.out.printf("국어:%d>", a.getKor());
String skor =s.nextLine();
if(!skor.equals(""))
a.setKor(Integer.parseInt(skor));
System.out.printf("영어:%d>", a.getEng());
String seng =s.nextLine();
if(!seng.equals(""))
a.setKor(Integer.parseInt(seng));
System.out.printf("수학:%d>", a.getEng());
String smat =s.nextLine();
if(!smat.equals(""))
a.setKor(Integer.parseInt(smat));
a.setTot(a.getKor()+a.getEng()+a.getMat());
a.setAvg(a.getTot()/3.);
System.out.printf("총점:%d\n",a.getTot());
System.out.printf("평균:%.2f\n",a.getAvg());
find1=true;
}
}
if(find1==false) System.out.println("수정할 학생이 없습니다.");
break;
case 5:
System.out.print("이름>");
sname=s.nextLine();
find = false;
for(Score a:array) {
if(a.getName().equals(sname)) {
array.remove(a);
find = true;
break;
}
}
if(find==true) {
System.out.println("삭제완료");
}else {
System.out.println("삭제할 이름이 없습니다!");
}
break;
case 6:
run = false;
break;
default:
System.out.println("1~6번을 선택하세요!");
} //switch
}// while
System.out.println("성적관리 프로그램 종료!");
}
}
배운것 그대로 코드이다.
2번 주소관리
Address class
public class Address {
//필드
private String name;
private String tel;
private String address;
//기본생성자
//메서드
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
RunAddress 메인메서드
import java.util.*;
import ex17.Score;
public class RunAddress {
public static void start () {
ArrayList<Address> array = new ArrayList<>();
Scanner s = new Scanner(System.in);
boolean run =true;
while(run) {
System.out.println("----------------------------------------------------------");
System.out.print("1.주소등록|");
System.out.print("2.주소목록|");
System.out.print("3.주소검색|");
System.out.print("4.주소수정|");
System.out.print("5.주소삭제|"); //CURD 작업
System.out.println("6.프로그램종료");
System.out.println("----------------------------------------------------------");
System.out.print("선택>");
int menu = s.nextInt(); s.nextLine();
switch(menu) {
case 1:
Address address = new Address();
System.out.print("이름>");
address.setName(s.nextLine());
System.out.print("전화번호>");
address.setTel(s.nextLine());
System.out.print("주소>");
address.setAddress(s.nextLine());
System.out.println("");
array.add(address);
break;
case 2:
System.out.printf("이름"+"\t"+"\t"+"전화번호"+"\t"+"\t"+"\t"+"주소"+"\n");
System.out.println("==================================");
for(Address a:array) {
System.out.printf("%s\t%s\t%s\n", a.getName(), a.getTel(), a.getAddress());
}
break;
case 3:
System.out.print("이름>");
String sname=s.nextLine();
boolean find = false;
for(Address a:array) {
if(a.getName().equals(sname)) {
System.out.println("---------");
System.out.printf("이름:%s\n",a.getName());
System.out.printf("전화번호:%s\n",a.getTel());
System.out.printf("주소:%s\n",a.getAddress());
find =true;
break;
}
}
if(find ==false) System.out.println("등록된 이름이 없습니다.");
break;
case 4:
System.out.print("이름>");
sname = s.nextLine();
boolean find1=false;
for(Address a:array) {
if(sname.equals(a.getName())) {
System.out.printf("전화번호:%s>", a.getTel());
String sTel =s.nextLine();
if(!sTel.equals(""))
a.setTel(sTel);
System.out.printf("주소:%s>", a.getAddress());
String sAddress =s.nextLine();
if(!sAddress.equals(""))
a.setAddress(sAddress);
find1=true;
}
}
if(find1==false) System.out.println("수정할 학생이 없습니다.");
break;
case 5:
System.out.print("이름>");
sname=s.nextLine();
find = false;
for(Address a:array) {
if(a.getName().equals(sname)) {
array.remove(a);
find = true;
break;
}
}
if(find==true) {
System.out.println("삭제완료");
}else {
System.out.println("삭제할 이름이 없습니다!");
}
break;
case 6:
run = false;
break;
default:
System.out.println("1~6번 메뉴를 선택하세요 !");
}//switch
}//while
System.out.println("주소관리 프로그램종료!");
}//start
}//RunAddress
3번 상품관리
class pro
public class pro {
//필드
private String name;
private int price;
private int qua;
private int sum;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getQua() {
return qua;
}
public void setQua(int qua) {
this.qua = qua;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
}
class RunScore
import java.util.ArrayList;
import java.util.Scanner;
import Score.Score;
public class RunProduct {
public static void start() {
ArrayList<pro> array = new ArrayList<>();
Scanner s = new Scanner(System.in);
boolean run =true;
while(run) {
System.out.println("----------------------------------------------------------");
System.out.print("1.상품등록|");
System.out.print("2.상품목록|");
System.out.print("3.상품검색|");
System.out.print("4.상품수정|");
System.out.print("5.상품삭제|"); //CURD 작업
System.out.println("6.프로그램종료");
System.out.println("----------------------------------------------------------");
System.out.print("선택>");
int menu = s.nextInt(); s.nextLine();
switch(menu) {
case 1:
pro product = new pro();
System.out.print("이름>");
product.setName(s.nextLine());
System.out.print("가격>");
int price = Integer.parseInt(s.nextLine());
product.setPrice(price);
System.out.print("수량>");
int qua = Integer.parseInt(s.nextLine());
product.setQua(qua);
product.setSum(product.getPrice()*product.getQua());
System.out.printf("금액:%d\n", product.getSum());
array.add(product);
break;
case 2:
for(pro p:array) {
System.out.printf("%-10s\t%d\t%d\t%d\n",
p.getName(),p.getPrice(),p.getQua(),p.getSum());
}
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
run = false;
break;
default:
System.out.println("1~6번을 선택하세요.");
}
} //while
System.out.println("상품관리 프로그램종료!");
}//start
}//RunProduct
이렇게 class 별로 패키지를 각각 생성해서 보기좋게 묶어놓았다.
잘출력되는걸 볼수있다. (세부출력내용은 넣지않음)
댓글남기기