[TIL]パッケージ例、インスタンスメソッド

5186 ワード

1)パッケージ追加内容


1-1)カプセルを割る行為


  • いくつかのデータは、異なるクラスまたはカプセルで使用される.
  • 1-2)アクセス制御インジケータ


  • が制御インジケータにアクセスすることによって、他のクラスのアクセスを許可または阻止することができる.
  • 1~3)例

    package part3.ex1.capsule2;
    
    import java.io.IOException;
    import java.util.Scanner;
    
    public class Program1 {
    
       public static void main(String[] args) throws IOException {
    
          while (true) {
    
             int menu = inputMenu();
    
             Exam exam = new Exam();
    
             switch (menu) {
             case 1:
                Exam.input(exam);
                break;
             case 2:
            	 Exam.print(exam);
                break;
             case 3:
            	 Exam.load(exam);
                break;
             case 4:
            	 Exam.save(exam);
                break;
             case 5:
                exitProgram();
                break;
             }
          }
    
       }
    
       // Program의 Bottom 구성
       private static boolean exitProgram() {
          return true;
       }
    
    
       private static int inputMenu() {
          
          Scanner scan = new Scanner(System.in);
    
          int menu = 0;
    
          System.out.println("┌────────────────────────────────┐");
          System.out.println("│      성적관리 Main Menu          │");
          System.out.println("└────────────────────────────────┘");
          System.out.println("1. 입력");
          System.out.println("2. 출력");
          System.out.println("3. 읽기");
          System.out.println("4. 저장");
          System.out.println("5. 종료");
          System.out.print(">");
          menu = scan.nextInt();
    
          return menu;
       }
    
    }
    package part3.ex1.capsule2;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.PrintStream;
    import java.util.Scanner;
    
    public class Exam {
    
    		private int kor;
    		private int eng;
    		private int math;
    		
    		   public static void save(Exam exam) throws IOException {      
    
    			      File file = new File("res/data.txt");
    			      FileOutputStream fos = new FileOutputStream(file);
    			      PrintStream ps = new PrintStream(fos);
    
    			      ps.printf("%d,%d,%d\n", exam.kor, exam.eng, exam.math);
    
    			      ps.close();
    			      fos.close();
    			   }
    		   
    		   public static Exam load(Exam exam) throws IOException {
    			      
    			      File file = new File("res/data.txt");      
    			      FileInputStream fis = new FileInputStream(file);
    			      Scanner scan = new Scanner(fis);
    
    			      String[] tmps = scan.nextLine().split(",");
    
    			      scan.close();
    			      fis.close();
    
    			      exam.kor = Integer.parseInt(tmps[0]);
    			      exam.eng = Integer.parseInt(tmps[1]);
    			      exam.math = Integer.parseInt(tmps[2]);
    
    			      return exam;
    			   }
    		   
    		   public static void print(Exam exam) {
    			      
    			      Scanner scan = new Scanner(System.in);
    			      
    			      if (exam == null) {
    			         System.out.println("성적이 입력되지 않았습니다. (Exam 객체가 존재하지 않음)");
    			         return;
    			      }
    
    			      System.out.println("┌───────────────────────────────────┐");
    			      System.out.println("│              성적 출력              │");
    			      System.out.println("└───────────────────────────────────┘");
    			      System.out.println("국어 : " + exam.kor);
    			      System.out.println("영어 : " + exam.eng);
    			      System.out.println("수학 : " + exam.math);
    
    			      int total = exam.kor + exam.eng + exam.math;
    			      System.out.println("총점 :" + total);
    			      System.out.printf("평균 : %.2f\n", (total / 3.0));
    			   }
    		   
    		   public static void input(Exam exam) {
    			      
    			      Scanner scan = new Scanner(System.in);
    			      
    			      System.out.println("┌───────────────────────────────────┐");
    			      System.out.println("│              성적 출력              │");
    			      System.out.println("└───────────────────────────────────┘");
    			      
    			      System.out.println("국어 >");
    			      exam.kor = scan.nextInt();
    			      System.out.println("영어 >");
    			      exam.eng = scan.nextInt();
    			      System.out.println("수학 >");
    			      exam.math = scan.nextInt();
    			      
    			   }
    	
    		   
    
    
    }
    

    2)実例方法


    2-1)オブジェクト向けの表現



  • exechを実行すると、右のコードは左のコードよりも直感的です.

  • 左はオブジェクトがメインではなくクラシックでFunctionと呼ばれています.

  • 右側はオブジェクトを主とし、メソッドと呼ばれます.
  • 2-2)表現を変える関数の形状



  • 既存の関数のインスタンスを渡す
    1)staticによりオブジェクト指向がサポートされていないことを示す.
    2)付け加える奴だけで相手を伝える.
    3)パラメータのみを受け入れる.
    これは使えません.
    5)体力法と呼ぶ.

  • 新しい関数のインスタンスを渡す
    1)オブジェクトによって呼び出されます.
    2)オブジェクトを受信できます.
    3)対象を受け入れる者をインスタンス関数と呼ぶ.
    4)予約した名前thisexamを獲得する.
    5)メソッドまたはインスタンスメソッドと呼ぶ.