инкапсуляция в java



Java инкапсуляция

Автор Антон Поманицкий задал вопрос в разделе Java

Вопрос по Java, инкапсуляция и получил лучший ответ

Ответ от Доктор Акаса[гуру]
Создал класс физического объекта, добавил ему параметр веса, сделал вес приватным членом класса и всё, теперь никто ему нулевого или отрицательного значения не впихнёт без спроса.

Ответ от Капитан Гугл[гуру]
Простой пример. Есть
class Triangle{public double a,b,c,area;void CalculateArea();}
Площадь area вычисляется при изменении сторон:
Triange t=new Triangle;
t.a=3;
t.b=4;
t.c=5;
t.CalculateArea();
System.out.println(t.area);//напечатать площадь
А что произойдет, если кто-то забудет вызвать CalculateArea после выставления сторон? Правильно, area будет давать неправильный результат. Зато если сделать сеттеры, то можно написать
void setA( double _a ){a=_a;CalculateArea();} - и площадь всегда будет посчитана правильно.

Ответ от Денис Рамусь[гуру]
Смотри дружок. Есть у тебя мысли, к которым мы не может обратится на прямую. Только через методы говорить, спросить. А там у тебя уже алгоритм который нам выдает результат. А теперь представь что было бы если бы к твоей голове подключались напрямую? Ужс? А если ты тетеньку голую представил, представь что было бы, если бы она в тот момент напрямую обратилась к твоим мыслям. Хотя может тебе это нравится) А так как ты инкапсулирован, то ты можешь РЕАГИРОВАТЬ и конфликтовать. Вот тетенька хочет узнать твои мысли, а ты ей раз и облом! А мир это система. Представь что если бы где то взорвалась АЭС и никто бы не узнал. Всем плевать, она не инкапсулирована. А если ты считаешь, что реагирование можно сделать без инкапсуляции, то это уже не стиль ООП.

Ответ от Александр[гуру]
если человеку отрезать ногу, то он почувствует что ему ногу отрезали, но он не поймёт как отрезать ногу кому-либо

Ответ от Арсений[активный]
На самом деле, это позволяет снизить ошибки, и не позволяет программистам, которые пользуются классом, лезть туда куда не предусмотренно автором. Не все поля имеют аксессоры, как правило прячут внутреннюю кухню. Программист работающий с классом таблица, имеет доступ к определенным методам таблицы, к примеру, получить ячейку или добавить строку. Т. е. тот функционал, который необходим для работы с таким понятием как талбица данных. А то как эта талица отрисовывается, или как называется поле хранящее какое то рабочее значение (положение скролла например). Это знать пользователю и не нужно. Все эти кишки они скрыты, и это облегчает как и понимание объекта (класса), так и работу с ним. В коллективной разработке больших проектов, это особо полезно.
P.S. А если класс имеет потенциал развития (какой-нибудь виджет например, он понимает как разместиться в окне, какие у него размеры, ловит события и т. д. Но никакой доп информации не отображает), то лучше помечать скрытые поля protected, что бы коллеги, которые унаследуют свой класс от твоего (что бы сделать более конкректную реализацию, часы или данные с биржи)) имели доступ к полям, которые могут им понадобиться.

Ответ от Джонни Парапалкус[новичек]
Суть в том, что если бы твое поле было бы доступно напрямую (без сетеров и геторов), то ты мог бы записывать любую величину, какую бы захотел. Но когда ты создаешь сеттер к примеру, в его теле ты описываешь доступные значения для этого поля. То есть, ты обрабатываешь случаи, если вдруг по какой то причине в это поле попытаются записать значение, которое недопустимо. Вот и все, просто обработка входных параметром для какого то конкретного поля

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Вопрос по Java, инкапсуляция
Инкапсуляция программирование на Википедии
Посмотрите статью на википедии про Инкапсуляция программирование
Исмаилов Тельман Марданович на Википедии
Посмотрите статью на википедии про Исмаилов Тельман Марданович
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*