KH10일차
2022. 7. 1. 18:03ㆍ코딩/Java
상속을 배웠따.
A부모클래스
package kh.java.func;
//7.01
public class Aclass extends Object {
private int num;
private String str;
public Aclass() {
super();
System.out.println("A기본생성자");
// TODO Auto-generated constructor stub
}
public Aclass(int num, String str) {
super();
System.out.println("A매개변수생성자");
this.num = num;
this.str = str;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public void overTest() {
System.out.println("A클래스 메소드");
}
}
B자식클래스
package kh.java.func;
//07.01
public class Bclass extends Aclass{//A클래스 상속
int num1;
public Bclass() {
super();
// TODO Auto-generated constructor stub
}
public Bclass(int num, String str) {
super(num, str);
// TODO Auto-generated constructor stub
}
public Bclass(int num1) {
super();
this.num1 = num1;
}
public Bclass(int num,String str,int num1) {
super(num,str);
System.out.println("B생성자");
this.num1 = num1;
}
@Override
public void overTest() {
System.out.println("B클래스 메소드");
}
}
대충 실험해본거
package kh.java.run;
import kh.java.func.Aclass;
import kh.java.func.Bclass;
public class Start {
public static void main(String[] args) {
// Aclass a = new Aclass();
// a.getNum();
// a.getStr();
Bclass b = new Bclass(100,"안녕하세요",10);
System.out.println(b.getNum());
b.overTest();
// Bclass b = new Bclass();
// b.getNum();
// b.getStr();
POINTMGR2
GOLD 기능
package kr.or.iei.point.vo;
public class Gold {// 생성자
private String grade;
private String name;
private int point;
public Gold() {
}
//매개변수 오버로딩
public Gold(String grade,String name,int point) {
this.grade = grade;
this.name = name;
this.point = point;
}
// 매개변수 오버로딩
// public Silver(String grade, String name, int pount, double bonus) {
// this.grade = grade;
// this.name = name;
// this.point = point;
// this.bonus = bonus;
// }
public String getGrade() {
return grade;
}
public String getName() {
return name;
}
public int getPoint() {
return point;
}
public double getBonus() {
return point*0.05;
}
public void setGrade(String grade) {
this.grade = grade;
}
public void setName(String name) {
this.name = name;
}
public void setPoint(int point) {
this.point = point;
}
// public void setBonus(double bonus) {
// this.bonus = bonus;
// }
}
SILVER 기능
package kr.or.iei.point.vo;
public class Silver {// 생성자
private String grade;
private String name;
private int point;
public Silver() {
}
//매개변수 오버로딩
public Silver(String grade,String name,int point) {
this.grade = grade;
this.name = name;
this.point = point;
}
// 매개변수 오버로딩
// public Silver(String grade, String name, int pount, double bonus) {
// this.grade = grade;
// this.name = name;
// this.point = point;
// this.bonus = bonus;
// }
public String getGrade() {
return grade;
}
public String getName() {
return name;
}
public int getPoint() {
return point;
}
public double getBonus() {
return point*0.02;
}
public void setGrade(String grade) {
this.grade = grade;
}
public void setName(String name) {
this.name = name;
}
public void setPoint(int point) {
this.point = point;
}
// public void setBonus(double bonus) {
// this.bonus = bonus;
// }
}
VIP기능
package kr.or.iei.point.vo;
public class Vip {// 생성자
private String grade;
private String name;
private int point;
public Vip() {
super();
// TODO Auto-generated constructor stub
}
public Vip(String grade, String name, int point) {
super();
this.grade = grade;
this.name = name;
this.point = point;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public double getBonus() {
return 0.07 * point;
}
}
Controller
package kr.or.iei.point.controller;
import java.util.Scanner;
import kr.or.iei.point.vo.Gold;
import kr.or.iei.point.vo.Silver;
import kr.or.iei.point.vo.Vip;
public class PointController {
// 전역변수선언
private Silver[] sMembers;// 실버라는 배열에 저장
private Gold[] gMembers;
private Vip[] vMembers;
private int sIndex;
private int gIndex;
private int vIndex;
private int flag;
private Scanner sc;
// 위 세개의 초기화가 필요
public PointController() {// 이 생성자에서 초기화 작업
sMembers = new Silver[10];// 참조형은 처음에 null이 들어가있기에 초기화
gMembers = new Gold[10];
vMembers = new Vip[10];
sc = new Scanner(System.in);
// index는 처음값이 0으로 되있는데 0을쓸거기에 초기화를 안해도됨
// 다른 초기값을 사용하고 싶을시 세팅해야함
}
public void main() {
while (true) {
System.out.println("=====포인트관리 프로그램V2=====");
System.out.println("1. 회원 정보 등록");
System.out.println("2. 회원 전체 정보 출력");
System.out.println("3. 회원 1명 정보 출력");
System.out.println("4. 회원 정보 수정");
System.out.println("5. 회원 정보 삭제");
System.out.println("0. 프로그램 종료");
System.out.print("선택 > ");
int sel = sc.nextInt();
switch (sel) {
case 1:
insertMember();
break;
case 2:
printAllMember();
break;
case 3:
printOneMember();
break;
case 4:
updateMember();
break;
case 5:
deleteMember();
break;
case 0:
System.out.println("프로그램을 종료합니다");
return;
default:
System.out.println("잘못 입력 하셨습니다.");
break;
}
}
}
public void insertMember() {
System.out.println("=====회원 정보 등록=====");
System.out.print("회원 등급 입력[silver/gold/vip] : ");
String grade = sc.next();
System.out.print("회원 이름 입력 : ");
String name = sc.next();
System.out.println("회원 포인트 입력 : ");
int point = sc.nextInt();
// 보너스는 포인트의 2%
// 1) Silver s = new Silver(grade,name,point,point*0.02);
// 위방법 이나 아래방법이나 결과는 같다
// 2)Silver s = new Silver();//Silver라는 비어있는 객체생성
// s.setGrade(grade); //이후 set으로 4개 추가
// s.setName(name);
// s.setPoint(point);
// s.setBonus(point*0.02);
// 3)
switch (grade) {
case "silver":
Silver s = new Silver(grade, name, point);
// s.setBonus(point*0.02);
sMembers[sIndex] = s;
sIndex++;
System.out.println("회원 등록 완료 !");
break;
case "gold":
Gold g = new Gold(grade, name, point);
// s.setBonus(point*0.02);
gMembers[gIndex] = g;
gIndex++;
System.out.println("회원 등록 완료 !");
break;
case "vip":
Vip v = new Vip(grade, name, point);
// s.setBonus(point*0.02);
vMembers[vIndex] = v;
vIndex++;
System.out.println("회원 등록 완료 !");
break;
}
}
public void printAllMember() {
System.out.println("===== 전체 회원 출력 =====");
System.out.println("등급\t이름\t포인트\t보너스");
System.out.println("-------------------------");
for (int i = 0; i < sIndex; i++) {
Silver s = sMembers[i];
System.out.println(s.getGrade() + "\t" + s.getName() + "\t" + s.getPoint() + "\t" + s.getBonus());
}
for (int i = 0; i < gIndex; i++) {
Gold g = gMembers[i];
System.out.println(g.getGrade() + "\t" + g.getName() + "\t" + g.getPoint() + "\t" + g.getBonus());
}
for (int i = 0; i < vIndex; i++) {
Vip v = vMembers[i];
System.out.println(v.getGrade() + "\t" + v.getName() + "\t" + v.getPoint() + "\t" + v.getBonus());
}
}
public void printOneMember() {
System.out.println("=====회원 정보 출력=====");
System.out.println("조회할 회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchMember1(name);
if (searchIndex == -1) {
System.out.println("회원정보를 검색할 수 없습니다.");
} else {
if (searchIndex / 100 == 1) {
searchIndex -= 100;
Vip v = vMembers[searchIndex];
System.out.println("등급 : " + v.getGrade());
System.out.println("이름 : " + v.getName());
System.out.println("포인트 : " + v.getPoint());
System.out.println("보너스 : " + v.getBonus());
} else if (searchIndex / 10 == 1) {
searchIndex -= 10;
Gold g = gMembers[searchIndex];
System.out.println("등급 : " + g.getGrade());
System.out.println("이름 : " + g.getName());
System.out.println("포인트 : " + g.getPoint());
System.out.println("보너스 : " + g.getBonus());
} else {
Silver s = sMembers[searchIndex];
System.out.println("등급 : " + s.getGrade());
System.out.println("이름 : " + s.getName());
System.out.println("포인트 : " + s.getPoint());
System.out.println("보너스 : " + s.getBonus());
}
}
}
public void updateMember() {
System.out.println("=====회원 정보 수정=====");
System.out.println("수정 할 회원 이름 입력 : ");
String name = sc.next();
int[] result = searchMember3(name);
if (result[0] == 0) {
System.out.println("회원 정보를 조회할 수 없습니다.");
} else {
if (result[0] == 1) {
// Silver s = sMembers[result[1]];
// s.setGrade(grade);
// s.setName(updateName);
// s.setPoint(point);
for (int i = result[1]; i < sIndex - 1; i++) {
sMembers[i] = sMembers[i + 1];
}
sIndex--;
} else if (result[0] == 2) {
// Gold g = gMembers[result[1]];
// g.setGrade(grade);
// g.setName(updateName);
// g.setPoint(point);
for (int i = result[1]; i < gIndex - 1; i++) {
gMembers[i] = gMembers[i + 1];
}
gIndex--;
} else if (result[0] == 3) {
// Vip v = vMembers[result[1]];
// v.setGrade(grade);
// v.setName(updateName);
// v.setPoint(point);
for (int i = result[1]; i < vIndex - 1; i++) {
vMembers[i] = vMembers[i + 1];
}
vIndex--;
}
System.out.print("수정할 회원 등급입력 : ");
String grade = sc.next();
System.out.print("수정할 회원 이름입력 : ");
String updateName = sc.next();
System.out.print("수정할 포인트 입력 : ");
int point = sc.nextInt();
switch (grade) {
case "silver":
Silver s = new Silver(grade, updateName, point);
sMembers[sIndex] = s;
sIndex++;
break;
case "gold":
Gold g = new Gold(grade, updateName, point);
gMembers[gIndex++] = g;
break;
case "vip":
vMembers[vIndex++] = new Vip(grade, updateName, point);
break;
}
System.out.println("정보 수정 완료!");
}
}
public void deleteMember() {
System.out.println("=====회원 정보 삭제=====");
System.out.println("삭제 할 회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchMember2(name);
if (searchIndex == -1) {
System.out.println("회원 정보를 조회할 수 없습니다");
} else {
if (flag == 1) {
for (int i = searchIndex; i < sIndex - 1; i++) {
sMembers[i] = sMembers[i + 1];
}
sIndex--;
} else if (flag == 2) {
for (int i = searchIndex; i < gIndex - 1; i++) {
gMembers[i] = gMembers[i + 1];
}
gIndex--;
} else if (flag == 3) {
for (int i = searchIndex; i < vIndex - 1; i++) {
vMembers[i] = vMembers[i + 1];
}
vIndex--;
}
System.out.println("회원 정보 삭제 완료");
}
}
public int searchMember1(String name) {
for (int i = 0; i < sIndex; i++) {
// if(name.equals(sMembers[i].getName()))
Silver s = sMembers[i];
if (name.equals(s.getName())) {
return i;// 0~9
}
}
for (int i = 0; i < gIndex; i++) {
Gold g = gMembers[i];
if (name.equals(g.getName())) {
return i + 10;// 10~19
}
}
for (int i = 0; i < vIndex; i++) {
Vip v = vMembers[i];
if (name.equals(v.getName())) {
return i + 100;// 100~109 리턴
}
}
return -1;
}
public int searchMember2(String name) {
for (int i = 0; i < sIndex; i++) {
// if(name.equals(sMembers[i].getName()))
Silver s = sMembers[i];
if (name.equals(s.getName())) {
flag = 1;
return i;// 0~9
}
}
for (int i = 0; i < gIndex; i++) {
Gold g = gMembers[i];
if (name.equals(g.getName())) {
flag = 2;
return i;// 10~19
}
}
for (int i = 0; i < vIndex; i++) {
Vip v = vMembers[i];
if (name.equals(v.getName())) {
flag = 3;
return i;// 100~109 리턴
}
}
return -1;
}
public int[] searchMember3(String name) {
int[] result = new int[2];
for (int i = 0; i < sIndex; i++) {
// if(name.equals(sMembers[i].getName()))
Silver s = sMembers[i];
if (name.equals(s.getName())) {
result[0] = 1;
result[1] = i;
return result;
}
}
for (int i = 0; i < gIndex; i++) {
Gold g = gMembers[i];
if (name.equals(g.getName())) {
result[0] = 2;
result[1] = i;
return result;
}
}
for (int i = 0; i < vIndex; i++) {
Vip v = vMembers[i];
if (name.equals(v.getName())) {
result[0] = 3;
result[1] = i;
return result;
}
}
return result;
}
}
POINTMGR3
POINTMGR2와 컨트롤은 같은 코드를 사용했으나 기능에서는 상속을 사용
Silver
package kr.or.iei.point.vo;
public class Silver {
private String grade;
private String name;
private int point;
public Silver() {
super();
// TODO Auto-generated constructor stub
}
public Silver(String grade, String name, int point) {
super();
this.grade = grade;
this.name = name;
this.point = point;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public double getBonus() {
return 0.02 * point;
}
}
Gold
package kr.or.iei.point.vo;
public class Gold extends Silver{
public Gold() {
super();
// TODO Auto-generated constructor stub
}
public Gold(String grade, String name, int point) {
super(grade, name, point);
// TODO Auto-generated constructor stub
}
@Override
public double getBonus() {
return 0.05*getPoint();
}
}
Vip
package kr.or.iei.point.vo;
public class Vip extends Silver{
public Vip() {
super();
// TODO Auto-generated constructor stub
}
public Vip(String grade, String name, int point) {
super(grade, name, point);
// TODO Auto-generated constructor stub
}
@Override
public double getBonus() {
return 0.07*getPoint();
}
}
Vvip
package kr.or.iei.point.vo;
public class Vvip extends Silver{
public Vvip() {
super();
// TODO Auto-generated constructor stub
}
public Vvip(String grade, String name, int point) {
super(grade, name, point);
// TODO Auto-generated constructor stub
}
@Override
public double getBonus() {
return 0.1*getPoint();
}
}
Controller
package kr.or.iei.point.controller;
import java.util.Scanner;
import kr.or.iei.point.vo.Gold;
import kr.or.iei.point.vo.Silver;
import kr.or.iei.point.vo.Vip;
import kr.or.iei.point.vo.Vvip;
public class PointController {
private Silver[] sMembers;
private Gold[] gMembers;
private Vip[] vMembers;
private Vvip[] vvMembers;
private int sIndex;
private int gIndex;
private int vIndex;
private int vvIndex;
private int flag;
private Scanner sc;
public PointController() {
sMembers = new Silver[10];
gMembers = new Gold[10];
vMembers = new Vip[10];
vvMembers = new Vvip[10];
sc = new Scanner(System.in);
}
public void main() {
while (true) {
System.out.println("=====포인트 관리 프로그램 V2=====");
System.out.println("1. 회원 정보 등록");
System.out.println("2. 회원 전체 정보 출력");
System.out.println("3. 회원 1명 정보 출력");
System.out.println("4. 회원 정보 수정");
System.out.println("5. 회원 정보 삭제");
System.out.println("0. 프로그램 종료");
System.out.print("선택 > ");
int sel = sc.nextInt();
switch (sel) {
case 1:
insertMember();
break;
case 2:
printAllMember();
break;
case 3:
printOneMember();
break;
case 4:
updateMember();
break;
case 5:
deleteMember();
break;
case 0:
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("잘못 입력 하셨습니다.");
break;
}
}
}
public void insertMember() {
System.out.println("=====회원 정보 등록=====");
System.out.println("회원 등급 입력[silver,gold,vip,vvip] : ");
String grade = sc.next();
System.out.println("회원 이름 입력 : ");
String name = sc.next();
System.out.println("회원 포인트 입력 : ");
int point = sc.nextInt();
switch (grade) {
case "silver":
Silver s = new Silver(grade, name, point);
sMembers[sIndex] = s;
sIndex++;
System.out.println("회원등록완료!");
break;
case "gold":
Gold g = new Gold(grade, name, point);
gMembers[gIndex] = g;
gIndex++;
System.out.println("회원등록완료!");
break;
case "vip":
Vip v = new Vip(grade, name, point);
vMembers[vIndex] = v;
vIndex++;
System.out.println("회원등록완료!");
break;
case "vvip":
Vvip vv = new Vvip(grade, name, point);
vvMembers[vvIndex] = vv;
vvIndex++;
System.out.println("회원등록완료!");
break;
}
}// insertMember() 종료
public void printAllMember() {
System.out.println("=====전체 회원 출력=====");
System.out.println("등급\t이름\t포인트\t보너스");
System.out.println("=========================");
for (int i = 0; i < sIndex; i++) {
Silver s = sMembers[i];
System.out.println(s.getGrade() + "\t" + s.getName() + "\t" + s.getPoint() + "\t" + s.getBonus());
}
for (int i = 0; i < gIndex; i++) {
Gold g = gMembers[i];
System.out.println(g.getGrade() + "\t" + g.getName() + "\t" + g.getPoint() + "\t" + g.getBonus());
}
for (int i = 0; i < vIndex; i++) {
Vip v = vMembers[i];
System.out.println(v.getGrade() + "\t" + v.getName() + "\t" + v.getPoint() + "\t" + v.getBonus());
}
for (int i = 0; i < vvIndex; i++) {
Vvip vv = vvMembers[i];
System.out.println(vv.getGrade() + "\t" + vv.getName() + "\t" + vv.getPoint() + "\t" + vv.getBonus());
}
}// printAllMember종료
public void printOneMember() {
System.out.println("=====회원 정보 출력=====");
System.out.println("조회 할 회원 이름 입력 : ");
String name = sc.next();
int[] result = searchMember(name);
if (result[0] == 0) {
System.out.println("회원 정보를 조회할 수 없습니다.");
} else {
if (result[0] == 1) {
Silver s = sMembers[result[1]];
System.out.println("등급 : " + s.getGrade());
System.out.println("이름 : " + s.getName());
System.out.println("포인트 : " + s.getPoint());
System.out.println("보너스 : " + s.getBonus());
} else if (result[0] == 2) {
Gold g = gMembers[result[1]];
System.out.println("등급 : " + g.getGrade());
System.out.println("이름 : " + g.getName());
System.out.println("포인트 : " + g.getPoint());
System.out.println("보너스 : " + g.getBonus());
} else if (result[0] == 3) {
Vip v = vMembers[result[1]];
System.out.println("등급 : " + v.getGrade());
System.out.println("이름 : " + v.getName());
System.out.println("포인트 : " + v.getPoint());
System.out.println("보너스 : " + v.getBonus());
} else if (result[0] == 4) {
Vvip vv = vvMembers[result[1]];
System.out.println("등급 : " + vv.getGrade());
System.out.println("이름 : " + vv.getName());
System.out.println("포인트 : " + vv.getPoint());
System.out.println("보너스 : " + vv.getBonus());
}
}
}// printOneMember()종료
public void updateMember() {
System.out.println("=====회원 정보 수정=====");
System.out.println("수정 할 회원 이름 입력 : ");
String name = sc.next();
int[] result = searchMember(name);
if (result[0] == 0) {
System.out.println("회원 정보를 조회할 수 없습니다.");
} else {
if (result[0] == 1) {
for (int i = result[1]; i < sIndex - 1; i++) {
sMembers[i] = sMembers[i + 1];
}
sIndex--;
} else if (result[0] == 2) {
for (int i = result[1]; i < gIndex - 1; i++) {
gMembers[i] = gMembers[i + 1];
}
gIndex--;
} else if (result[0] == 3) {
for (int i = result[1]; i < vIndex - 1; i++) {
vMembers[i] = vMembers[i + 1];
}
vIndex--;
} else if (result[0] == 4) {
for (int i = result[1]; i < vvIndex - 1; i++) {
vvMembers[i] = vvMembers[i + 1];
}
vvIndex--;
}
System.out.print("수정할 회원 등급입력 : ");
String grade = sc.next();
System.out.print("수정할 회원 이름입력 : ");
String updateName = sc.next();
System.out.print("수정할 포인트 입력 : ");
int point = sc.nextInt();
switch (grade) {
case "silver":
Silver s = new Silver(grade, updateName, point);
sMembers[sIndex] = s;
sIndex++;
break;
case "gold":
Gold g = new Gold(grade, updateName, point);
gMembers[gIndex++] = g;
break;
case "vip":
vMembers[vIndex++] = new Vip(grade, updateName, point);
break;
case "vvip":
vvMembers[vvIndex++] =new Vvip(grade, updateName, point);
break;
}
System.out.println("정보 수정 완료!");
}
}// updateMember()종료
public void deleteMember() {
System.out.println("=====회원 정보 삭제=====");
System.out.println("삭제 할 회원 이름 입력 : ");
String name = sc.next();
int[] result = searchMember(name);
if (result[0] == 0) {
System.out.println("회원 정보를 조회할 수 없습니다.");
} else {
if (result[0] == 1) {
for (int i = result[1]; i < sIndex - 1; i++) {
sMembers[i] = sMembers[i + 1];
}
sIndex--;
} else if (result[0] == 2) {
for (int i = result[1]; i < gIndex - 1; i++) {
gMembers[i] = gMembers[i + 1];
}
gIndex--;
} else if (result[0] == 3) {
for (int i = result[1]; i < vIndex - 1; i++) {
vMembers[i] = vMembers[i + 1];
}
vIndex--;
} else if (result[0] == 4) {
for (int i = result[1]; i < vvIndex - 1; i++) {
vvMembers[i] = vvMembers[i + 1];
}
vvIndex--;
}
System.out.println("회원 정보 삭제 완료");
}
}// deleteMember()종료
public int[] searchMember(String name) {
int[] result = new int[2]; // result 라는 공간이 2개인 배열 생성
for (int i = 0; i < sIndex; i++) {// index배열만큼 회전
Silver s = sMembers[i];// Silver s라는 객체에 sMembers[i]넣고
if (name.equals(s.getName())) {// 이름이 같은지 비교
result[0] = 1; // 같다는 조건이 ture이므로 0번칸을 1로 바꾸고
result[1] = i; // 1번칸에 몇번째에 그 이름 소유자가 있는지 넣어두는것
return result; // 그 값을 result에 반환
}
}
for (int i = 0; i < gIndex; i++) {
Gold g = gMembers[i];
if (name.equals(g.getName())) {
result[0] = 2;
result[1] = i;
return result;
}
}
for (int i = 0; i < vIndex; i++) {
Vip v = vMembers[i];
if (name.equals(v.getName())) {
result[0] = 3;
result[1] = i;
return result;
}
}
for (int i = 0; i < vvIndex; i++) {
Vvip vv = vvMembers[i];
if (name.equals(vv.getName())) {
result[0] = 4;
result[1] = i;
return result;
}
}
return result;
}// searchMember종료
}