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

Инкапсуляция. классы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Необычная ошибка в классе http://www.cyberforum.ru/cpp-beginners/thread989612.html
class cPolygon { public: cPolygon() : head_(0) {}; void add_dott(POINT); void Draw(TForm1*); int GetDottNum(void) ...
C++ код нужно сделать через указатель ! # include <iostream.h> # include <conio.h> # include <stdlib.h> const int n=3, m=3; int main() {int a; int i, j, maxzn; cout<<"vvedite matricu \n"; for (i=0; i<n; i++) for (j=0; j<m; j++) http://www.cyberforum.ru/cpp-beginners/thread989609.html
C++ Класс Point и Rectangle
*.h : class Point { public: Point(int m_x1, int m_y1); ~Point(); void InputPoint(int m_x1, int m_y1); private: int m_x;
C++ Рекурсивные функции
Плиз, помогите. Ошибку выдает, а исправить как - непонятно... Пока не очень понимаю рекурсивные функции... Составить программу, используя рекурсивную функцию. Массив S содержит 10 символов. Дана...
C++ как переделать задачу что б были указатели ? http://www.cyberforum.ru/cpp-beginners/thread989583.html
#include <iostream.h> #include <conio.h> #include <math.h> int main () { int a , d, b; cout<<"vvedite elementu matricu"<<endl; for (int i=0; i<6; i++) for (int j=0; j<6; j++)...
C++ Error with multimap Вот код. struct sravn{ bool operator()(const char* s1, const char* s2) const{ return strcmp(s1, s2) < 0; } }; typedef multimap<char*, Student, sravn> MapType; void del_stud(MapType... подробнее

Показать сообщение отдельно
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
27.10.2013, 17:54
vovkasm,
Надо вспомнить немного истории...
Сразу программы писали одним "стогом" подряд и запускали на выполнение.
Позже такой подход стал несколько неудобным и была сформулирована процедурная парадигма программирования - "Обертывайте все инструкции в функции, используйте наилучшие известные алгоритмы".
Но вот ведь незадача - эти функции должны манипулировать какими-то данными, а эти данные приходилось делать глобальными и общими. Теперь каждая функция, дергала эти данные, изменяя их по своему хотению, что выливалось потом в мучительные часы отладки и ловли ошибок.
С появлением языка Си и ключевого слова static появилась некоторая пародия на инкапсуляцию. Но это другая тема, продолжим повествование на примере С++.

Итак, описав класс, мы можем создать сущность (объект) этого класса. В его приватном поле располагаются некоторые данные и они недоступны остальной программе, кроме внутренних функций-членов этого объекта.
Теперь все функции не смогут "дергать" эти данные, пока мы им не разрешим. В идеале, разрешать не рекомендуется) Программа может послать запрос (сигнал) нашему объекту "можно я посмотрю, что у тебя хранится в этом поле?" и объект сам решает (исходя из наличия у него в открытом интерфейсе функций доступа) давать программе эти данные или не давать.
В итоге вся программа (ну почти) состоит из изолированных объектов, которые инкапсулируют (скрывают) у себя данные, ну и заодно функции, которые эти данные меняют.
Ну как-то так упрощенно...
А вообще читай книжки - там это последовательно изложено и разжевано.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru