第九章.カテゴリ


今日のTIP
変更したい変数の右クリック-refactor-rename(shift+F 6)を使用すると、変更した変数など、すべての変数を一度に変更できます.
『気軽にクリアできる小さな知識』
testメソッド:作成したコードに問題があるかどうかをテストします.
unit testホワイトボックス+ブラックボックス
ブラックボックス
ブラックボックスは、ソフトウェアの内部構造や動作原理を知らずに動作をチェックする方法です.
正しい入力と正しくない入力を入力することで、出力が正しいかどうかを確認します.
-->ユーザービューの単位をテストする方法
白い箱
ホワイトボックスは、アプリケーションの内部構造と動作をテストする方法です.
ソフトウェア内部のソースコードをテストする方法.
-->開発者の視点でユニットをテストする方法
ここまであるってわかったでしょ!
=============================================================
クラスの概念
オブジェクト向けプログラミングでは、モードデータがオブジェクトとみなされ、これらのオブジェクトがプログラミングの中心であり、このときオブジェクトを作成するための設計図などの概念をクラスと呼ぶ.
Javaは、これらのクラスを使用して複数のオブジェクトを作成および使用します.
クラスは、オブジェクトの状態を表すフィールドと、オブジェクトの動作を表す方法で構成されます.
フィールド:クラスに含まれる変数を表します
メソッド:特定のタスクを実行する文のセット
≪インスタンス|Instance|emdw≫
Javaは、1つのクラスから複数のインスタンスを作成できます.
このようにして生成されたインスタンスには、独立したメモリ領域に格納された独自のフィールドがあります.
ただし、クラス内のすべてのメソッドは、クラスで作成されたすべてのインスタンスによって共有されます.
単純な例)
クラス(class):差(概略図)
フィールド(field)
名前:car.ModelName="アウディ"|car.modelYear = 2020 | car.色=黒
メソッド(method):car.accelerate() | car.brake()
例(例):mycar|friend car-->設計図によって生産されるが、異なる車両
public class CarMain {
    public static void main(String[] args) {
    }
}
public class Car{

}
まずCarMainクラスとCarクラスを作成します.
public class CarMain {
    public static void main(String[] args) {
    Car audi = new Car(); 
    }
}
newは、オブジェクトを生成する際に使用されるキーワードです.
これにより、Carクラスのインスタンスaudi、すなわちCarのオブジェクトが作成されます.
public class Car {
    String name;
CarクラスにnameというString変数を追加しました.このようにクラスに宣言された変数をオブジェクト変数と呼びます.
クラスはオブジェクトを生成し、クラスに宣言された変数はオブジェクト変数です.
public class CarMain {
    public static void main(String[] args) {
        Car audi = new Car();
        System.out.println(audi.name);
    }
}
オブジェクト変数を出力するとnull、すなわちaudiの値になります.nameに値を付けていないからです.
public class Car {
    String name;

    public void setName(String name) {
        this.name = name;  //여기서 사용되는 this. 는 현재 클래스 내의 객체 자기자신을 말한다. 
        //--> this.name = audi.name 과 동일하다.
    }
}
このようにsetNameという名前のメソッドを追加します.
String nameと入力し、voidと出力し、戻り値はありません.
setNameメソッドの呼び出し
public class CarMain {
    public static void main(String[] args) {
        Car audi = new Car();
        audi.setName("아우디");
        System.out.println(audi.name);
    }
}
audiオブジェクトに加えて、porscheオブジェクトをaudiオブジェクトを追加したときと同じオブジェクト(名前を別に設定)に追加してaudiを追加することもできます.nameとporsche.名前の印刷
public class CarMain {
    public static void main(String[] args) {
        Car audi = new Car();
        audi.setName("아우디");

        Car porsche = new Car();
        porsche.setName("포르쉐");

        System.out.println(audi.name);
        System.out.println(porsche.name);
        
    }
}
以前のCar類は同じものを使用していたが、異なるものが現れたことがわかる.
-->オブジェクト変数が共有されていないことを確認します.(オブジェクト変数の値は独立したまま)
生成者
  • 「クラス名と同じ名前で、戻り値のタイプが指定されていないメソッド」がコンストラクション関数として使用されます.
  • ジェネレータはnewインスタンス化後に自動的に実行されます.
  • パラメータを有するジェネレータが定義されている場合、newの実行時にパラメータを指定してジェネレータ
  • を実行することができる.
  • 生成者は、過負荷による複素定義である.
  • コンパイラは、
  • クラスにコンストラクション関数定義が1つもない場合にのみ、「受け入れられない、処理できない」基本です.
    生成者を自動的に定義します.
  • Cleric(String name, int hp, int mp) {  //생성자 오버로드
            this.name = name;
            this.hp = hp;
            this.mp = mp;
        }
    
        Cleric(String name, int hp) {
            this.name = name;  //name 중복
            this.hp = hp;  //hp 중복
            this.mp = Cleric.maxMp; //mp중복
        }
    このようにジェネレータを生成し、mainは以下のように使用できます.ここでの問題は、複数のコンストラクション関数を作成して使用すると、重複するコードが大量に使用されることです.
  • 生成者間で重複するコードがないようにするには、this()を使用します.
    (同じクラスの他のジェネレータを呼び出すことができる)
  • Cleric(String name, int hp, int mp) {  //생성자 오버로드
    
            this.name = name;
            this.hp = hp;
            this.mp = mp;
        }
    
        Cleric(String name, int hp) {
            this(name, hp, maxMp); // 생성자들간에 중복된 코드가 없도록 만들어준다.
        }
     		Cleric cleric1 = new Cleric("아서스1", 40, 5);
            System.out.println(cleric1.name + " | " + cleric1.hp + " | " + cleric1.mp);
    
            Cleric cleric2 = new Cleric("아서스2", 35);
            System.out.println(cleric2.name + " | " + cleric2.hp + " | " + cleric2.mp);
    静的メンバー
  • の静的キーワードを持つ静的メンバー(フィールドまたはメソッド)は
  • です.
  • の各インスタンスではなく、クラスにエンティティを準備します.
    2.同じエンティティ
  • には、クラス名、メンバー名、インスタンス変数名、メンバー名のいずれの場所でもアクセスできます.
  • インスタンスを作成することなく、
  • を使用できます.
  • 静的メソッドは、その内部で非静的メソッドまたはフィールドを使用することはできません.
    	static int maxHp = 50;
        static int maxMp = 10;
    このようにstaticを宣言すると、どのクラスも同じパッケージで宣言できます.