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