본문 바로가기

Study/Java

[java] 상속, 인터페이스 실습

과제1>Video 관리 프로그램을 만들어 보자.

클래스 : 

1. Video --> 비디오 정보를 담고 있다.

2. GeneralMember -> 일반회원에 대한 정보

3. SpecialMember -> 특별회원에 대한 정보

4. main() 갖고 있는 클래스

결과> OOO님은 OOOOO비디오를 대여하였습니다.

 

 

Video.java

class Video
{
 private String vNum;
 private String vName;
 private int vPrice;
 
 //비디오 생성자
 public Video(String vNum, String vName, int vPrice) {
  this.vNum = vNum;
  this.vName = vName;
  this.vPrice = vPrice;
 }
 public String getVNum() {
  return vNum;
 }
 public String getVName() {
  return vName;
 }
 public int getVPrice() {
  return vPrice;
 }
 //--비디오 생성자 완료
}

GeneralMember.java

class GeneralMember
{
 private String gName;
 private String gPhone;
    int point = 0;
 
 //일반회원 생성자
 public GeneralMember(String gName, String gPhone) {
  this.gName = gName;
  this.gPhone = gPhone;
 }
 public String getGName() {
  return gName;
 }
 public String getGPhone() {
  return gPhone;
 }
 //--일반회원 생성자 완료
}

SpecialMember.java

class SpecialMember extends GeneralMember 
{

 public SpecialMember(String gName, String gPhone) {
  super(gName, gPhone);
 }
 void join() {
  point += 10;
  System.out.println("가입을 축하드립니다. 일반회원으로 등록되셨습니다.");
 }
 void input() {
  System.out.println("비디오를 반납하셨습니다. 포인트 적립되셨습니다.");
  point += 10;
 }
 void output(Video a){
  System.out.println("가격은 "+a.getVPrice()+"원입니다.");
 }
 void myInfo() {
  System.out.println(getGName()+"님의 전화번호는 "+getGPhone()+"이고, 포인트는 " +point+ " 이십니다.");
  if (point >= 10)
  {
   System.out.println(getGName()+ "님은 특별회원이십니다.");
  } else
   System.out.println(getGName()+ "님은 일반회원이십니다.");
 }
}

Test1.java

class Test1
{
 public static void main(String[] args) 
 {
  Video v1 = new Video("001", "트랜스포머1", 2000);

  SpecialMember mem1 = new SpecialMember("연습일", "010-200-3000");
  mem1.j-in();
  System.out.println(mem1.getGName()+" 님은 '" +v1.getVName()+"' 비디오를 대여하였습니다.");
  mem1.output(v1);
  mem1.myInfo();
 }
}

 

 

과제2> 6장 예제6-6, 6-7, 6-8, 6-11, 6-22 코딩하고 이해하기

Account.java

//일반 계좌 클래스
class Account 
{
 String accountNo;
 String ownerName;
 int balance;

 Account(String accountNo, String ownerName, int balance) {
  this.accountNo = accountNo;
  this.ownerName = ownerName;
  this.balance = balance;
 }
 void deposit(int amount) {
  balance += amount;
 }
 int withdraw(int amount) throws Exception{
  if (balance < amount)
  {
   throw new Exception("잔액이 부족합니다.");
  }
  balance -= amount;
  return amount;
 }
}

 

CheckingAccount.java

//직불계좌 클래스
class CheckingAccount extends Account
{
 String cardNo;
 CheckingAccount(String accountNo, String ownerName, int balance, String cardNo) {
  super(accountNo, ownerName, balance);
  this.cardNo = cardNo;
 }
 int pay(String cardNo, int amount) throws Exception {
  if (!cardNo.equals(this.cardNo) || (balance < amount))
  {
   throw new Exception("지불이 불가능 합니다.");
  }
  return withdraw(amount);
 }
}

CreaditLineAccount.java

class CreaditLineAccount extends Account
{
 int creaditLine;
 CreaditLineAccount(String accountNo, String ownerName, int balance, int creaditLine) {
  super(accountNo, ownerName, balance);
  this.creaditLine = creaditLine;
 }
 int withdraw(int amount) throws Exception {
  if ((balance + creaditLine) < amount)
  {
   throw new Exception("인출이 불가능 합니다.");
  }
  balance -= amount;
  return amount;
 }
}

BonusPointAccount.java

class BonusPointAccount extends Account
{
 int bonusPoint;
 BonusPointAccount(String accountNo, String ownerName, int balance, int bonusPoint) {
  super(accountNo, ownerName, balance);
  this.bonusPoint = bonusPoint;
 }
 void deposit(int amount)  {
  super.deposit(amount);
  bonusPoint += (int) (amount * 0.001);
 }
}

InheritanceExample.java

class InheritanceExample
{
 public static void main(String[] args) 
 {
  Account obj1 = new Account("111-22-333333", "임꺽정", 10000);
  CheckingAccount obj2 = new CheckingAccount("444-55-666666", "홍길동", 20000, "5555-6666-7777-8888");
  CreaditLineAccount obj3 = new CreaditLineAccount("777-88-999999", "김선달", 30000, 20000000);
  BonusPointAccount obj4 = new BonusPointAccount("000-00-000000", "김미영", 0, 0);
  
  printAccountInfo(obj1);
  printAccountInfo(obj2);
  printAccountInfo(obj3);
  printAccountInfo(obj4);
 }
 static void printAccountInfo(Account obj) {
  System.out.println("계좌번호 : "+obj.accountNo);
  System.out.println("예금주이름 : "+obj.ownerName);
  System.out.println("계좌번호 : "+obj.balance);
  System.out.println();
 }
}

'Study > Java' 카테고리의 다른 글

[java] 참조값, instead of, 클래스  (0) 2019.05.15
[java] 예외처리, 정적필드  (0) 2019.05.15
[java] 상속, 인터페이스  (0) 2019.05.15
[java] for문의 활용  (0) 2019.05.15
[java] 객체지향 실습  (0) 2019.05.14