일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jdbc설정
- github
- live server 환경설정
- 페이징
- 내일배움카드
- 회원탈퇴
- 별찍기
- 정처기
- mvc
- 페이지 재사용
- 입력메소드
- 관리자회원조회
- 로그아웃
- 권한변경
- 국취제
- emmet환경설정
- 회원정보수정
- 비밀번호암호화
- 배열
- 인코딩
- redirect
- Git
- 국비학원
- 국민취업지원제도
- forward
- 비밀번호변경
- jsp기본
- 검색기능
- 내배카
- jdbc환경설정
- Today
- Total
기록
*17일차 실습 본문
# 포인트관리시스템에 다형성을 적용하라
@실습문제1
1. Has a 포함 관계로 만들것
2. Entity 와 Control 클래스를 명확히 구분할것
entity 클래스 이름 :
member.model.vo.Silver,
member.model.vo.Gold,
member.model.vo.Vip,
member.model.vo.VVip,
member.model.vo.Member(부모클래스)
control 클래스 이름 ; member.controller.MemberManager
Member멤버변수 : 이름,등급,포인트
member멤버함수 : 컨스트럭터(생성자) , setter/getter 만들기
**이자포인트를 구하는 메소드는 자식클래스에서의 구현 할것**
> Silver 등급은 2% 를 곱한값이 이자 포인트
> Gold 등급은 5% 를 곱한값이 이자 포인트
> Vip 등급은 10% 를 곱한값이 이자 포인트
> VVip 등급은 15% 를 곱한값이 이자 포인트
Control 클래스 이름 : memer.controller.MemberManager
MemberManager 멤버변수 Member[] : Silver, Gold, Vip, VVip등급 회원을 최대 40명 관리할수 있는 객체배열, 인덱스 추가
MemberManager 멤버함수 : insertMember(Member m), printData
주의할점 : 적절한 접근제어 지시자 사용 (private, public)
실행클라스 member.run.Run
public class Run {
public static void main(String[] args)
{
MemberManager mgr = new MemberManager();
mgr.insertMember(new Silver("홍길동", "Silver",1000));
mgr.insertMember(new Silver("고길동", "Silver",2000));
mgr.insertMember(new Silver("홍동민", "Silver",3000));
mgr.insertMember(new Gold("김회장", "Gold",1000));
mgr.insertMember(new Gold("이회장", "Gold",2000));
mgr.insertMember(new Gold("오회장", "Gold",3000));
mgr.insertMember(new Vip("이순신", "Vip",10000));
mgr.insertMember(new VVip("신사임당", "VVip",100000));
mgr.printData();
}
}
package member.model.vo;
public class Silver extends Member{
public Silver() {}
public Silver(String name, String grade, int point) {
super(name, grade, point);
}
@Override
public double getEjapoint(){
return super.getPoint()*0.02;
}
}
------------------------------------------
package member.model.vo;
public class Ruby extends Member{
public Ruby (){}
public Ruby(String name, String grade, int point){
super(name, grade, point);
}
@Override
public double getEjapoint(){
return super.getPoint()*0.3;
}
}
--------------------------------------------
package member.model.vo;
public class Gold extends Member{
public Gold() {}
public Gold(String name, String grade, int point) {
super(name, grade, point);
}
@Override
public double getEjapoint(){
return super.getPoint()*0.05;
}
}
------------------------------------------------
package member.model.vo;
public class Vip extends Member {
public Vip(){}
public Vip(String name, String grade, int point){
super(name, grade, point);
}
@Override
public double getEjapoint(){
return super.getPoint()*0.1;
}
}
---------------------------------------------------
package member.model.vo;
public class VVip extends Member {
public VVip(){}
public VVip(String name, String grade, int point){
super(name, grade, point);
}
@Override
public double getEjapoint(){
return super.getPoint()*0.15;
}
}
package member.model.vo;
public class Member {
/*protected*/
private String name;
private String grade;
private int point;
public Member(){}
public Member(String name, String grade, int point) {
this.name = name;
this.grade = grade;
this.point = point;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public double getEjapoint(){
return this.point*0.02;
}
}
------------------------------------------------
package member.controller;
import member.model.vo.Member;
public class MemberManager {
public static final int MAX_MEMBER = 40;
private Member[] memberArr = new Member[MAX_MEMBER];
private int memberIndex = 0;
//다형성
public void insertMember(Member m){
this.memberArr[memberIndex++] = m;
}
public void printData() {
System.out.println("-----------정보출력-------------");
System.out.printf("%-15s %-15s %-15s %-15s\n", "이름","등급","포인트","이자포인트");
for(int i = 0; i < memberIndex; i++){
Member m = memberArr[i];
System.out.printf("%-15s %-15s %-15d %-15.2f\n",
m.getName(),
m.getGrade(),
m.getPoint(),
m.getEjapoint());
}
}
}
--------------------------------------------------------
package member.run;
import member.controller.MemberManager;
import member.model.vo.Gold;
import member.model.vo.Ruby;
import member.model.vo.Silver;
import member.model.vo.VVip;
import member.model.vo.Vip;
public class Run {
public static void main(String[] args){
MemberManager m = new MemberManager();
m.insertMember(new Silver("홍길동", "Silver",1000));
m.insertMember(new Silver("고길동", "Silver",2000));
m.insertMember(new Silver("홍동민", "Silver",3000));
m.insertMember(new Gold("김회장", "Gold",1000));
m.insertMember(new Gold("이회장", "Gold",2000));
m.insertMember(new Gold("오회장", "Gold",3000));
m.insertMember(new Vip("최순실", "Vip",10000));
m.insertMember(new VVip("박근혜", "VVip",100000));
m.printData();
}
}