@Levingstoun

Лучший путь с точки зрения ООП?

Немного глупый вопрос задам, но тут подумал, а какой с точки зрения ооп наилучший путь предоставления массива скажем из класса в функцию?
Запаблишить существующий объект и через точку дать к нему доступ(только для чтения, не для модификаций)
Или создать метод, типа public: List get_list() и вернуть этот массив, читая его через этот метод, а сам массив сделать private?
  • Вопрос задан
  • 145 просмотров
Решения вопроса 2
@VitalyChaikin
на мой взгляд, с точки зрения ООП (а именно инкапсуляция), - доступ к переменной/массиву возможен только из функции класса; И поэтому должны быть реализованы get() и set() для этой переменной.
Ответ написан
Комментировать
HemulGM
@HemulGM
Delphi Developer, сис. админ
Использовать нужно свойства. При чем оставить только на чтение. В зависимости от языка, массив - это либо указатель, либо набор данных. Так что на твой вопрос абстрактно нельзя ответить.

Например Delphi:
type
  MyObject = class
  private
    FMyArray: array of string;
  public
    property Strings: array of string read FMyArray;
  end;


Так мы ничего не теряем, но запрещаем изменять ссылку на массив. Хотя, сам массив ни кто тебе не запрещает изменять, если на него есть ссылка, но это уже проблемы указателей и отдельного языка.

Для того, чтоб нельзя было вообще что-то делать с массивом, можно использовать следующую конструкцию:

type
  MyObject = class
  private
    FMyArray: array of string;
    function GetMyArrayItem(Index: integer): string;
  public
    property Strings[Index: integer]: string read GetMyArrayItem;
  end;


В таком случае, ссылки на массив нет. И изменить данные массива нельзя.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev
software engineer
Вся суть ООП заключается в том, что снаружи нельзя работать с любыми данными класса, только через методы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы