행성에 대한 프로그램을 만들어보겠습니다.
요구 조건
행성(이름, 크기, 보이는지 안보이는지)에 대한 클래스
사람 (이름)에 대한 클래스
이름이 '지구'인 행성 생성(행성 이름)
'고길동'인 사람 생성(사람 이름)
이 행성에 사람이 입주(텍스트로)
먼저 행성에 대한 클래스를 만들어 보겠습니다.
package com.puft.dec161.main;
public class Planet {
String name;
int size;
Boolean isLook;
행성의 이름인 name,
크인 size
보이는지에 대한 여부인 isLook을 속성으로 넣어주고
자동 완성으로 생성자를 생성해줍니다.
public Planet() {
// TODO Auto-generated constructor stub
}
public Planet(String name, int size, Boolean isLook) {
super();
this.name = name;
this.size = size;
this.isLook = isLook;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public Boolean getIsLook() {
return isLook;
}
public void setIsLook(Boolean isLook) {
this.isLook = isLook;
}
getter setter함수까지 생성해줍니다.
public void humanLiving(Human h) {
System.out.println("===================================");
System.out.println(h.name+ "씨가 " + name + "행성에 입주");
System.out.println("===================================");
printInfo();
}
사람이 어느 행성에 입주했는지 텍스트로 표현해야하기 때문에
메소드를 하나 만들어줍니다.
이때 파라미터로 사람 객체를 받아와서
사람의 이름을 사용하겠습니다.
public void printInfo() {
System.out.println("행성 이름은 " + name);
System.out.println("행성 크기는 " + size + "km");
if(isLook) {
System.out.println("보이는 행성 " );
}else {
System.out.println("안 보이는 행성" );
}
}}
printInfo메소드는 행성의 정보를
출력해주는 메소드입니다.
public static void main(String[] args) {
Planet Earth = new Planet("지구", 6378, true);
Human h1 = new Human("고길동");
Earth.humanLiving(h1);
}
}
다음 main에서 생성자를 사용해서
Earth라는 행성 객체와
사람 객체를 만들어주고
행성의 humanLiving 메소드를 실행시켰습니다.
그럼 기능을 추가해볼까요?
// Compiled from Avengers.java (version 1.8 : 52.0, no super bit)
public abstract interface com.beaver.dec161.avengers.Avengers {
// Method descriptor #6 ()V
public abstract void attack();
}
사수님이 이런 추상클래스를 주고
다음 요구 사항을 주셨다고 가정합시다.
요구 조건
아이언맨 객체 - attack 기능 구현
속성, 생성자, getter/setter X
이 사람이 아이언맨을 자기 전담 영웅으로 픽하는 메소드
사람이 도와달라고 소리치면 아이언맨이 공격하는 메소드
공격하면 행성사이즈를 1000으로 수정
행성을 보이게 수정
먼저 Ironman객체를 만들어야겠습니다.
package com.puft.dec161.main;
import com.beaver.dec161.avengers.Avengers;
public class Ironman implements Avengers {
@Override
public void attack() {
System.out.println("");
System.out.println("아이언맨 : 갑옷광선 발사!");
System.out.println("");
}
}
추상클래스를 import한 후
Ironman객체에서 Override를 해서
공격하는 출력메소드를 구현합니다.
나머지는 Human 객체에서 구현해야겠습니다.
public void pickHero() {
System.out.println("전당영웅이 Ironman이 되었습니다.");
}
영웅을 픽하는 pickHero 메소드를 구현하고
public void scream(Planet p, Ironman I) {
System.out.println();
System.out.println("도와줘요!");
I.attack();
p.setSize(1000);
p.setIsLook(true);
System.out.println();
System.out.println("행성이 파괴되었습니다!");
System.out.println();
p.printInfo();
}
파라미터로 행성과 Ironman 객체를 넣어서
아이언맨이 공격하면
행성의 크기를 변경하고
행성이 보이게 바꾸는 메소드를 구현하였습니다.
이때는 구현했던 set메소드를 사용하면
값을 변경할 수 있습니다.
printInfo메소드를 마지막에 실행해서
변경점을 볼 수 있게 하였습니다.
===================================
고길동씨가 지구행성에 입주
===================================
===================================
행성 이름은 지구
행성 크기는 6378km
보이는 행성
도와줘요!
아이언맨 : 갑옷광선 발사!
행성이 파괴되었습니다!
===================================
행성 이름은 지구
행성 크기는 1000km
보이는 행성
한 객체 클래스에서 메소드를 만들 때
파라미터로 객체가 들어올 수 있다는 부분이
핵심인 실습이었습니다.
긴 글 읽어주셔서 감사합니다!
'Java > 실습' 카테고리의 다른 글
[Java] HTTP통신 (2) | 2024.12.18 |
---|---|
[Java] Split과 Date 실습 (1) | 2024.12.17 |
[Java] 배열의 유사도 (0) | 2024.12.10 |
[Java] 가위바위보 대회 (0) | 2024.12.10 |
[Java] Up Down 대회 (0) | 2024.12.10 |