Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 19
На сайте нет зарегистрированных пользователей

Пользователей: 13,361
новичок: uehuat
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Обучающая и тестирующая программа по здаче экзамена ПДД на Turbo Pascal ...
Программа тестирования и обучающая программа по математике на Turbo Pasc...
Информационная система - продуктовый магазин на Turbo Pascal (База данны...

Лабораторное занятие №1. Класс в С++
Класс является фундаментальным понятием объектно-ориентированного
программирования. Являясь расширением понятия структуры, он позволяет
создавать типы данных и определять функции (методы), которые задают
поведение этого типа. Например, класс «точка» обладает координатами x, y и
функцией Move (переместить), которая изменяет координаты точки. Каждый
представитель (экземпляр) класса называется объектом.

Определение класса
Определение класса напоминает определение структуры в С, за исключением
того, что:
• Содержит одну или несколько спецификаций доступа, задаваемых с
помощью ключевых слов public, protected и private;
• Вместо ключевого слова struct применяется ключевое слово class;
• Включает в себя функции (методы) наряду с элементами данных;
• Обычно имеются специальные функции, такие, как конструктор (функция с
именем, что и сам класс) и деструктор (функция, именем которой является
сам класс с префиксом-тильдой (~)).
Управление доступом
В языке С элементы структуры доступны для любой функции в пределах
области действия структуры, что часто приводит к неверным изменениям
данных внутри структуры из-за невнимательности (нарушается принцип
инкапсуляции). В С++ можно ограничить доступ к данным и методам
(функциям класса) при помощи спецификаторов доступа: private, protected,
public. Метка-спецификатор действует на все следующие за ней объявления,
пока не встретится следующая метка или кончится определение класса.
Таблица 1
Лабораторное занятие №1. Класс в С++
Задание №1
Объявить класс «Прямоугольник», заданный четырьмя координатами.
Предусмотреть метод изменения размеров и функцию вычисления площади
прямоугольника.

Элементы класса
Элементы класса делятся на две основные категории:
• Элементы данных (иногда называемые членами класса);
• Элементы-функции (иногда называемые методами или функциями-членами
класса);
Элементы данных.
Элементы-данные похожи на элементы структур языка с некоторыми
дополнениями.
• Элементы-данные не могут определяться как auto, extern или register.
5 Объектно-ориентированное программирование на С++.
• Элементами данных могут быть перечислимые типы, битовые поля или
представители ранее объявленных классов.
• Элементом данных не может быть представитель самого этого класса.
• Элементом данных класса может являться указатель или ссылка на
представитель этого класса.
Пример №2
class A
{
int aa;
int bb;
void C();
};

class B
{
register int a; // Ошибка! Объявлено как register.
int aa; // OK. Объявление скалярного типа.
unsigned ui[10]; // OK. Объявление массива.
B b; // Ошибка! Представитель самого класса B.
B* pb; // ОК. Указатель на класс B.
A a; // OK. Класс A объявлен.
A* pa; // OK. Указатель на класс А.
};




Задание №2
Определить класс «точка» (см. Пример №1). Переработать ранее
определённый класс «прямоугольник», где элементами данных «координаты»
являются представители класса «точка». Применить различные
спецификаторы доступа (private, protected, public) для защиты данных класса.

Элементы-функции
Элемент-функция является функцией, объявленной (описанной) внутри
определения класса. Тело функции может определяться внутри определения
класса; в этом случае функция называется встроенной (inline). Когда тело
функции определяется вне класса, перед именем функции ставится префикс из
имени класса и операции разрешения видимости (::).

Общий формат:
[<возвращаемое значение>] [<спецификаторы функции>]
<Класс>::<функция>([<параметры>])
6 Объектно-ориентированное программирование на С++.


Пример №3
В примере функция Move реализована как встроенная.

class Point // class Point (точка)
{
private:
int x;
int y;
public:
void Move ( int newX, int newY)
{
x = newX;
y = newY;
return;
}
};

























Пример №4
В примере функция Move реализована вне класса Point

class Point // class Point (точка)
{
private:
int x;
int y;
public:
void Move ( int newX, int newY);
};
void Point::Move ( int newX, int newY)
{
x = newX;
y = newY;
return;
}

























Задание №3
В ранее определённом классе «Прямоугольник» реализовать метод изменения
размеров фигуры как встроенный. Реализовать метод вычисления площади
фигуры вне тела класса.
7 Объектно-ориентированное программирование на С++.
Доступ к элементамданных
Функции-элементы находятся в области действия класса, котором они
определены. Обычные функции или методы другого класса могут получить
доступ к элементам данных и к методам с помощью операции . или –>,
применяемых соответственно к представителю или указателю на представитель
класса.













Пример №4
class Point
{
public:
int x;
int y;
void Move(int newX, int newY);
};





























Примера №4 (продолжение)
int main()
{
Point pt; // Создать локальный объект
Point * ppt = new Point; // создать указатель на объект.

// работа с локальным объектом
pt.x = 0;
pt.y = 10;
pt.Move(0, 10);

// работа с указателем на объект
ppt->Move(10, 20);
ppt->x = 10;
ppt->y = 20;

delete ppt; // Удалить объект
return 0;
}








8
Помните, что если Вы создаёте локальный объект, он будет
автоматический разрушен при выходе из подпрограммы, где он создан.
Динамически создаваемые объекты не разрушаются до тех пор, пока Вы
сами их не удалите посредством оператора delete. Объектно-ориентированное программирование на С++.



Задание №4
Создать локальный объект класса «Прямоугольник», ранее определённого.
Задать его координаты и вывести на печать площадь фигуры.

Задание №5
Динамически создать объект класса «Прямоугольник», ранее определённого.
Задать его координаты и вывести на печать площадь фигуры.
Опубликовал Kest February 24 2014 17:21:47 · 0 Комментариев · 4559 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Calendar
3D Тетрис [Исходн...
Swat [Исходник на...
Assembler. Практикум
oTextrackBar
Encrypt Decrypt
Text3D
PolyFlow
Х. М. Дейтел, П. ...
Защита от спама ...
Панель "ссылки"
Java Server Pages...
Flud Vkontakte.ru
Самоучитель PHP 4
Tetris 2002
MiniTetris [Исход...
AddPage [Исходник...
Java в примерах -...
Упорядоченный дин...
Delphi 6 программ...

Топ загрузок
Приложение Клие... 100772
Delphi 7 Enterp... 97809
Converter AMR<-... 20260
GPSS World Stud... 17014
Borland C++Buil... 14189
Borland Delphi ... 10267
Turbo Pascal fo... 7372
Калькулятор [Ис... 5972
Visual Studio 2... 5206
Microsoft SQL S... 3661
Случайные статьи
14.2. Две важные ф...
Топологические фигуры
Вы можете сразу от...
Протокол Telnet
11.3. Улучшенные б...
юридического отдел...
Как узнать какой D...
Онлайн игры казино...
Операционная систе...
Получи www.anythin...
Выделение структур...
Денежные слоты
Как заработать и р...
call(X)
Обсуждение итогов
Прямые методы сорт...
Audit directory se...
Решения к главе 6
Узлы XPath
Понятие "область п...
Форма Flat - работ...
Итоги
Более того, для ко...
Применение исключений
Как правильно выбр...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?