Форум программистов, компьютерный форум CyberForum.ru

Что такое инкапсуляция? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
ник нэйм
3 / 3 / 1
Регистрация: 10.11.2013
Сообщений: 174
03.06.2014, 18:59     Что такое инкапсуляция? #1
объясните пожалуйста что такое инкапсуляция и на примерах!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 18:59     Что такое инкапсуляция?
Посмотрите здесь:

что такое Void C++
что такое полиморфизм C++
Что такое 15 - (15/4) *4 ? C++
что такое hex C++
C++ что такое for(;;)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Riddleman
1 / 1 / 4
Регистрация: 03.03.2013
Сообщений: 49
03.06.2014, 19:20     Что такое инкапсуляция? #2
Речь идет о том, что объект содержит не только данные, но и правила их обработки, оформленные в виде исполняемых фрагментов (методов). Например, атомобиль. Ты залил в него топливо, масло, тормозную жыдкость (это всё данные). Садишься ехать(это уже метод обработки даних - бензина в тяговую силу), и тебя не волнует как там этот бензин горит, каким образом крутящий момент передается на колеса. Дал данные, вызвал метод, получил результат; Залил топливо, завел двигатель, поехал. И вообще ГУГЛ для кого существует??? Просто я сегодня в хорошом настраении .
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
04.06.2014, 06:10     Что такое инкапсуляция? #3
Если короче, то инкапсуляция - это сокрытие сложности внутри объекта, что позволяет пользователю работать со сложным объектом как с простым.
camanch1
 Аватар для camanch1
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 44
31.10.2014, 23:32     Что такое инкапсуляция? #4
я тоже в поиске хоть какого-то примера,но почему-то и в Гугле и других системах все только рассказывается про сокрытие и т.д., примеры может кто нибудь написать или это копец! как сложно???
MickeyBlueEyes
Студент
 Аватар для MickeyBlueEyes
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
31.10.2014, 23:55     Что такое инкапсуляция? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
class SomeClass 
{
  public:
    bool set_id(int);
    int get_id() const;
 
  private:
    int id_;
 
  private:
    bool IsValidId(int) const;
};
Вот например метод IsValidId инкапсулирован и вызываеться только внутри метода SetId для проверки корректности перед тем как присвоить его себе. Собсно вы не имеете доступа к этому методу, а вызвать токо можно внутри класса, вот пример инкапсуляции, так может быть с чем угодно.
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
01.11.2014, 00:27     Что такое инкапсуляция? #6
Цитата Сообщение от camanch1 Посмотреть сообщение
примеры может кто нибудь написать или это копец!
Ну, телевизор например. Это сложное электронное устройство, но вся его сложность инкупсулирована внутри, и для того чтобы им управлять совершенно не нужно знать физику и разбираться в работе микросхем, и даже подходить к нему не надо - он управляется с помощью простого интерфейса - путем нажатия кнопок на пульте.
camanch1
 Аватар для camanch1
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 44
01.11.2014, 00:28     Что такое инкапсуляция? #7
Я так понимаю IsValidId инкапсулирован командой "private:" а дальше с SetId не совсем понял...
Вообще я искал инкапсуляцию в C#,но т.к. это родственники,то думаю с моим примером не будет сложности:
int[] a = new int[5];
a[0] = 0; a[1] = 2; a[2] = 4; a[3] = 6; a[4] = 8;
Console.Write("Вывод компонентов массива: ");
for (int i = 0; i < a.Length; i++) { Console.Write(a[i]); }
КАК мне инкапсулировать этот дурацкий массив и как это должно выгледить,для меня это дремучий лес... плакать и смеяться охото одновременно...
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
01.11.2014, 00:32     Что такое инкапсуляция? #8
Хотя иногда эта инкапсуляция и боком выходит. Я слышал историю, как один товарищ не стал снимать с монитора пленочную упаковку - так ему красивше показалось, а монитор возьми да и сгори. Так что немного фиськи знать надо все же.
camanch1
 Аватар для camanch1
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 44
01.11.2014, 00:36     Что такое инкапсуляция? #9
хорошо...это все понятно...я хочу инкапсулировать массив,что для этого необходимо,я это просто не могу представить,как индейцы майя,не видели плывущего коробля перед носом,так как они не знали что это такое,понимаете о чем я
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
01.11.2014, 00:48     Что такое инкапсуляция? #10
Цитата Сообщение от camanch1 Посмотреть сообщение
я хочу инкапсулировать массив,что для этого необходимо
Класс - это абстрактный тип данных, т.е. инкапсуляция всегда применяется для реализации некоей абстракции, например стек инкапсулирует контейнер с целью реализации абстракции стека. Определитесь сначала какую абстракцию вы хотите реализовать вашей инкапсуляцией.
camanch1
 Аватар для camanch1
