Ответ
В ООП объекты характеризуются тремя фундаментальными аспектами:
- Состояние (State): Данные объекта, представленные значениями его полей (атрибутов). Состояние может изменяться со временем.
- Поведение (Behavior): Операции, которые объект может выполнять, реализованные в виде методов. Поведение определяет, как объект взаимодействует с внешним миром и изменяет свое состояние.
- Идентичность (Identity): Свойство, которое отличает один объект от другого, даже если их состояния идентичны. В Java идентичность часто связана с адресом в памяти (ссылкой).
Пример на Java:
public class BankAccount {
// СОСТОЯНИЕ (поля)
private final String accountNumber; // Уникальный идентификатор (часть идентичности)
private double balance;
private String ownerName;
public BankAccount(String accountNumber, String ownerName) {
this.accountNumber = accountNumber;
this.balance = 0.0;
this.ownerName = ownerName;
}
// ПОВЕДЕНИЕ (методы)
public void deposit(double amount) {
if (amount > 0) {
this.balance += amount; // Изменение состояния
}
}
public double getBalance() {
return this.balance; // Возврат состояния
}
// ИДЕНТИЧНОСТЬ: два счета разные, даже если баланс и владелец совпадают
public static void main(String[] args) {
BankAccount acc1 = new BankAccount("ACC001", "Alice");
BankAccount acc2 = new BankAccount("ACC002", "Alice");
// acc1 == acc2 -> false (разные объекты, разная идентичность)
}
}
Эти три принципа лежат в основе инкапсуляции и моделирования предметной области.