본문 바로가기

Java/실습

[Java] 행성

행성에 대한 프로그램을 만들어보겠습니다.

 

요구 조건

행성(이름, 크기, 보이는지 안보이는지)에 대한 클래스

사람 (이름)에 대한 클래스

이름이 '지구'인 행성 생성(행성 이름)

'고길동'인 사람 생성(사람 이름)

이 행성에 사람이 입주(텍스트로)

 

먼저 행성에 대한 클래스를 만들어 보겠습니다.

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