JAVA実習
21/05/31
責任の転嫁->ロールとしてのオブジェクト=オブジェクト向け
インスタンス、分類
例示的な方法で実装オブジェクトを先に作成するので、より便利に感じます!
静的削除インスタンスメソッド list.exams, list.currentなどはリストメソッドとして宣言されているので、this.exams, this.宣言はcurrentなど に変更されました.
アクセス制御インジケータによりクラス内部の機能使用を制限できます.
変更前
オブジェクトを作成すると、initは宣言した値をオブジェクトを実体化するために使用し、関数を個別に作成および使用する方法を利用します.ただし、例のExamListのように、ジェネレータを初期化するには特殊な関数が必要です.
作成者の条件
1.オブジェクトが作成されたら、まず実行する必要があります.
2.作成時に1回のみ実行できます.
呼び出しと同時に初期化を行うのでInitの役割を果たす.ジェネレータExamListには戻り値がありません.戻りの目的ではないためです.作成されたオブジェクトを巡回し、重要なのは、実際には関数名ではありません.ジェネレータには関数名がありません.初期化するオブジェクトの名前を限定するだけです!
の時の寸法に基づいて、寸法の個数に応じて並べ替えを初期化したいジェネレータを書き出します.
ジェネレータは関数の特徴もあるので、パラメータを渡すことができるので、ジェネレータを2つの方法で呼び出すことができます. new ExamList();
デフォルト作成者 new ExamList(10);
アレイをオンデマンドで準備するジェネレータ(オーバーロードジェネレータ) 注意事項
1.デフォルトジェネレータがない場合、オーバーロードされたジェネレータのみを作成する場合、デフォルトジェネレータを呼び出すことはできません.
2.ジェネレータのリロードは、同じ機能を異なるパラメータに設定して使用しやすいようにします.同じ機能を実現しているため,コード重複を解消する必要がある.デフォルトのジェネレータからオーバーロードジェネレータを呼び出すことで、重複データを除去できます.ジェネレータを呼び出す方法は、作成したばかりのオブジェクトでのみ呼び出されます.
2-1. 呼び出し方法 ExtamList()は、ExtamList(int size)を呼び出そうとする.this(); カッコに値を入れると、パラメータを持つジェネレータに値が移行します.値を出さないと、自分で自分を呼び出すことが起こります.
3.ジェネレータが定義されていない場合、new ExamList()()のみでオブジェクトが作成されているため、定義する必要がなく、コンパイラはデフォルトのジェネレータを自動的に作成します.
パッケージ->インスタンス、分類
責任の転嫁->ロールとしてのオブジェクト=オブジェクト向け
インスタンス、分類
例示的な方法で実装
switch(menu) {
case 1:
//ExamList.inputList(list);
list.inputList();
//인스턴스메소드 형식으로 구현
break;
void inputList() {
Scanner scan = new Scanner(System.in);
System.out.println("성적입력");
int kor, eng, math;
//{... 중략}
Exam exam = new Exam();
exam.kor = kor;
exam.eng = eng;
exam.math = math;
Exam[] exams = this.exams;
int size = this.current;
if (exams.length == size) {
//1. 크기가 더 큰 배열을 생성하기
Exam[] temp = new Exam[size + 5];
// 2. 값을 이주 시키기
for (int i = 0; i < size; i++)
temp[i] = exams[i];
//3. list.exams가 새로 만든 temp배열을 넘겨받아 참조할 수 있게 한다.
this.exams = temp;
}
this.exams[this.current] = exam;
this.current++;
}
inputlistメソッドコードの変化部分静的削除
アクセス制御インジケータとカプセルの破壊
アクセス制御インジケータによりクラス内部の機能使用を制限できます.
private int current;
//이 클래스 외에 다른 클래스에서 current를 선언해도 문제가 발생하지 않는다.
作成者とオブジェクトの初期化
変更前
public static void init(ExamList list) {
list.exams = new Exam[3];
list.current = 0;
}
変更後public ExamList() {
this.exams = new Exam[3];
this.current = 0;
}
変更の理由は?オブジェクトを作成すると、initは宣言した値をオブジェクトを実体化するために使用し、関数を個別に作成および使用する方法を利用します.ただし、例のExamListのように、ジェネレータを初期化するには特殊な関数が必要です.
作成者の条件
1.オブジェクトが作成されたら、まず実行する必要があります.
2.作成時に1回のみ実行できます.
呼び出しと同時に初期化を行うのでInitの役割を果たす.ジェネレータExamListには戻り値がありません.戻りの目的ではないためです.作成されたオブジェクトを巡回し、重要なのは、実際には関数名ではありません.ジェネレータには関数名がありません.初期化するオブジェクトの名前を限定するだけです!
ロードジェネレータ過負荷
の時の寸法に基づいて、寸法の個数に応じて並べ替えを初期化したいジェネレータを書き出します.
ジェネレータは関数の特徴もあるので、パラメータを渡すことができるので、ジェネレータを2つの方法で呼び出すことができます.
デフォルト作成者
アレイをオンデマンドで準備するジェネレータ(オーバーロードジェネレータ)
1.デフォルトジェネレータがない場合、オーバーロードされたジェネレータのみを作成する場合、デフォルトジェネレータを呼び出すことはできません.
2.ジェネレータのリロードは、同じ機能を異なるパラメータに設定して使用しやすいようにします.同じ機能を実現しているため,コード重複を解消する必要がある.デフォルトのジェネレータからオーバーロードジェネレータを呼び出すことで、重複データを除去できます.ジェネレータを呼び出す方法は、作成したばかりのオブジェクトでのみ呼び出されます.
2-1. 呼び出し方法 ExtamList()は、ExtamList(int size)を呼び出そうとする.this(); カッコに値を入れると、パラメータを持つジェネレータに値が移行します.値を出さないと、自分で自分を呼び出すことが起こります.
3.ジェネレータが定義されていない場合、new ExamList()()のみでオブジェクトが作成されているため、定義する必要がなく、コンパイラはデフォルトのジェネレータを自動的に作成します.
Reference
この問題について(JAVA実習), 我々は、より多くの情報をここで見つけました https://velog.io/@spolice/JAVA-실습-210531テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol