JavaCode(review)
Interface Challenge
◀ ▷ ▶ ♤ ♠ ♡ ♥ ♧ ♣ ⊙e
2020. 6. 16. 02:57
반응형
Interface
package com.company;
import java.util.ArrayList;
import java.util.List;
public interface ISaveable {
//methods...
List<String> saved();
void read(List<String> savedValues);
}
//Type을 List로 하면 코드짜면서 arrayList, vector,linkedList 암거나 번갈아가며 정의하기도 좋다.
Class Player
package com.company;
import java.util.ArrayList;
import java.util.List;
public class Players implements ISaveable{
private String name;
private int hitPoints;
//constructor
public Players(String name, int hitPoints) {
this.name = name;
this.hitPoints = hitPoints;
}
//interface methods../implements methods
@Override
public List<String> saved() {
List<String> values = new ArrayList<>(); // ArrayList 로 정의가능.
values.add(0,this.name);
values.add(1,""+this.hitPoints); //2개 parameter
return values;
}
@Override
public void read(List<String> savedValues) { //입력밧 saveValue : string
if(savedValues != null && savedValues.size() > 0){
this.name = savedValues.get(0);
this.hitPoints = Integer.parseInt(savedValues.get(1));
//hitpoint getter은 int니 string ->int로 변환
}
}
//toString
@Override
public String toString() {
return "Players{" +
"name='" + name + '\'' +
", hitPoints='" + hitPoints + '\'' +
'}';
}
//getter /setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHitPoints() {
return hitPoints;
}
public void setHitPoints(int hitPoints) {
this.hitPoints = hitPoints;
}
}
타 class도 거이 코드 동일함//
Main -print out code
package com.company;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Players tim = new Players("Tim", 10);
System.out.println(tim.toString());
//tim.getHitPoints();
saveObject(tim);
loadObject(tim);
System.out.println(tim);
//참고
// ISaveable tim = new Players("Tim",10); :interface로 정의하는경우 해당 class의
// System.out.println(tim); getter쓰려면 sout((casting class))해야한다.
// sout( ((Players) tim).getHitPoints() );
}
public static ArrayList<String> readValues(){
ArrayList<String> values = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
boolean quit = false;
int index = 0;
System.out.println("Below is menu\n"+
"1 to enter a string\n"+
"0 to quit");
while(!quit){
System.out.println("Choose an option :");
int choice = scanner.nextInt();
scanner.nextLine();
switch(choice){
case 0 :
quit = true;
break;
case 1 :
System.out.println("Enter a string: ");
String stringInput = scanner.nextLine();
values.add(index, stringInput);
index++;
break;
}
}return values;
}
//other mothods
public static void saveObject(ISaveable objectToSave){ //interface를 parameter로
for(int i=0; i<objectToSave.saved().size(); i++){
System.out.println("Saving "+objectToSave.saved().get(i)); //interface method saved
}
}
public static void loadObject(ISaveable objectToLoad){
ArrayList<String> values = readValues();
objectToLoad.read(values); //interface method read
}
}
OutPut
D:\IT\JDK\jdk11.0.6_10\bin\java.exe "-javaagent:D:\IT\IDEA\IntelliJ IDEA Community Edition 2020.1\lib\idea_rt.jar=50439:D:\IT\IDEA\IntelliJ IDEA Community Edition 2020.1\bin" -Dfile.encoding=UTF-8 -classpath D:\IT\NewProject\ISaveable\out\production\InterfaceChallenge com.company.Main
Players{name='Tim', hitPoints='10'} //System.out.println(tim.toString());
Saving Tim //saveObject(tim);
Saving 10
Below is menu //loadObject(tim);
1 to enter a string
0 to quit
Choose an option :
1
Enter a string:
jina
Choose an option :
1
Enter a string:
35
Choose an option :
0
Players{name='jina', hitPoints='35'} //System.out.println(tim);
Process finished with exit code 0