Как получить доступ к переменным из другого класса, используя геттер - PullRequest
0 голосов
/ 11 октября 2019

Я начинающий программист, и мне трудно схватить геттеры и сеттеры. Я просто не вижу смысла.

Я пытаюсь получить доступ к переменной в классе A и использовать это значение в классе B для выполнения некоторой функции. Я думал, что мог бы использовать getter для доступа к этому значению, но это возвращает ноль, так как я понимаю, что создаю новый объект с новыми значениями сейчасТогда какой смысл тогда получателю?

Я передал переменные, используя параметры метода, но это кажется противоречащим интуитивному мнению моего новичка. Я просто не понимаю всей этой концепции. Или я не прав. Я могу использовать геттеры для доступа к значению переменной другого класса, не делая ее статической?

1 Ответ

0 голосов
/ 12 октября 2019

Если я правильно вас понимаю, вы спрашиваете: «Зачем мне нужны переменные экземпляра с методами getter и setter для чтения / изменения этих переменных, когда я могу просто передать данные в объект с помощью аргументов метода? "Звучит ли это правильно?

Ответ дает суть того, что такое ООП (объектно-ориентированное программирование). Основная концепция ООП заключается в том, что вы создаете отдельные объекты для представления отдельных частей данных. Например, вы можете отслеживать имена и возраст некоторых групп людей;в этом случае вы будете использовать различные объекты для представления (и, соответственно, хранения, управления данными) о каждом отдельном человеке.

Персона 1 («Билл», 52)

Человек 2 ("Мэри", 13)

Человек 3 ("Лана", 29)

Цель класса в этой модели - просто определить спецификации этих объектов(например, «Человек» состоит из имени и возраста).

Почему это полезно? Во-первых, это довольно интуитивная система, поскольку вы можете думать о создаваемых объектах как о реальных реальных объектах. Во-вторых, это облегчает работу с данными, которые связаны между собой. Если, например, мы хотим объединить (объединить в строку) имя человека с его возрастом, наличие объекта, представляющего каждого человека, делает это легко! Просто посмотрите на каждый объект, один за другим, и используйте получатели для доступа к значениям для каждого экземпляра.

Чтобы сделать это не ООП-способом, нам понадобится другой способ хранения информации - возможно, в виде списка имен и отдельного списка возрастов.

Список имен: ["Билл", "Мэри", "Лана"]

Список возрастов: [52, 13, 29]

При такой настройке не так легко увидеть, какое имя относится к какому возрасту - единственное, что у них есть, связывает их - это их позиция в списке. И если бы списки были отсортированы, эти позиции могли бы измениться!

Итак, вкратце: экземпляры объектов являются отличным способом обработки многих похожих дискретных наборов данных.

Что касается того, почему мы обычно используем методы получения и методы установки при работе с этими экземплярами, вместо того, чтобы просто выставлять свойства напрямую, можно найти отличное объяснение здесь . Но стоит упомянуть, что разные языки обрабатывают это по-разному. Например, в JavaScript все свойства доступны напрямую. В Ruby их нет, и вы должны использовать сеттеры и геттеры для просмотра / изменения переменных экземпляра объекта.

Надеюсь, это обеспечит некоторую ясность!

...