기록

*17일차 실습 본문

학원/실습

*17일차 실습

pringspring 2022. 2. 15. 19:39

# 포인트관리시스템에 다형성을 적용하라


@실습문제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();
		
		
	}
}

'학원 > 실습' 카테고리의 다른 글

*19일차 실습  (0) 2022.02.17
*18일차 실습  (0) 2022.02.16
*16일차 실습  (0) 2022.02.14
*15일차 실습 (객체배열 실습문제)  (0) 2022.02.11
*14일차 실습  (0) 2022.02.10