2013-11-13 2 views
4

Я знаю, что есть много пост относительно этого вопроса, который имеет теоретическое объяснение с точки зрения реального времени examples.These Упс являются очень простой, но более запутанным для начинающих, как меня. Но Я ожидаю здесь не определение и пример в реальном времени, но ожидающий фрагмент кода в java.Практический пример Инкапсуляция против сокрытия информации против абстракции против данных Скрываясь в Java

ли кто-нибудь, пожалуйста, дают очень небольшой фрагмент кода для каждого в Java, который поможет мне многое понять Инкапсуляция против сокрытия информации против абстракции против данных Скрытие практически?

+1

Информационное скрытие - это еще один способ сказать инкапсуляцию. Предоставление ненадежным (или даже доверенным) клиентам доступа к состоянию объекта способом, позволяющим клиентам злонамеренно (или случайно) испортить состояние объекта, очень плохо. В максимально возможной степени состояние объекта должно быть скрыто от мира. – scottb

ответ

14

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

class Girl { 
    private int age; 
    Girl(int age) { 
    this.age = age; 
    } 
    public boolean willGoOutWithGuy(boolean isGuyUgly) { 
    return (age >= 22) && (!isGuyUgly); 
    } 
} 

class Guy { 
    private Girl girl = new Girl(); 
    private boolean isUgly = true; 
    public boolean willGirlGoOutWithMe() { 
    return girl.willGoOutWithGuy(isUgly); 
    } 
    // Guy doesn't have access to Girl's age. but he can ask her out. 
} 

Абстракция = различные реализации одного и того же интерфейса.

public interface Car { 
    public void start(); 
    public void stop(); 
} 

class HotRod implements Car { 
    // implement methods 
} 

class BattleTank implements Car { 
    // implement methods 
} 

class GoCart implements Car { 
    // implement methods 
} 

Реализация является уникальной, но может быть связана под Car типа.

+0

Вы имеете в виду, когда мы делаем инкапсуляцию ... информация и скрытие данных также входят в картинку (код). Пожалуйста, сделайте меня правильным, если не так. данные и скрытие информации - способ достижения инкапсуляции - это способ достижения абстракции. Я прав? –

+1

Да - все эти понятия тесно связаны друг с другом в ООП. Инкапсуляция - это все, что скрывает детали программы от вещей, которые не нужно ее видеть. Абстракция связывает общее поведение между связанными объектами. – yamafontes

+0

Вы указали пример абстракции с помощью интерфейса Car.Abstraction скрывает ненужную информацию и показывает важную информацию. Затем мы спрячемся и что мы показываем в приведенном выше примере класса. Вот я немного запутался. –

5

Чтобы уменьшить путаницу:

Инкапсуляция используется для скрытия информации или данных, скрывая

Инкапсуляция означает автономный. Все объекты в Java имеют набор данных и методов для работы с этими данными. Поэтому пользователю любого объекта не нужно беспокоиться о том, как работает объект. Таким образом, вы скрываете информацию и другие сложности.

Пример: Любой объект Java достаточно, чтобы представить пример.

Абстракция: Это означает, что вы делаете вещи вообще, а не создаете очень specfic-класс при создании базовых классов или интерфейсов, а затем расширяете их, чтобы получить свой конкретный класс.

Пример: класс Animal {} класс Lion распространяется Animal {}

Так вот для класса Lion у вас есть обобщенный класс т.е. животное. Это представляет собой абстракцию

Примечание Примеры givien от KepaniHaole являются совершенными.

абстракция Пример:

public interface Animal{ 
    public String getType(); 
} 

class Lion implements Animal { 
    private String animalType = "WILD"; 

    @Override 
    public String getType() { 
     return this.animalType; 
    } 
} 
class Cow implements Animal { 
    private String animalType = "Domestic"; 

    @Override 
    public String getType() { 
     return this.animalType; 
    } 
} 

В этом примере лев и Корова классы реализует интерфейсживотных.Лев и Корова классы overrideGetType метод интерфейса животных.

Здесь Лев и Корова - это особые случаи, а животное более обобщенно. Таким образом, это дает вам абстракцию, потому что всякий раз, когда у вас есть Animal, у вас есть метод getType, чтобы узнать его тип, т. Е. Вы его обобщили.

Теперь, если вы заметите, что я сделал animalType приватными в Lion и Корова классы так, что никто за пределами класса не может изменить его. Таким образом, я скрываю нежелательную информацию от внешних объектов.

Все внешние объекты должны это GetType метод известен в тип животного. Таким образом я подвергаю только относительную информацию внешним объектам.

+0

Пожалуйста, сделайте меня правильным, если я ошибаюсь. данные и скрытие информации - способ достижения инкапсуляции - это способ достижения абстракции. Я прав? –

+1

Я бы сказал другие способы: когда мы делаем инкапсуляцию ... информация и скрытие данных также поступают на картинке. Таким образом, «инкапсуляция» - это способ достичь этого скрытия, а когда вы делаете общее, тогда абстракция приходит в картину. –

+0

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

Смежные вопросы