может ли свойство в oop быть полями или это просто комбинация методов установки и получения? - PullRequest
0 голосов
/ 25 июня 2018

поэтому я пытался понять, что именно означает свойство.Я искал ранее заданные вопросы / ответы в stackoverflow и на других веб-сайтах, но ответы, с которыми я сталкивался, не были конкретными относительно того, называются ли свойства (переменные экземпляра), которые модифицируются с помощью сеттеров и геттеров, также свойствами.

Определение, с которым я столкнулся, было «комбинацией методов установки и получения, которые изменяют поля объекта»

Ниже приведен лишь небольшой фрагмент кода, который поможет вам лучше понять мой вопрос, если вам нужно больше разъяснений.

//property?
String name;

//property?
public void setName(String n){
    name = n;
}
//property?
public String getName(){
    return name;
} 

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

В мире ООП «свойство» имеет довольно широкий смысл, и его конкретное значение зависит от контекста. Как правило, это атрибут сущности; Это может быть имя или возраст человека, цвет цветка, высота здания и т. д. Свойство имеет свое имя и свою ценность (например, flower.color = red - здесь color - это имя, а red - это значение), значение может принадлежать разным типам (или классам): строка, число, человек, предприятие ... Оно может иметь постоянное значение (которое никогда не меняется в течение жизни владельца ( объект, которому он принадлежит)) или может иметь значение переменной, которое может быть изменено пользователем. В области программного обеспечения об этом можно говорить на концептуальном уровне анализа предметной области и разработки программного обеспечения; в этом случае людям обычно все равно, как именно это будет реализовано. Кроме того, его можно использовать на уровне конкретной реализации (программный код), и тогда средства для реализации этой концепции зависят от языка программирования. Например, в Java, когда мы говорим «свойство», мы обычно подразумеваем поле (переменную) объекта и пару методов (или один метод для свойств, доступных только для чтения), чтобы получить доступ к его значению (получатель и установщик) :

class Person {
  private String name;         // the field to hold the value
  public Person(String name) { // Constructor
    this.name = name // The name is given at the moment it's been born 
  }
  public String getName() { return Name; } // getter
  // No, name can't be changed after it's been born -- it's a read-only property, thus no setter
  // public void setName(String name) { this.name = name; } // otherwise the setter would look like this
}

В этом случае пользователь может получить доступ к значению свойства с помощью следующего кода:

 System.out.println(thisPerson.getName());

Другие языки (например, C#) имеют средства для кодирования свойств более удобным способом:

class AnotherPersonType {
  private string name // a field to hold the value  
  public string Name 
  {
     get => name;         // getter, the same as "return this.name;" 
     set => name = value; // setter, the same as "this.name = value;"
  }    
}  
.....
anotherPerson.name = "John"; // It looks like an assignment, 
                              // but in fact, the setter is invoked   
0 голосов
/ 25 июня 2018

Properties означает любых членов, которые относятся к class. Это могут быть переменные, объекты другого / того же класса, методы этого класса и т. Д.

в основном getter/setter используются только для этих переменных-членов.

Локальные переменные - это свойства того метода, которому он принадлежит, а не свойство класса.

...