Для примера инкапсуляции я могу думать о взаимодействии между пользователем и мобильным телефоном. Пользователю не нужно знать, как работает внутренняя работа мобильного телефона, поэтому это называется абстракцией. Но где инкапсуляция подходит к этому примеру? Может ли кто-то пролить свет на это?
Пример инкапсуляции и абстракции
Ответ 1
Инкапсуляция - это способ достижения "скрытия информации" , поэтому, следуя вашему примеру, вы не "необходимо знать, как работает внутренняя работа мобильного телефона". У вас есть интерфейс для использования поведения устройства, не зная подробностей реализации.
Абстракция с другой стороны, можно объяснить как возможность использования одного и того же интерфейса для разных объектов. Могут существовать различные реализации одного и того же интерфейса. Детали скрыты путем инкапсуляции.
Ответ 2
Абстракция: вы никогда не купите "устройство", но всегда покупаете что-то более конкретное: iPhone, GSII, Nokia 3310... Здесь iPhone, GSII и N3310 - это конкретные вещи, устройство является абстрактным.
Инкапсуляция: у вас есть несколько устройств, у всех есть USB-порт. Вы не знаете, какая там печатная схема, вы просто должны знать, что сможете подключить USB-кабель.
Абстракция - это понятие, которое допускается инкапсулированием. Мой пример не был лучшим (нет реальной связи между этими двумя блоками).
Вы можете делать инкапсуляцию без использования абстракции, но если вы хотите использовать некоторую абстракцию в своих проектах, вам понадобится инкапсуляция.
Ответ 3
В общих словах абстракция просто скрывает сложные вещи за определенной процедурой, чтобы упростить процедуру.
Пример: Монитор ВКЛ/ВЫКЛ:: - пользователю не нужно знать многое обо всех функциях чипов, которые происходят, когда монитор включен или выключен. Все, что ему нужно знать, это функция "Вкл." ON-Monitor включен и выключен. OFF-Monitor выключен...
Или лучше искать автомобиль - все знают, что есть специальная зубчатая машина, которая меняет снаряжение, никто не знает, что все функциональные возможности претерпевают для переключения передач. Итак, эта абстракция (избегая нежелательных реализаций, чтобы предотвратить сложность).
Итак, если разработчик обеспечивает хорошую абстракцию, у пользователей не возникнет соблазна заглянуть во внутренние механизмы объекта.
Абстракция достигается путем абстрактного абстрактного класса, содержащего один или несколько методов. Это не что иное, как существенная характеристика, которую должен выполнять класс, расширяющий ее.
e.g.
Когда вы изобретаете/проектируете автомобиль, вы определяете характеристики, такие как автомобиль, должны иметь 4 двери, разрыв, рулевое колесо и т.д.... так что каждый использует этот дизайн, должен включать в себя эти характеристики. Реализация не является главой каждой абстракции. Он просто определит характеристики, которые следует включить.
Инкапсуляция запрещает пользователю следовать определенной процедуре, чтобы получить доступ к управлению определенным процессом. Он просто обеспечивает безопасность и обеспечивает надежность системы.
Пример. Мы можем рассматривать HR в компании как человека, который работает по принципу инкапсуляции .i.e.
, мы не можем разговаривать с другими отделами напрямую, нам нужно общаться через них через HR. Это обеспечивает безопасность и лучшее обслуживание компании записи.
Вместе мы можем взять пример a UNDER CONSTRUCTION BUILDING..
, где мы можем сказать, что такие вещи, как "нет. требуемых менеджеров, Типы материалов, количество рабочих и т.д. как абстракция, поскольку они необходимы там в каждом строительстве.
Но в то же время включение каждого такого поля в ПОДРЯДЧИК, который выступает в качестве посредника между рабочими и Строительным инвестором, можно рассматривать как инкапсуляцию. As, Он скрывает все вышеперечисленные свойства в одну Entity.
Следовательно, если бы вы поняли до сих пор, вы можете сказать, что абстракция - это всего лишь поднабор ENCAPSULATION.i.e.Every Выполнение абстракции инкапсулируется внутри, но все, что показывает, что инкапсуляция не обязательно должна быть абстракцией.
например. .ToString()
Метод, определенный почти в каждом классе, представляет собой реализацию Abstraction
, потому что мы не являемся функционалом внутри. Все, что нам нужно, это то, что он меняет почти все на string.And, когда он собирает asa unit, он также инкапсулируется. Но Частные члены, которых мы скрываем и получаем через Properties
, являются примером инкапсуляции только в том виде, в каком это делается в основном для обеспечения безопасности данных в mindd..!!
Надеюсь, это ответит на ваш вопрос..!!
Ответ 4
Инкапсуляция заключается в том, чтобы скрыть переменные или что-то внутри класса, предотвращая использование неавторизованных сторон. Таким образом, общедоступные методы, такие как getter и setter, получают доступ к ним, а другие классы называют эти методы для доступа к
Абстракция включает средство для определения объектов, которые представляют абстрактные "актеры", которые могут выполнять работу, сообщать и изменять свое состояние и "общаться" с другими объектами в системе.
Рассмотрим приведенный ниже пример в реальном времени:
Инкапсуляция: В качестве драйвера вы знаете, как запустить автомобиль, нажав кнопку "Пуск", и внутренние данные о стартовых действиях скрыты от вас. Таким образом, весь процесс запуска скрыт от вас, иначе мы можем сказать, что начальная операция инкапсулирована из вас.
ИЛИ
Ведущее колесо инкапсулирует процесс вращения колеса от вас.
Абстракт:
Прежде чем упоминать что-нибудь об абстракции, мы можем взять здесь трех разных пользователей (я называю их сущностью)
1) Вы 2) Локальный механик 3) Эксперт
Ваше лицо:. Поскольку вы знаете только, чтобы запустить автомобиль, нажав кнопку, и все остальные операции за сценой будут отвлечены от вас.
Локальная механика:. Наш локальный механик знает некоторые из вариантов запуска автомобиля, то есть он может открывать капот автомобиля и проверять кабель батареи или колодец и т.д. Таким образом, местная механика-сущность знает некоторые от реализаций автомобиля.
Экспертная организация: Так как наш специалист (конструктор автомобиля) знает все операции нашего автомобиля, он может отремонтировать его очень быстро. Короче говоря, Expert Entity знает обо всех реализациях автомобиля.
Операция автомобиля полностью абстрагируется от вас, и она частично реализована в Local Mechanic Entity и полностью внедрена в Expert Entity. Таким образом, вы являетесь абстрактным классом, имеющим только абстрактные методы, Local Mechanic Entity расширил вас (поскольку он также является обычным пользователем), и он реализовал некоторые из этих методов и последний наш эксперт Entity расширяет Local Mechanic и реализует все методы.
Я думаю, что это хороший пример.
Ответ 5
У всех есть много свойств и поведения, поэтому возьмите любой объект, который вы хотите, телевизор, мобильный, автомобиль, человек или что-то еще.
Абстракция:
- Процесс выбора сущности объекта, который вам действительно нужен
- Другими словами, выберите нужные свойства из объекта
Пример:
а. Телевизор - Звук, Визуальные эффекты, Вход питания, Вход каналов.
б. Mobile - кнопка/сенсорный экран, кнопка питания, кнопка громкости, сим-порт.
с. Автомобиль - рулевое управление, перерыв, сцепление, ускоритель, ключевое отверстие.
д. Человек - голос, тело, глаз, слух, эмоции.
Инкапсуляция:
- Процесс скрытия деталей объекта, который вам не нужен.
- Другими словами, скройте свойства и операции, которые вам не нужны от объекта, но необходимы для правильной работы объекта
Пример:
а. TV - Внутренние и соединения динамиков, Дисплей, Компоненты ч/б распределения питания, Канальный механизм.
б. Mobile - как обрабатывается и обрабатывается вход, как нажатие кнопки вкл/выкл или изменение томов, как sim будет подключаться к поставщикам услуг.
с. Автомобиль - Как поворачивает рулевое управление, поворачивает автомобиль, Как ломается медленный или останавливает автомобиль, Как работает сцепление, Как ускоритель увеличивает скорость, Как переключатель ключа включен/на автомобиле.
д. Человек - Как производится голос, Что внутри тела, Как работает зрение, Как слух работает, Как эмоции генерируют и влияют на нас.
РЕЗЮМЕ все, что вам нужно, и ENCAPSULATE все, что вам не нужно;)
Ответ 6
Формулировка вашего вопроса нечетна - абстракция против инкапсуляции? Это должно быть - кто-то объясняет абстракцию и инкапсуляцию...
Абстракция понимает суть вещи.
Реальный мир - это абстрактное искусство. Художники этого стиля пытаются захватить/нарисовать суть вещи, которая все еще позволяет ей быть тем. Этот коричневый мазок из 4 линий отражает суть того, что есть бык.
Инкапсуляция - черный бокс.
Сотовый телефон - отличный пример. Я понятия не имею, как сотовый телефон подключается к спутнику, башне или другому телефону. Я понятия не имею, как чертовски понимают мои нажатия клавиш или как это происходит, и отправляет фотографии на адрес электронной почты или другой номер телефона. Я понятия не имею о сложной детали большинства современных смартфонов. Но я могу использовать его! У телефонов есть стандартные интерфейсы (да - и буквальный, и программный дизайн), который позволяет кому-то понять основы одного, чтобы использовать почти все из них.
Как связаны эти два?
И абстракция, и инкапсуляция являются основами объектно-ориентированного мышления и дизайна. Итак, в нашем примере сотового телефона. Понятие смартфона - это абстракция, в которой инкапсулируются определенные функции и сервисы. IPhone и Galaxy - это абстракции абстракции более высокого уровня. Ваш физический iPhone или Galaxy - это конкретные примеры нескольких слоев абстракций, которые содержат инкапсулированные функции и службы.
Ответ 7
Абстрактные Средства Мы фокусируемся на существенных качествах какой-то вещи, а не на одном конкретном примере, и мы автоматически отказываемся от того, что неважно или не имеет значения.
Пример Мы пишем класс банковского счета, основные качества банковского счета - дата открытия, название учетной записи, номер счета, баланс и т.д.
Инкапсуляция Означает идею капсулирования или окружающего что-то не только для того, чтобы держать контент вместе, но также защищать и ограничивать доступ к форме из стороны. Помимо секретности Это о сокращении зависимостей между различными частями приложения.
Пример В нашем классе банковской учетной записи Кто-то, кто обращается к атрибуту Баланса и пытается его изменить, может быть успешным, если нет инкапсуляции.
Ответ 8
Инкапсуляция скрывает информацию.
Абстракция скрывает детали функциональности.
Инкапсуляция выполняется путем построения класса. Абстракция достигается путем создания либо абстрактных классов, либо интерфейсов поверх вашего класса.
В примере, приведенном в вопросе, мы используем класс для его функциональности, и нам не важно, как это достигается устройством. Поэтому мы можем сказать, что детали телефона "отвлечены" от нас.
Инкапсуляция скрывает, ЧТО ТЕЛЕФОН ИСПОЛЬЗУЕТ для достижения того, что он делает; Абстракция скрывается КАК ЭТО ДЕЛАЕТ.-
Ответ 9
Я чувствую, что инкапсуляция может иметь смысл обсуждать, когда вы видите, КАК НЕ СДЕЛАТЬ в программировании. Например, рассмотрите класс Car, как показано ниже.
class Car{
public float speed =0;
public boolean isReverse = false;
public boolean isStarted = false;
}
Клиентский код может использовать выше класс автомобиля, как показано ниже.
class Main{
public static void main(args String[]){
Car car = new Car();
// No need to start??
car.speed = 100; // Turbo mode directly to 100
car.speed = 0; // Turbo break
}
}
См. больше на: http://brevitaz.com/encapsulation-example-benefits-java/
Это неконтролируемый доступ к скорости автомобиля и другим переменным. По инкапсуляции класс Car может иметь полный контроль над изменением переменных данных в классе автомобилей.
Любая конкретная сущность, которая имеет некоторое поведение, является примером инкапсуляции. Поведение обеспечивается за счет чего-то, что-то скрывает от клиента. В случае мобильного телефона это сигналы, чипы, схемы, аккумулятор и т.д.
Для абстракции того же примера - обычный пользователь может сказать, что я в порядке с чем-либо, с помощью которого я могу совершать звонки и принимать вызовы. Эта абстракция может быть заменена любым конкретным мобильным телефоном. Проверьте Примеры абстракции.
Ответ 10
Инкапсуляция помогает соблюдать принцип единой ответственности, а абстракция помогает придерживаться кода для интерфейса, а не реализовывать.
Скажем, у меня есть класс для автомобиля: класс поставщика услуг и класс драйвера: класс обслуживания потребителей.
Для абстракции: мы определяем абстрактный класс для CAR и определяем все абстрактные методы в нем, которые являются функциями, доступными в автомобиле, например: changeGear(), applyBrake().
Теперь фактический автомобиль (Concrete Class, например Mercedes, BMW будет применять эти методы по-своему и отвлечь исполнение, и конечный пользователь все равно будет применять перерыв и смену передач для конкретного конкретного экземпляра машины и, по-видимому, в конкретном классе.
Для инкапсуляции: теперь скажем, что Mercedes придумал новую функцию/технологию: Anti Skid Braking, применяя applyBrake(), он будет инкапсулировать эту функцию в методе applyBrake() и, таким образом, обеспечить сплоченность, а потребитель обслуживания по-прежнему будет такой же способ применяетсяBrake() объекта автомобиля. Таким образом, инкапсуляция позволяет продолжить реализацию того же конкретного класса.
Ответ 11
Позвольте мне дать мои 2 цента реального мира - аналогию, близкую к ИТ.
Допустим, у вас есть сайт подписки, например сайт wordpress
Каждый пользователь имеет роль, например, администратор, подписчик и т.д. Многие пользователи могут быть администраторами, подписчиками и т.д.
Таким образом, абстракция отражается в том, что любой пользователь с ролью администратора может выполнять множество вещей, неважно, какой именно пользователь это (это пример абстракции).
С другой стороны, пользователи-подписчики не имеют доступа к определенным настройкам сайта, поэтому некоторые внутренние элементы приложения инкапсулируются для простых подписчиков (это пример инкапсуляции)
Как видно, абстракция и инкапсуляция являются относительными понятиями, они применяются в отношении чего-то конкретного.
Можно следовать этой линии рассуждений и объяснять полиморфизм и наследование.
Например, пользователи супер-администратора могут делать все, что могут сделать администраторы, и еще несколько. Более того, если роли администратора получат обновление в функциональности, супер-админы получат такое же обновление. Таким образом, здесь можно увидеть пример наследования, поскольку роли супер-администратора наследуют все свойства ролей администратора и расширяют их. Примечание, что для большей части сайта администраторы взаимозаменяемы с супер-админами (это означает, что пользователь супер-администратора может быть легко использован вместо пользователя администратора, но не наоборот).
Ответ 12
Инкапсуляция определяется как процесс включения одной или нескольких деталей из внешнего мира через право доступа. В нем говорится, насколько необходимо предоставлять конкретные детали. Абстракция и инкапсуляция работают рука об руку, потому что абстракция говорит, какие детали нужно сделать видимыми, а инкапсуляция обеспечивает уровень доступа к этим видимым деталям. то есть - он реализует желаемый уровень абстракции.
например.
Говоря о Bluetooth, который у нас обычно есть на нашем мобильном телефоне. Когда мы включаем Bluetooth, я могу подключить другой мобильный телефон, но не могу получить доступ к другим мобильным функциям, например, набирать номер, получать доступ к почтовому ящику и т.д. Это связано с тем, что для функции Bluetooth предоставляется некоторый уровень абстракции.
Другим моментом является то, что мобильный A подключен к мобильному B через Bluetooth, тогда как мобильный B уже подключен к мобильному C, тогда A не разрешено подключать C через B. Это связано с ограничением доступности.
Ответ 13
Я предполагаю, что оболочка яйца может рассматривать инкапсуляцию, а содержимое - абстракцию. Оболочка защищает информацию. Вы не можете иметь содержимое яйца без оболочки., LOL
Ответ 14
Если вы видели важную телевизионную машину, телевизионные соединения и телевизионная цветовая трубка скрыты внутри корпуса телевизора, который не был выставлен для таких зрителей, как мы, и обнаружил только необходимые вещи телевизора, такие как клавиши TV Channel, клавиши громкости телевизора, ON/OFF, кабельный коммутатор и пульт дистанционного управления телевизором, чтобы зрители могли его использовать. Это означает, что телевизор, телевизионные соединения и телевизионная цветовая трубка являются нежелательными данными и не нужны для просмотра зрителями, которые скрыты из-за пределов света.
Таким образом, инкапсуляция означает скрытие важных функций класса, которые не нужны для отображения вне класса и отображения только необходимых вещей класса. Здесь скрытая часть класса действует как инкапсуляция, а открытая часть класса действует как абстракция.
Ответ 15
Просто подумайте об абстракции, скрывая клавиатуру и детали экрана, Инкапсуляция как скрытие внутренней схемы, которая их связывает.
Ответ 16
Абстракция, которая скрывает внутренние детали для внешнего мира, например, вы создаете класс (например, калькулятор один из класса), но для конечного использования вы предоставляете объект класса. С помощью объекта они будут играть и выполнять операцию, t знает, какой тип механизма использует внутри. Объект класса в абстрактной форме.
Инкапсуляция - это метод создания полей в классе private и обеспечения доступа к полям с помощью общедоступных методов. Если поле объявлено закрытым, доступ к нему не может получить кто-либо вне класса, тем самым скрывая поля внутри класса. По этой причине инкапсуляция также называется скрытием данных. Например, калькулятор класса, который содержит частные методы getAdd, getMultiply.
Mybe выше ответа поможет вам понять концепцию.
Ответ 17
Абстракция
Используется для управления сложностями ООП. Используя это свойство, мы можем предоставить основные функции объекта пользователю без включения его пояснения. Например, при отправке сообщения другу мы просто пишем сообщение, скажем "hiiii" и нажимаем "send", и сообщение доставляется в пункт назначения (ее, друг). Здесь мы видим абстракцию на работе, то есть мы менее озабочены внутренней работой мобильного телефона, который отвечает за отправку и получение сообщения
Ответ 18
Абстрактные
Мы используем много абстракций в нашей повседневной жизни. Рассмотрите автомобиль. Большинство из нас имеют абстрактный взгляд на то, как работает автомобиль. Мы знаем, как с ним взаимодействовать, чтобы заставить его делать то, что мы хотим, чтобы он do: мы помещаем газ, поворачиваем ключ, нажимаем несколько педалей и так далее. Но мы не обязательно понимаем, что происходит внутри автомобиля, чтобы заставить его двигаться, и нам это не нужно. Миллионы из нас используют автомобили каждый день, не понимая деталей того, как они работают. Препятствие помогает нам добраться до школы или работать!
Программа может быть разработана как набор взаимодействующих абстракций. В Java эти абстракции фиксируются в классах. Создатель класса obviusly должен знать свой интерфейс, точно так же, как водитель автомобиля может использовать автомобиль, не зная, как работает двигатель.
Инкапсуляция
Рассмотрим банковскую систему. Система банка имеет такие свойства, как учетная запись, тип учетной записи, баланс..etc. Если кто-то пытается изменить баланс учетной записи, попытка может быть успешной, если нет инкапсуляции. Поэтому инкапсуляция позволяет классу полностью контролировать свои свойства.