Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Инкапсуляция автоматически подразумевает защиту данных.




Для этого в структуре class используется спецификатор раздела private, содержащий данные и методы, доступные только для самого класса.

Если данные и методы содержатся в разделе public, они доступны извне класса. Раздел protected содержит данные и методы, доступные из класса и любого его производного класса. Наличие последних позволяет говорить об иерархии классов, где есть классы - родители - шаблоны для создания классов - потомков. Объекты, полученные из описания класса, называют экземплярами этого класса.

Принадлежащие классу функции называют МЕТОДАМИ класса (компоненты функции).

Они позволяют обрабатывать данные класса. Описание метода внутри объектов только указывает действия, но не определяет, каким образом они будут выполнены.

Базовое понятие ООП - инкапсуляция. Подразумевает объединение вместе данных и методов по обработке этих данных внутри классов.

Отличие методов от подпрограмм состоит в том, что Метод описывается внутри класса, может наследоваться, может быть виртуальным, а так же синтаксис:

#include <iostream.h>
#include <string.h>
class Book {
public:
Book(char *title) { strcpy(Book::title,title);};
void show book(void) { cout " title; );
private:
char title[64] ;
};
class Reader { public:
Reader(char *name) { strcpy(Reader::name, name);};
void show reader(class Book book) .{
cout <<"Читатель: "<< name<<" "<<"Книга: ";
book.show book () ;
private:
char name[64] ;
};
void main(void)
{ Reader reader("Kris Jamsa") ;
Book favorite book("Compiler Internals");
reader.show reader(favorite book);

Reader использовал метод show book объекта Book для вывода заголовка книги. Единственный способ для объекта Reader получить доступ к приватным переменным объекта типа Book, был реализован посредством метода show book.

2. Объявление классов и создание объектов.

Создание классов:

Класс объявляется с помощью ключевого слова class, за которым указывается имя класса. Затем в фигурных скобках перечисляются члены класса. Синтаксис объявления класса похож на синтаксис объявления структуры. Рассмотрим пример объявления.

Пример 1.

#include <iostream.h>

class myclass // класс под именем myclass

{ int a; // закрытая переменная

public:// ключевое слово (для открытых членов)

void set_a(int n); // функции – открытые члены класса -

int get_a();// для доступа к закрытой переменной

};

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

Функции set_a() и get_a()внутри класса только объявлены, но еще не определены (не описаны). Эти функции, являясь открытыми членами класса, должны обеспечивать доступ к закрытым членам. Доступ к закрытой переменной предполагает две операции:

· присваивание переменной определенного значения;

· получение значения переменной.

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

void myclass::set_a(int n)

{ a=n; }

int myclass::get_a()

{ return a; }

Для обозначения принадлежности функции к классу достаточно лишь перед её именем указать имя класса и два двоеточия, которые называются оператором расширения области видимости.

Функция set_a() предназначена для присваивания целочисленных значений закрытой переменной а. Поэтому она имеет один параметр, через который и передаются эти значения; функция, в свою очередь, ничего не возвращает. Вторая функция - get_a() – служит для получения значения закрытой переменной. Поэтому она имеет возвращаемое значение, но при её вызове аргументы ей не передаются.

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


Поделиться:

Дата добавления: 2015-01-19; просмотров: 59; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты