romworld

Chapter 07 상속 문제 풀이 ( Human, 도형클래스, Bank) 본문

JAVA/문제풀이

Chapter 07 상속 문제 풀이 ( Human, 도형클래스, Bank)

inderrom 2022. 10. 10. 00:18

문제 1

Human

// Human 클래스

package z_homework.work7.w01;

public class Human {

	private String name;
	private int age;
	
	public Human() {
		
	}
	public Human(String name, int age) {
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "이름: " + this.name + ", 나이: " + this.age;
	}
}

 

// Student 클래스

 

package z_homework.work7.w01;

public class Student extends Human {

	private String major;

	public Student(String name, int age, String major) {
		super(name, age);
		this.major = major;
	}

	public String getMajor() {
		return major;
	}

	public void setMajor(String major) {
		this.major = major;
	}
	
	@Override
	public String toString() {
		return super.toString() + ",전공 " + this.major;
	}
}

 

 


문제2

도형클래스

 

package z_homework.work7.w02;

public class Shape {

	public Shape() {
	}
	
	public double area() {
		return 0.0;	
	}
	
	public double perimeter() {
		return 0.0;
	}
}
package z_homework.work7.w02;

public class Circle extends Shape {
	private double radius;

	public Circle(double radius) {
		super();
		this.radius = radius;
	}

	@Override
	public double area() {
		return Math.pow(radius, 2) * Math.PI;
	}

	@Override
	public double perimeter() {
		return 2 * Math.PI * radius;
	}

	@Override
	public String toString() {
		return "도형의 종류 : 사각형, 둘레 : " + perimeter() +  "㎝, 넓이 : " + area() + "㎠";
			
	}
}
package z_homework.work7.w02;

public class Rectangle extends Shape {

	double width;
	double height;

	public Rectangle(double whidth, double height) {
		this.width = whidth;
		this.height = height;
	}

	@Override
	public double area() {
		return width*height;
	}

	@Override
	public double perimeter() {
		return (width + height) * 2;
	}

	@Override
	public String toString() {
		return "도형의 종류 : 사각형, 둘레 :  " + perimeter() + " ㎝, 넓이 : " + area() + "㎠";
	}
}

 


문제3

Bank

 

package z_homework.work7.w03;

public class Customer {
	private String firstName; //고객 성
	private String lastName; //고객 이름
	private BankAccount account; //소유계좌
	
	public Customer(String firstName, String lastName) {
		super();
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public String getFirstName() {
		return firstName;
	}


	public String getLastName() {
		return lastName;
	}

	public BankAccount getAccount() {
		return account;
	}

	public void setAccount(BankAccount account) {
		this.account = account;
	}

	@Override
	public String toString() {
		
	return String.format("이름 : %s%s, 잔고 : %,d원", getFirstName(), getLastName(),getAccount().getBalance());
//		return "이름: " + firstName + lastName + ", 잔고: " + account + "원";
	}
	
	
}
package z_homework.work7.w03;

public class Bank {

	private Customer[] customers; //고객목록
	private int numberOfCustomers; //고객수 , 필드에 들어가면 0으로 초기화됨
	
	public Bank() {
	 this.customers = new Customer[10];
	}

	public void addCustomer(Customer customer) {
		 customers[numberOfCustomers++] = customer; // ++가 뒤에 있으니 0번째 자리에 넣고 고객에 수가 1이 되는 거임
		 //numberOfCustomer += 1;
	}

	public int getNumberOfCustomers() {
		return this.numberOfCustomers;
	}


	public Customer[] getCustomers() {
		return this.customers;
	}
	public Customer getCustomer(int idx) {
		
		return customers[idx];
	}

	
	
	
}

 

package z_homework.work7.w03;

public class BankAccount {

	private int balance;
	
	public BankAccount(int balance) { //현재 계좌
		super();
		this.balance = balance;
		
	}
	
	public int getBalance() {
		return this.balance;
	}
	
	public void deposit (int amount) { //예금, 저축, 입금
		 this.balance += amount;
	}
	
	public boolean withdraw (int amount) { //출금 //변수명을 정확히 써줘야 나중에 편함
		if(this.balance < amount) {
				return false;
		}else {
			this.balance -= amount;
			return true;
		}

	}
														//돈을 받는 계좌 account
	public boolean transfer(int amount, BankAccount account) { //이체
			boolean isSuccess = this.withdraw(amount);  //내 계좌에 출금이 성공이면
			if(isSuccess) { //isChecked, isSelected 같은 표현도 많이 씀 메서드 경우에는 boolean을 써줌
				 // 돈을 받을 계좌에 입금을 하는 것
				account.deposit(amount); //입금을 하고
			}
			return false; //실패면 아무일도 안 일어남
		
	}
}

 


 

Comments