русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2014-04-25; просмотров: 778; Нарушение авторских прав


 

Инкапсуляция - это механизм, который объединяет данные и код, и защищает и то и другое от внешнего вмешательства или неправильного использования. В ООП код и данные могут быть объединены вместе; в этом случае говорят, что создается так называемый «черный ящик». Все необходимые данные и коды находятся внутри его, то есть создается объект. Другими словами, объект - это то, что поддерживает инкапсуляцию. Внутри объекта коды и данные могут быть закрытыми (private) или открытыми (public). По умолчанию действует принцип private. Закрытые коды или данные недоступны для тех частей программы, которые существуют вне объекта. В случае public коды и данные доступны для всех частей программы. Характерной чертой является ситуация, когда открытая часть объекта используется для того, чтобы обеспечить контролируемый интерфейс с его закрытой частью. Рассмотрим такое важное понятие как класс.

Класс - это механизм для создания объектов. Синтаксис описания класса на С++ похож на синтаксис описания структуры.

 

class имя класса {

закрытые функции и переменные класса

public:

открытые функции и переменные класса

} список объектов;

 

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

 

Пример. В качестве простого примера рассмотрим программу, в которой используется myclass, описанный в тексте для задания значения a для объектов ob1и ob2 и вывода на экран этих значений для каждого объекта:

# include <iostream.h>



class myclass {

int a; // закрыто вне myclass

public:

void set_a(int num); // член -функция

int get_a(); // член - функция

};

void myclass:: set_a(int num)

{

a = num;

}

int myclass:: get_a()

{

return a;

}

main()

{

myclass ob1,ob2;

ob1.set_a(10);

ob2.set_a(99);

cout << ob1.get_a() <<’’\n’’;

cout << ob2.get_a() <<’’\n’’;

return 0;

}

Как и следовало ожидать, программа выводит на экран величины 10 и 99. Переменная a в myclass является закрытой. Это означает, что она доступна только для функций членов myclass. Например, такое обращение вызовет ошибку

 

# include <iostream.h>

class myclass {

int a; // закрыто для myclass

public:

void set_a(int num);

int get_a();

};

main()

{

myclass ob1,ob2;

ob1.a=10; // ОШИБКА! К закрытому члену нет доступа

ob2.a=99; // ОШИБКА! К закрытому члену нет доступа

cout << ob1.get_a() <<’’\n’’;

cout << ob2.get_a() <<’’\n’’;

return 0;

}

Пример. Рассмотрим использование открытых переменных

 

# include < iostream.h>

class myclass {

public:

int a; // теперь а открыта и не нужны set_a() и get_a()

};

main()

{

myclass ob1,ob2;

ob1.a = 10;

ob2.a = 99;

cout << ob1.a << ‘’\n’’;

cout << ob2.a <<’’\n’’;

return 0;

}

Рассмотрим пример, в котором создается класс - stack, реализующий стек, использующийся для хранения символов:

 

# include <iostream.h>

# define SIZE 10

class stack {

char stck[SIZE]; // содержит стек

int tos; // индекс вершины стека

public:

void init(); // инициализация стека

void push(char ch); // помещает в стек символ

char pop(); // выталкивает из стека символ

};

void stack::init() // инициализация стека

{

tos=0;

}

void stack::push(char ch) // помещение символа в стек

{

if ( tos==SIZE) {

cout << ‘’Стек полон’’;

return;

}

stck[tos] = ch;

tos++;

}

char stack :: pop() // выталкивание символа из стека

{

if(tos==0) {

cout <<’’Стек пуст’’;

return 0; // Возврат нуля при пустом стеке

}

tos--;

return stck[tos];

}

main()

{

stack s1,s2; // создание двух стеков

int i;

s1.init(); // инициализация стека

s2.init();

s1.push(‘a’); // заполнение стека

s2.push(‘x’);

s1.push(‘b’);

s2.push(‘y’);

for(i=0;i<2;i++) cout <<’’символ из s1:’’<<s1.pop() <<’’\n’’; // выталкивание из стека

for(i=0;i<2;i++) cout <<’’символ из s2:’’<<s2.pop() <<’’\n’’;

return 0;

}

Эта программа выводит на экран следующее:

символ из s1: b

символ из s1: a

символ из s2: y

символ из s2: x.



<== предыдущая лекция | следующая лекция ==>
Введение в объектно-ориентированное программирование | Полиморфизм


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.699 сек.