[요구사항]
아래와 같이 출력해라.
이름 : 아이유
나이 : 30
대학생인가요? : true
몸무게 : 40.5
Person)이라는 클래스를 활용해라.Person이라는 클래스 파일을 별도로 생성해서 사용해라.)static 메서드는 사용하지마라.public static void main(String[] args)는 제외)//Main.java
public class Main {
public static void main(String[] args) {
Person iu = new Person("아이유", 30, true, 40.5);
iu.printProfile();
}
}
// Person.java
public class Person {
String name;
int age;
boolean isStudent;
double weight;
public Person(String n, int a, boolean i, double w){
name = n;
age = a;
isStudent = i;
weight = w;
}
void printProfile(){
System.out.println("이름 : "+name+"\n"+"나이 : "+age+"\n"+"대학생인가요? : "+isStudent+"\n"+"몸무게 : "+weight);
}
}
[요구사항]
아래 4가지 방식의 코드가 정상적으로 작동하게 Person 클래스를 만들어라.
(한 파일에 모든 코드를 작성하지 말고, Person이라는 클래스 파일을 별도로 생성해서 사용해라.)
public class Main {
public static void main(String[] args) {
// 1.
Person iu1 = new Person("아이유", **30**, true, **40.5**);
iu1.printProfile();
// 2.
Person iu2 = new Person("아이유", **"30"**, true, **"40.5"**);
iu2.printProfile();
// 3.
Person iu3 = new Person("아이유", **30**, true, **"40.5"**);
iu3.printProfile();
// 4.
Person iu4 = new Person("아이유", **"30"**, true, **40.5**);
iu4.printProfile();
}
}
위 코드를 실행하면 아래와 같이 출력돼야 한다.
이름 : 아이유
나이 : 30
대학생인가요? : true
몸무게 : 40.5
이름 : 아이유
나이 : 30
대학생인가요? : true
몸무게 : 40.5
이름 : 아이유
나이 : 30
대학생인가요? : true
몸무게 : 40.5
이름 : 아이유
나이 : 30
대학생인가요? : true
몸무게 : 40.5
//Person.java
public class Person {
String name;
int age;
boolean isStudent;
double weight;
public Person(String n, int a, boolean i, double w){
this.name = n;
this.age = a;
this.isStudent = i;
this.weight = w;
}
public Person(String n, String a, boolean i, String w){
this.name = n;
this.age = Integer.parseInt(a);
this.isStudent = i;
this.weight = Double.parseDouble(w);
}
public Person(String n, int a, boolean i, String w){
this.name = n;
this.age = a;
this.isStudent = i;
this.weight = Double.parseDouble(w);
}
public Person(String n, String a, boolean i, double w){
this.name = n;
this.age = Integer.parseInt(a);
this.isStudent = i;
this.weight = w;
}
void printProfile(){
System.out.println("이름 : "+name+"\n"+"나이 : "+age+"\n"+"대학생인가요? : "+isStudent+"\n"+"몸무게 : "+weight+"\n");
}
}

[요구사항]
아래의 코드가 정상적으로 작동하게 Calculator 클래스를 만들어라.
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator("제이슨");
System.out.println("이 계산기는 " + calculator.getOwner() + "의 계산기입니다.");
System.out.println("3+4는 " + calculator.add(3, 4) + "입니다.");
System.out.println("6-2는 " + calculator.minus(6, 2) + "입니다.");
System.out.println("2*9는 " + calculator.multiply(2, 9) + "입니다.");
System.out.println("9/4은 " + calculator.divide(9, 4) + "입니다.");
System.out.println("9/4은 " + calculator.divide("9", "4") + "입니다.");
}
}
위 코드를 실행하면 아래와 같이 출력돼야 한다.
이 계산기는 제이슨의 계산기입니다.
3+4는 7입니다.
6-2는 4입니다.
2*9는 18입니다.
9/4은 2.25입니다.
9/4은 2.25입니다.
//Caclulator.java
public class Calculator {
public String owner;
public Calculator(String name){
this.owner = name;
}
public String getOwner(){
return owner;
}
public int add(int a, int b){return a + b;}
public int minus(int a, int b){return a - b;}
public int multiply(int a, int b){return a * b;}
public double divide(int a, int b){return (double)a/b;}
public double divide(String a, String b){return Integer.parseInt(a) / Double.parseDouble(b);}
}

아래와 같이 작동하도록 코드를 작성해라.
대여할 책의 번호를 입력하세요.
1. 클린코드(Clean Code) - 대여 가능
2. 객체지향의 사실과 오해 - 대여 가능
3. 테스트 주도 개발(TDD) - 대여 가능
**1**
정상적으로 대여가 완료되었습니다.
대여할 책의 번호를 입력하세요.
1. 클린코드(Clean Code) - 대여 중
2. 객체지향의 사실과 오해 - 대여 가능
3. 테스트 주도 개발(TDD) - 대여 가능
**1**
대여 중인 책은 대여할 수 없습니다.
대여할 책의 번호를 입력하세요.
1. 클린코드(Clean Code) - 대여 중
2. 객체지향의 사실과 오해 - 대여 가능
3. 테스트 주도 개발(TDD) - 대여 가능
**2**
정상적으로 대여가 완료되었습니다.
****대여할 책의 번호를 입력하세요.
1. 클린코드(Clean Code) - 대여 중
2. 객체지향의 사실과 오해 - 대여 중
3. 테스트 주도 개발(TDD) - 대여 가능
static 메서드는 사용하지마라.public static void main(String[] args)는 제외)Main(프로그램을 실행하는 코드가 존재하는 클래스), Book(책), Library(도서관)의 클래스를 만들어서 활용해라.// Main.java
import java.util.Arrays;
public class Main{
public static void main(String[] args){
Library library = new Library(Arrays.asList(
new Book("클린코드(Clean Code)"),
new Book("객체지향의 사실과 오해"),
new Book("테스트 주도 개발(TDD)")
));
library.borrow();
library.borrow();
library.borrow();
library.borrow();
}
}
//Book.java
public class Book {
public String bookName;
public boolean canBorrow;
Book(String name){
this.bookName = name;
this.canBorrow = true;
}
public void setStatus(boolean st){
this.canBorrow = st;
}
public String getBookName(){
return bookName;
}
public boolean getStatus(){
return canBorrow;
}
}
// Library.java
import java.util.Scanner;
import java.util.List;
public class Library {
private List<Book> books;
public Library(List<Book> books) {
this.books = books;
}
public void borrow() {
System.out.println("대여할 책의 번호를 입력하세요");
for (int i = 0; i < books.size(); i++) {
if (books.get(i).canBorrow == true) {
System.out.println((i + 1) + ". " + books.get(i).bookName + " - 대여 가능");
} else {
System.out.println((i + 1) + ". " + books.get(i).bookName + " - 대여 중");
}
}
Scanner input = new Scanner(System.in);
int num = input.nextInt();
if (books.get(num - 1).canBorrow == true) {
books.get(num - 1).setStatus(false);
System.out.println("정상적으로 대여가 완료되었습니다.");
} else {
System.out.println("대여 중인 책은 대여할 수 없습니다.");
}
}
}

라이브러리 패키지의 class들(Scanner나 List) 어디서 호출해야할지 모르겠다. 그래서 그냥 사용되는 파일에서 선언해주고 있는데, c++을 공부했을 때는 main에서 다 호출했던 기억이 있다.
java의 class를 공부하면서 public static void main(String[] args){} 부분을 main에서만 구현해주면 되는 것을 배웠다! 이유는 이 부분이 어플리케이션이 실행되면 가장 먼저 실행되는 메인 메소드이기 때문인데, 이 것은 java와의 약속이라고한다. public인 이유는 모든 클래스에서 접근이 가능해야하기 때문이고, static영역에 선언해 프로그램이 실행되는 순간 메모리가 할당이 되고 프로그램이 종료될 때까지 메모리에 남아 있도록 한다.
미션 잘 수행해주셨네요👍 제가 의도한 대로 잘 구현해주셨습니다!! 지금 딱 봤을 때는 크게 피드백 드릴 부분이 없어서, 제가 추후에 올려드릴 코드 보고 비교해보시면서 추가적으로 공부해보시면 좋을 것 같아요! 혹시나 궁금한 점 생기시면 다음 블로그글 작성 시에 남겨주셔도 좋고, 카톡으로 질문 주셔도 좋습니다:)