0 / 0 / 0
Регистрация: 02.10.2014
Сообщений: 44
01.11.2014, 01:02     Что такое инкапсуляция? #11
Если вы говорите о модификаторе то: public class Vektor, дальше не знаю какие должны быть поля и что еще должно быть чтобы вызвать "что-то" что бы это все работало и мог использовать другой к примеру программист,как DLL...что я тут написал сам не понял...
MickeyBlueEyes
Студент
 Аватар для MickeyBlueEyes
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
01.11.2014, 10:57     Что такое инкапсуляция? #12
Опечатка:
SetId
так:
C++
1
bool set_id(int);
Тута я имел ввиду что происходит проверка, если вас это ввело в заблуждения.
Black Fregat
 Аватар для Black Fregat
1353 / 983 / 215
Регистрация: 31.05.2009
Сообщений: 4,093
01.11.2014, 18:33     Что такое инкапсуляция? #13
camanch1, если нужно "инкапсулировать массив", то, скорее всего, это означае следующее:
1) Должен быть создан класс, внутри которого содержится этот самый массив.
2) Должны быть предусмотрены методы класса, обеспечивающие заполнение и обработку этого массива.
Например:
- заполнение массива случайными значениями
- сортировка массива
- выдача массива на печать
3) Основная программа должна обращаться к массиву только через эти методы
Sasha Pr
2 / 2 / 1
Регистрация: 01.11.2014
Сообщений: 18
01.11.2014, 20:29     Что такое инкапсуляция? #14
Инкапсуляция это механизм скрытия данных. Но не только. Это ещё когда данные (свойства) и функции (методы), которые обрабатывают их, объединены в общей оболочке. Например в классе.
Но главное это скрытие информации. Управлять изменением данных можно с помощью модификаторов доступа: public, private и protected.
Пока что я себе это так представляю, например, есть класс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
using namespace std;
 
class human
{
    // свойства (переменные) класса
public:
    int age;
private: // доступ открыт самому классу (т.е. функциям-членам данного класса) и друзьям (friend) данного класса, как функциям, так и классам
    int weight;
protected: // доступ открыт классам, производным от данного
    int height;
 
    // методы (функции) класса
public: // ко всем функциям, в public зоне, можно получить доступ из любой части программы
    void set_weight(int a)
    {
        weight = a;
    }
 
    void get_weight()
    {
        cout << weight << endl;
    }
 
    void set_height(int b)
    {
        height = b;
    }
 
    void get_height()
    {
        cout << height << endl;
    }
};
 
int main(){
 
    human Sonia;
 
    Sonia.age = 30;
    cout << Sonia.age << endl;
    //Sonia.weight = 60; // так не получается задать значение этому полю, потому что оно в прайвейт области private
    //Sonia.height = 179; // и этому так же, потому что оно в protected области
 
    // но с помощью функций, которые расположены в public области, можно работать со свойствами класса, которые в private и protected.
    // вот так:
    Sonia.set_weight(50); // задаём вес
    Sonia.get_weight(); // выводим вес
    Sonia.set_height(168); // устанавливаем рост
    Sonia.get_height(); // получаем рост    
 
    system("pause > nul");
    return 0;
}
Добавлено через 11 минут
Короче, инкапсуляция это скрытие (управление доступом) информации с помощью модификаторов доступа + объединение данных и функций в общей оболочке.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2014, 21:00     Что такое инкапсуляция?
Еще ссылки по теме:

C++ Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала
C++ Что такое С++ ?
Что такое конструктор? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
01.11.2014, 21:00     Что такое инкапсуляция? #15
Не понятно почему, исчезла кнопка "Лучший ответ", но вообщем пост ниже описывает всю суть.
Цитата Сообщение от Mr.X Посмотреть сообщение
Если короче, то инкапсуляция - это сокрытие сложности внутри объекта, что позволяет пользователю работать со сложным объектом как с простым.
Сразу видно, кто "Совершенный код" читал.
Yandex
Объявления
01.11.2014, 21:00     Что такое инкапсуляция?
Ответ Создать тему
Опции темы

Текущее время: 02:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru