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

Структуры и классы. Структура как простейший класс

Читайте также:
  1. B) социально-стратификационная структура
  2. II. Типичные структуры и границы
  3. III. Анализ результатов психологического анализа 1 и 2 периодов деятельности привел к следующему пониманию обобщенной структуры состояния психологической готовности.
  4. III. СТРУКТУРА И ОРГАНЫ УПРАВЛЕНИЯ ПРИХОДА
  5. IV класс.
  6. VI. Рыночный механизм. Структура рынка. Типы конкурентных рынков
  7. VIII. Формирование и структура характера
  8. А. Лінійна організаційна структура
  9. Абсолютные и относительные показатели изменения структуры
  10. Абсолютные и относительные показатели изменения структуры
  11. Абстрактные классы и чистые виртуальные функции. Виртуальные деструкторы. Дружественные функции. Дружественные классы.
  12. Абстрактные структуры данных

Структура является объединением простых переменных. Эти переменные могут иметь различные типы: int, float и т. д. Переменные, входящие в состав структуры, называются полями структуры.

Синтаксис структуры фактически идентичен синтаксису класса. На практике отличие структуры от класса заключается в следующем: структуры, как правило, используются в качестве объединения данных, а классы — в качестве объединения данных и функций.

Определение структуры начинается с ключевого слова struct. Затем следует имя
структуры, в данном случае этим именем является part. Объявления полей структуры modelnumber, partnumber и cost заключены в фигурные скобки. После закрывающей фигурной скобки следует точка с запятой (;) — символ, означающий конец определения структуры.

 

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

 

19. Простой класс С++. Определение класса. Использование класса. Классы и объекты.

class smallobj // определение класса

{

private:

int somedata; // поле класса

public:

void setdata(int d) // метод класса, изменяющий значение поля

{ somedata =d; }

void showdata() // метод класса, отображающий значение поля

{ cout << "Значение поля равно " << somedata << endl;}

};

Определение начинается с ключевого слова class, за которым следует имя класса; в данном случае этим именем является smallobj. Подобно структуре, тело класса заключено в фигурные скобки, после которых следует точка с запятой (;). Конструкции, связанные с типами данных, такие, как структуры и классы, требуют после своего тела наличия точки с запятой, в отличие от конструкций, связанных с передачей управления, например функций и циклов.

 

Private и public

Ключевой особенностью объектно-ориентированного программирования является возможность сокрытия данных. Этот термин понимается в том смысле, что данные заключены внутри класса и защищены от несанкционированного доступа функций, расположенных вне класса. Если необходимо защитить какие-либо данные, то их помещают внутрь класса с ключевым словом private. Такие данные доступны только внутри класса. Данные, описанные с ключевым словом public, напротив, доступны за пределами класса.

 

Объект является экземпляром класса. Класс smallobj определяется в начале программы. Позже, в функции main(), мы определяем два объекта s1 и s2, являющихся экземплярами класса smallobj:

smallobj s1, s2; // определение объектов класса smallobj

s1.setdata(1066); // вызовы метода setdata()

s2.setdata(1776);

s1.showdata(); // вызовы метода showdata()

s2.showdata();

 

20. Простой класс С++. Синтаксис и правила описания классов в С++. Вызов методов класса.

class smallobj // определение класса

{

private:

int somedata; // поле класса

public:

void setdata(int d) // метод класса, изменяющий значение поля

{ somedata =d; }

void showdata() // метод класса, отображающий значение поля

{ cout << "Значение поля равно " << somedata << endl;}

};

Определение начинается с ключевого слова class, за которым следует имя класса; в данном случае этим именем является smallobj. Подобно структуре, тело класса заключено в фигурные скобки, после которых следует точка с запятой (;). Конструкции, связанные с типами данных, такие, как структуры и классы, требуют после своего тела наличия точки с запятой, в отличие от конструкций, связанных с передачей управления, например функций и циклов.

Private и public

Ключевой особенностью объектно-ориентированного программирования является возможность сокрытия данных. Этот термин понимается в том смысле, что данные заключены внутри класса и защищены от несанкционированного доступа функций, расположенных вне класса. Если необходимо защитить какие-либо данные, то их помещают внутрь класса с ключевым словом private. Такие данные доступны только внутри класса. Данные, описанные с ключевым словом public, напротив, доступны за пределами класса.

 

Объект является экземпляром класса. Класс smallobj определяется в начале программы. Позже, в функции main(), мы определяем два объекта s1 и s2, являющихся экземплярами класса smallobj:

smallobj s1, s2; // определение объектов класса smallobj

s1.setdata(1066); // вызовы метода setdata()

s2.setdata(1776);

s1.showdata(); // вызовы метода showdata()

s2.showdata();

 

 

21. Классы С++. Сокрытие данных и доступность методов (спецификаторы доступа private и public).

Ключевой особенностью объектно-ориентированного программирования является возможность сокрытия данных. Этот термин понимается в том смысле, что данные заключены внутри класса и защищены от несанкционированного доступа функций, расположенных вне класса. Если необходимо защитить какие-либо данные, то их помещают внутрь класса с ключевым словом private. Такие данные доступны только внутри класса. Данные, описанные с ключевым словом public, напротив, доступны за пределами класса.

Сокрытие данных в нашем толковании означает ограждение данных от тех частей программы, которые не имеют необходимости использовать эти данные.

В более узком смысле это означает сокрытие данных одного класса от другого класса. Сокрытие данных позволяет уберечь опытных программистов от своих собственных ошибок. Программисты могут сами создать средства доступа к закрытым данным, что значительно снижает вероятность случайного или некорректного доступа к ним.

 

22. Классы С++. Определение методов класса вне класса. Объекты программы и объекты реального мира. Класс как тип данных.

class smallobj // определение класса

{

private:

int somedata; // поле класса

public:

void setdata(int d) // метод класса, изменяющий значение поля

{ somedata =d; }

void showdata() // метод класса, отображающий значение поля

{ cout << "Значение поля равно " << somedata << endl;}

};

Методы класса — это функции, входящие в состав класса. Класс smallobj содержит два метода: setdata() и showdata(). Тела обоих методов состоят из одного оператора, который записан на одной строке с фигурными скобками, ограничивающими тело функции.

Поскольку методы setdata() и showdata() описаны с ключевым словом public,
они доступны за пределами класса smallobj.

 

Определение методов класса вне класса

До сих пор мы всегда определяли методы класса внутри самого класса. На самом деле это не является обязательным. В примере ENGLCON метод add_dist() определен вне класса Distance(). Внутри определения класса содержится лишь прототип функции add_dist();

void add_dist(Distance, Distance);

Такая форма означает, что функция является методом класса, однако ее определение следует искать не внутри определения класса, а где-то в другом месте листинга.

В примере ENGLCON функция add_dist() определена позже, чем класс Distance():

void Distance::add_dist (Distance dd1, Distance dd2)

{

inches = dd1.inches + dd2.inches; // сложение дюймов

feet = 0; // с возможным заемом

if(inches >= 12.0) // если число дюймов больше 12.0,

{ // то уменьшаем число дюймов

inches -= 12.0; // на 12.0 и увеличиваем

feet++; // число футов на 1

}

feet += dd1.feet + dd2.feet; // сложение футов

}

Заголовок функции содержит не встречавшиеся нам ранее синтаксические элементы. Перед именем функции add_dist() стоит имя класса Distance и новый символ::. Этот символ является знаком операции глобального разрешения. Такая

форма записи устанавливает взаимосвязь функции и класса, к которой относится эта функция. В данном случае запись Distance::add_dist() означает, что функция add_dist() является методом класса Distance:

void Distance::add_dist(Distance dd1, Distance dd2)

 

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

 


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 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)