ホームページ > Java > &#&チュートリアル > 「釣ったよ、Java!」: クラスとオブジェクトに注目: 抽象化から現実へ

「釣ったよ、Java!」: クラスとオブジェクトに注目: 抽象化から現実へ

DDD
リリース: 2025-01-10 08:36:46
オリジナル
112 人が閲覧しました

オブジェクト指向プログラミング (OOP) では、プログラム内で現実世界の要素を表現しようとします。これを行うために、オブジェクトからその特性 (オブジェクトが持つもの) と動作 (オブジェクトが何を行うか) を抽象化し、これらのアイデアをクラスとオブジェクトに変換します。このようにして、特定の種類のオブジェクトの状態と動作をカプセル化し、コード内でのメンテナンスと再利用を容易にすることができます。

たとえば、プログラムでペンを表現したいと想像してください。その特徴は何でしょうか?そして彼らの行動はどうなるでしょうか?次に、次のようにペンをデザインしましょう:

この抽象化をコードに変換するために、ペンの特性と動作を確立する「型」または「プロジェクト」として機能するクラスを作成しました。このクラスは、このタイプのすべてのオブジェクトが何を持ち (属性など)、実行できるのか (メソッドなど) を定義します。したがって、クラスは抽象表現として機能しますが、オブジェクトはそのクラスの具象/実際のインスタンスです。

クラスからオブジェクトを作成すると、インスタンス変数に特定の値が割り当てられた単一のインスタンスになります。したがって、Paul Deitel と Harvey Deitel (2017、p.56) によれば、「開発する新しいクラスはそれぞれ、変数を宣言し、オブジェクトを描写するために使用できる新しい型になります」。言い換えれば、「ペン」の場合と同様に、同じタイプ(同じクラスから作成された)の異なるオブジェクトを作成でき、同じ動作を共有する可能性がありますが、それぞれの属性の値は異なります。 、それらをユニークなものにします。たとえば、ペン A を作成する場合:

これらの定義を念頭に置いて、クラスを設計するときは、オブジェクトがそれ自体について何を知っているか、またオブジェクトが何を行うのかを考慮する必要があります (BATES, Bert; SIERRA, Kathy, 2005)。それ自体について知っていることをインスタンス変数 (状態) と呼び、それが実行することをそのメソッド (動作) と呼びます。このクラスは、オブジェクトが持つ必要がある構造と動作を要約します。クラスからオブジェクトを作成する場合、オブジェクトはクラスで説明されているのと同じ一般的な特性を使用して構築され、抽象概念の具体的なインスタンスを表します。ただし、各オブジェクトは、その固有の特性を反映する独自の属性値を持ちます。

クラスまたはオブジェクト: 誰が最初に生まれますか?

クラスをオブジェクト構築のための抽象的な「テンプレート」として理解することで、実際にはクラスが基礎となり、オブジェクトはこのモデルを具体化したものになります。言い換えれば、クラスが最初に生成され、それ自体をオブジェクトの型として確立します。クラスはオブジェクトの作成に必要な構造を提供するため、クラスが存在しない状態でオブジェクトを作成することはできません。したがって、クラスは開始点を表し、オブジェクトはこのプロジェクトをプログラム内で実際に使用可能なインスタンスに具体化したものです。

ここで、オブジェクト指向プログラミングで車をモデル化する方法の実践的な例を使用して、クラスとオブジェクトの概念をコードに直接適用できます。

まず、私たちは自問しなければなりません: 私たちは車について何を知っていますか?各車には何が付いているのでしょうか?ドアがあり、アルコール、ガソリン、その他の燃料で走行し、自動でも手動でも、モデル、色、乗車定員があります。これらの特性は、車の状態、つまり車を定義する属性を表します。

そして彼は何ができるでしょうか?加速、ブレーキ、発進、停止、クラクションを鳴らしたり、ドアを開けたり、ヘッドライトを点灯したりすることができます。これらのアクションは、車の動作、つまり、車が実行できる内容を説明するメソッドを表します。

以下に、クラス (Car) としての Car の実装を示し、その属性とメソッドを組み合わせています。良い実践に従って、すべてのコードを英語で記述します。

public class Car {

    private String model;
    private String color;
    private String fuelType;
    private int passengerCapacity;

    public Car(String model, String color, String fuelType, int passengerCapacity) {
        this.model = model;
        this.color = color;
        this.fuelType = fuelType;
        this.passengerCapacity = passengerCapacity;
    }

    public void accelerate() {
        System.out.println("The car is accelerating.");
    }

    public void brake() {
        System.out.println("The car is braking.");
    }

    public void start() {
        System.out.println("The car is started.");
    }

    public void stop() {
        System.out.println("The car is stopped.");
    }

    public void honk() {
        System.out.println("The car is honking.");
    }

    public void displayDetails() {
        System.out.println("Model: " + model);
        System.out.println("Color: " + color);
        System.out.println("Fuel Type: " + fuelType);
        System.out.println("Passenger Capacity: " + passengerCapacity);
    }
}

ログイン後にコピー

ここで、Car クラスから Car オブジェクトを作成してコードで使用します。これにより、オブジェクトを構築するためのモデルとしてのクラスの機能と、そのモデルから作成された実際のバージョンとしてのオブジェクトを示します。

public class Main {
    public static void main(String[] args) {

        Car carA = new Car("Fusca", "Blue", "Gasoline", 4);

        carA.displayDetails();

        carA.start();
        carA.accelerate();
        carA.honk();
        carA.brake();
        carA.stop();
    }
}
ログイン後にコピー

この例では、クラスを設計するときに、実際に、それぞれが独自のデータを持つ複数のインスタンスで実装できる抽象モデルを作成していることを示します。これはオブジェクト指向プログラミングの本質です。抽象的なアイデアを、コードで適用するための具体的な表現に変換します。

クラスとオブジェクトがどのように機能するかは理解できたので、他にどのようなオブジェクトをコードで表現できるでしょうか?すでに豊富な経験をお持ちの方へ: これまでにプロジェクトで作成した中で最も創造的または挑戦的なクラスは何ですか?

ソース:

ポール・デイテル;ダイテル、ハーベイ。 Java: プログラミング方法。サンパウロ: ピアソン
ブラジル教育、2017 年。

シエラ、キャシー;ベイツ、バート。 頭を使いましょう!ジャワ。第2版リオデジャネイロ: Editora Alta Books、2005 年。

以上が「釣ったよ、Java!」: クラスとオブジェクトに注目: 抽象化から現実への詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート