У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 7 элементы объектноориентированного программирования Цель работы- приобрести н

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.12.2024

Лабораторная работа № 7

элементы объектно-ориентированного программирования

Цель работы: приобрести навыки создания собственных классов и познакомиться с основными идеями объектно-ориентированного программирования.

Основы теории

1 Создание класса

В предыдущих лабораторных работах были рассмотрены и изучены основные принципы структурного программирования на языке С. Основным отличием языка С от С++ является наличие в нем средств объектно-ориентированного программирования.

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

Класс – это структурированный тип, включающий в себя в качестве элементов типизированные данные (параметры) и функции, применяемые по отношению к этим данным.

В простейшем случае объявление класса имеет формат:

class имя

{

Закрытые данные и функции

public:

Открытые данные и функции

};

Public – это режим доступа. Элементы с режимом Public, доступны в других частях программы.

В объявлении класса заложен принцип инкапсуляции – объединения данных и функций.

Пример 1 Объявление класса

class circle

{

public:

// Объявление функций – членов класса

double l(float);

double s(float);

};

Задание 1

Определите имя класса примера 1. Какие функции объявлены?

Пример 2 Доступ к членам класса

#include "stdafx.h"

#include<iostream>

#include<conio.h>

#include<math.h>

#define pi 3.14

using namespace std;

// Объявление класса circle (окружность)

class circle

{

public:

 double l(float);

 double s(float);

};

// Описание функций – членов класса

// Описание функции l от одной переменной(длины окружности от радиуса)

double circle::l(float r)

{

 return 2*pi*r;

}

// Описание функции s от одной переменной (площади окружности от радиуса)

double circle::s(float r)

{

 return pi*r*r;

}

// Основная программа

int main(array<System::String ^> ^args)

{

// Объявление объекта С – экземпляра класса circle

circle C;

float R;

cout << "Введите значение радиуса окружности R=";

cin>>R;

cout << "Длина окружности равна L=" << C.l(R);

getch();

return 0;

}

Функции, заявленные в классе (l и s) должны быть описаны. Описание функций производится отдельно, после объявления класса. При этом необходимо указать, к какому классу принадлежит данная функция. Для этого к имени функции через двойное двоеточие :: добавляется имя класса, например circle::l и circle::s.

Двойное двоеточие:: – это оператор разрешения области видимости, который квалифицирует имя члена (функции) вместе с именем его класса. Оператор заявляет о том, что функция l принадлежит классу circle. Т.о., различные классы могут использовать одинаковые имена функций благодаря оператору разрешения области видимости.

Чтобы вызвать функцию из части программы, которая находится вне класса, необходимо использовать имя объекта и оператор «точка». Например, в основной программе примера 2 C.l(R)вызывает функцию поиска длины окружности l для окружности C с фактическим значением радиуса R. Вызов C.l(R)возможен, т.к. функция l()в классе circle объявлена как открытая (public).

Задание 2

Выполните тестирование программы примера 2. Добавьте вызов функции s()для объекта С.

2 Полиморфизм

Полиморфизм (с греч. многообразие форм, poly – много, morphos – форма) можно определить как свойство, позволяющее использовать одно имя для обозначения действий, общих для родственных классов. При этом конкретизация выполняемых действий осуществляется в зависимости от типа обрабатываемых данных.

В С++ полиморфизм реализован через механизм перегрузки (функций и операций), виртуальные функции и шаблоны.

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

Пример 3 Перегрузка функций

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

#include "stdafx.h"

#include<iostream>

#include<conio.h>

#include<math.h>

#define pi 3.14

using namespace std;

class circle

{

public:

 double l(float);

 double l(float, float); // Объявление функции l от двух переменных

 double s(float);

};

// Описание функций – членов класса

// Описание функции l от одной переменной(длины окружности от радиуса)

double circle::l(float r)

{

 return 2*pi*r;

}

// Описание второй функции l от двух переменных (длины дуги от радиуса окружности и угла сектора)

double circle::l(float r, float a)

{

 return pi*r*a/180;

}

// Описание функции s от одной переменной (площади окружности от радиуса)

double circle::s(float r)

{

 return pi*r*r;

}

// Основная программа

int main(array<System::String ^> ^args)

{

circle C;

 float R,A;

cout << "Введите значение радиуса окружности R=";

cin>>R;

cout << "Введите значение угла в градусах А=";

cin>>A;

cout << "Длина окружности равна L=" << C.l(R)<< "\n";

cout << "Длина дуги равна L=" << C.l(R, A);

getch();

 return 0;

}

Задание 3

Выполните перегрузку функции , добавив соответствующие строки к программе примера 2. Выполните перегрузку функции circle::s, вычислив площадь сектора:.

3. Оборудование

ПЭВМ IBM PC, SVGA монитор с разрешением не менее 800*600 пикселей, клавиатура, мышь, среда Visual Studio C++.

4. Задание на работу

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

5. Программа работы

5.1 Составить программы для каждого из заданий, сформулированных в теоретическом материале.

5.2 Отладить программы в среде Visual Studio C++.

5.3 Составить алгоритм для индивидуального задания

5.4 Написать программу для реализации индивидуального задания

5.5 Отладить программу на контрольном примере

5.6. Оформить отчет

6. Контрольные вопросы

Дайте определение понятию «класс».

Укажите формат описания класса.

Какова цель инкапсуляции?

Что такое метод?

Назовите статусы доступа к компонентам класса.

Задания к лабораторной работе №7

Решите задание к лабораторной  работе №6 с использованием классов.




1. Нижний Тагил Отчет о преддипломной практике Факультет- Ф
2. з курсу Нові інформаційні технології Історичний розвиток обчислювальної техніки Інформаційн
3. Лабораторная работа 9 Тема- Поиск альтернативных программ для оценки бизнес ~ предложений
4. реферат дисертації на здобуття наукового ступеня кандидата наук з фізичного виховання і спорту
5. КОНТРОЛЬНАЯ РАБОТА ПО КУЛЬТУРЕ РЕЧИ ВАРИАНТ 1 Нормы 1
6. Философия Гегеля основные принципы
7. .КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ Задержки движения в реальных условиях движения можно раздели
8. Цензура в Англии после буржуазной революции 17 века
9. за их близости к винту
10. разрядного числа
11. ЗБІРНИК НАУКОВИХ ПРАЦЬТеорія літератури та порівняльне літературознавство ЗМІСТ ЕСТЕТИКА МОДЕРН
12. Особенности работы в программном пакете MicroCAP-7
13. Практикум по BPwin Упражнение 2 Упражнение 2
14. Стязание о извістном иноческом жительстве Слово душеполізно зіло внимающим ему і ін
15. поясн мца кнаружи от него прямая мца бедра кнутри ~гребешковая латерально мал ягодичн мца; сзади mm
16. ЛУГАНСЬКИЙ БУДІВЕЛЬНИЙ КОЛЕДЖ спеціальністі 5
17. Методология документационного обеспечения управления
18. одна из важнейших в современной науке управления но не менее важно принять эффективное решение
19. Тема- Твоё русское имя Дата проведения- 15
20. российская наука фактически находится в состоянии глубочайшего кризиса