繁体   English   中英

无法理解对象状态、行为和身份?

[英]Trouble understanding Object State, Behavior, and Identity?

我的教授指示我在页面上介绍自己,就好像我是一个对象一样,我必须解决三件事:
1) 对象状态,2) 行为,和 3) 身份。

但是,我仍然很困惑我将如何做这样的事情。 (我已经阅读了我必须解决的三个属性,但我不知道如何将它应用于一个人)。
例如,有人告诉我一只狗会有状态,例如名称、颜色和品种; 以及行为,例如走路、吠叫或摇尾巴。

所以我会做类似的事情:

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....()); //???

或者我在这里得到了完全错误的想法?

对象的特征是:

状态对象有什么,学生有名字、姓氏、年龄等

行为对象做什么,学生参加“Java 初学者”课程

身份是什么让他们独一无二,学生有学生 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;
    }
}

Car 对象的插图,我发现它可能对您有所帮助......

汽车状态

  • 速度
  • 转速
  • 齿轮
  • 方向
  • 油位
  • 发动机温度

行为

  • 换档
  • 走得更快/更慢
  • 往回走
  • 停止
  • 关机

身份

  • 车牌号
  • 车牌

所有对象都具有三个基本特征:

  • 状态
  • 行为
  • 身份

对象的状态由对象的属性和这些属性的值定义 在你的情况下, name, age, gender

术语"behavior"是指objects interact with each other如何objects interact with each other ,它由对象可以执行的操作定义。 在你的情况下,学生对象,可以做一些活动吗?

student.getResults();
  • 身份:

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

例如,

2辆由同一厂家同年生产的蓝色旅行车仍然是独立且独特的汽车。

对象的身份与其属性或操作无关。 因此,无论其属性具有什么值,对象都将保留其身份。

作为对标记为最佳答案的@MrSimpleMind 答案的更正,并详细说明@JNL 的答案:

身份并不是使对象在其状态方面唯一的原因(例如 name = "Tim" 或其他什么)。 然而,身份是一个对象在内存中的位置是唯一的。
如果您想了解更多关于此的内容,您可以从查看此Wiki 页面开始:OOP 中的身份

更新
值得一提的是,它并不总是在内存中的位置方面。 将对象保存到数据库时,它本质上将保存为一行,此处使用 ID 列。

状态:- 状态是对象变量的值

行为:- 是对象的方法

身份:- 它是对象的名称。

例如:-

类车{

整数速度 = 100;

无效加速(){}

}

class_car obj_car;

这里,

状态:-速度

行为:-加速

身份:- obj_car

在对象的编程实现中,

它的状态由它的实例变量定义。 实例变量是对象私有的。 除非明确公开或提供给其他“友好”类,否则无法从对象外部访问对象的实例变量。

对象的行为由其方法定义。 方法操作实例变量以创建新状态; 对象的方法也可以创建新对象。 Java 白皮书页数:34

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM