[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)予約した名前
this
でexam
を獲得する.5)メソッドまたはインスタンスメソッドと呼ぶ.
Reference
この問題について([TIL]パッケージ例、インスタンスメソッド), 我々は、より多くの情報をここで見つけました https://velog.io/@psh94/TIL-캡슐화-예제-인스턴스-메소드テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol