web-dev-qa-db-ja.com

オブジェクトの状態、動作、およびアイデンティティを理解するのに問題がありますか?

私は教授から、まるで自分がオブジェクトであるかのようにページ上で自己紹介をするように指示されました。
1)オブジェクトの状態、2)動作、3)アイデンティティ。

しかし、私はこのようなことをどのように行おうとしているかについて、まだ本当に混乱しています。 (対処しなければならない3つの属性について読みましたが、それをどのように人に適用するかわかりません)。
たとえば、犬には名前、色、品種などの州があると言われました。歩行、barえる、尻尾を振るなどの行動も含まれます。

だから私は次のようなことをしますか?

Student me = new Student();
System.out.println(me.getName()); //a state?
System.out.println(me.getCurrentActivity()); //A behavior? (if it were to return watching TV or something) 
System.out.println(me.get....()); //???

または、ここで完全に間違ったアイデアを得ていますか?

18
TheNewGuy

オブジェクトの特性は次のとおりです。

状態オブジェクトが持っているもの、学生には名、姓、年齢などがあります

動作オブジェクトが行うこと、学生はコース「Java for beginners」に参加します

ID何が彼らをユニークにするか、学生は学生ID番号、またはユニークなメールを持っています。 (これは、オブジェクトが異なるかどうかを判断するために、equalsメソッドを実装するときに重要です)

Student john = new Student("John");
john.setCurrentActivity("Learning Java");
john.setAge(21);
john.setWeight(173);
john.setAddress(...);
john.setHobbies(...);

そして、ゲッターを把握できます。

public class Student {
    private String name;
    private int    age;
    //etc

    // construct a new student 
    public Student(String name) {
        this.name   = name;
    }

    public setAge(int age) {
        this.age   = age;
    }

    public int getAge() {
        return age;
    }
}

車のオブジェクトのイラスト、私はそれがあなたを助けるかもしれないとわかりました...

車の状態

  • 速度
  • RPM
  • 装備
  • 方向
  • 燃料レベル
  • エンジン温度

動作

  • ギアチェンジ
  • より速く/より遅く
  • 逆に行く
  • やめる
  • シャットオフ

ID

  • VIN
  • ナンバープレート
40
MrSimpleMind

すべてのオブジェクトには3つの重要な機能があります。

  • 状態
  • 動作
  • 身元

オブジェクトの状態は、オブジェクトの属性によって定義されますおよびこれらの値によって定義されます。あなたの場合、name, age, gender

用語 "behavior"objects interact with each other、およびオブジェクトが実行できる操作によって定義されます。あなたの場合、学生オブジェクトは、何らかのアクティビティを実行できますか?

student.getResults();
  • 身元:

Even objects with the same properties and behavior have their own individual identity.

例えば、

同じ年に同じ製造業者によって製造された2台の青いステーションワゴンは、まだ別個のユニークな車です。

オブジェクトのIDは、その属性または操作とは無関係です。そのため、オブジェクトのプロパティの値に関係なく、オブジェクトはそのアイデンティティを保持します。

3
JNL

@MrSimpleMindの回答をベストアンサーとしてマークし、@ JNLの回答について詳しく説明します。

Identityは、オブジェクトをその状態に関して一意にするものではありません(たとえば、name = "Tim"など)。ただし、アイデンティティは、オブジェクトがメモリ内の場所に関して一意であることです。
これについてさらに詳しくお読みになりたい場合は、まずこちらをご覧ください Wikiページ:Identity in OOP

[〜#〜] update [〜#〜]
メモリ内の場所という点で必ずしもそうではないことに言及する価値があります。オブジェクトをデータベースに保存する場合、基本的に行として保存されます。ここではID列が使用されます。

2
Millard