Работа по С++, страница 2

2017-07-10СтудИзба

Описание файла

Документ из архива "Работа по С++", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "ооп" в общих файлах.

Онлайн просмотр документа "Работа по С++"

Текст 2 страницы из документа "Работа по С++"

 

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

  1. В чем заключается особенность динамических массивов?

  2. Какие вы знаете операции динамического выделения и освобождения памяти в С++?

  3. Как объявить динамический многомерный массив, используя указатели?

  4. Что содержит указатель на массив?

 

 

 

 

Работа № 2.
Классы. Программирование линейных алгоритмов с использованием функций инициализации set() и вывода результатов print()

 

Теоретические сведения

Задание к работе

Варианты заданий

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

 

Цель работы – изучить основные способы работы с пользовательским типом данных «класс», его объектами, методами и способы доступа к ним.

 

Теоретические сведения

Основное отличие С++ от С состоит в том, что в С++ имеются классы. С точки зрения языка С классы в С++ - это структуры, в которых вместе с данными определяются функции. Это и есть инкапсуляция в терминах ООП.

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

Данные класса - это то, что класс знает.

Функции-члены (методы) класса - это то, что класс делает.

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

Объявление класса

Приведем пример объявления класса

class my_Fun
{
// компоненты-данные
double x,y; 
// компоненты-функции
public:
// функция инициализации
void set(char *c,double X)
{
x=X;
y=sin(x);   
}
// функция вывода результатов
void print(void)
{
cout << point<<y << endl;
}
};

Обычно описания классов включают в заголовочные файлы (*.H), а реализацию функций-членов классов - в файлы *.CPP.

Для каждого объекта класса устанавливается область видимости либо явно – указанием уровня доступа одним из ключевых слов public, private, protected с двоеточием, либо неявно – по умолчанию. Указание области видимости относится ко всем последующим объектам класса, пока не встретится указание другой области видимости. Область видимости public разрешает доступ к объектам класса из любой части программы, в которой известен этот объект (общедоступный). Область видимости private разрешает доступ к объектам класса только из методов этого класса. Объекты с такой областью видимости называют частными. Область видимости protected определяется для защищенных объектов, она имеет смысл только в иерархической системе классов и разрешает доступ к объектам этой области из методов производных классов. В теле класса ключевое слово области видимости может использоваться неоднократно. Область видимости для объектов типа «класс» по умолчанию private.

Способы объявления и инициализации объектов и доступ к методам класса:

1. Прямой вызов

my_Fun Fun1; //объявление объекта1,но не инициализация
Fun1.set("Function1 = ",1.0); // инициализация данных
Fun1.print();                 // прямой вызов
cout << "Input enter1..." << endl<<endl;

2. Косвенный вызов

my_Fun *p1 = &Fun1;  // воспользовались объектом 1
                     // новая инициализация
p1->set("Function1 = ",1.0); // косвенный вызов  
p1->print();                  // косвенный вызов  
cout << "Input enter1..." << endl<<endl;

3. Динамическое выделение памяти

my_Fun *p1 = new my_Fun;
p1->set("Function1 = ",1.0);  // косвенный вызов  
p1->print();                  // косвенный вызов  
cout << "Input enter1..." << endl<<endl;

// удаляется динамически выделенный объект
delete p1;

 

Задание к работе

Пользовательский класс должен содержать необходимые элементы-данные, метод установки их начальных значений:

Void set(double X, …);

метод печати:

Void print(void);

метод, решающий поставленную задачу:

Void Run(void);

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

 

Варианты заданий

 



  1. При x=14.26, y=-1.22, z=3.5  t=0.564849.



  2. При x=-4.5, y=0.75 ,z=0.845  u=-55.6848.



  3. При x=3.74 , y=-0.825, z=0.16 , v=1.0553.



  4. При x=0.4  ,y=-0.875, z=-0.475  w=1.9873.



  5. При x=-15.246, y=4.642 , z=20.001   =-182.036.



  6. При x=16.55 , y=-2.75, z=0.15 =-40.630.



  7. При x=0.1722, y=6.33, z=3.25   =-205.305.



  8. При x=-2.235 , y=2.23, z=15.221 =39.374.



  9. При x=1.825 , y=18.225, z=-3.298   =1.2131.



  10. При x=6.251, y=0.827, z=25.001 b=0.7121.



  11. При x=3.251, y=0.325, z=0.466  c=4.25.

  12. .

    При x=17.421, y=10.365 , z=0.828  f=0.33056.

  13. .

    При x=12.3 , y=15.4, z=0.252  g=82.8257.

  14. .

    При x=2.444, y=0.869 , z=-0.13   -0.49871.

 

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

  1. Что значит в ООП понятие «класс», и какой формат его объявления в программе?

  2. Что такое объект класса, что он содержит?

  3. Какие существуют  уровни доступа к объектам  и методам класса (дать характеристику каждому)?

  4. Что такое операция привязки, ее основное назначение?

 

 

 

Работа № 3.
Классы. Программирование линейных алгоритмов с использованием конструктора, деструктора, friend - функции инициализации set() и функции вывода результатов print()

 

Теоретические сведения

Задание к работе

Варианты заданий

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

 

Цель работы – изучить основные способы работы по созданию конструктора класса с захватом динамической памяти и деструктора для ее освобождения, применение friend – функции, и изучение ее особенностей.

 

Теоретические сведения

Конструктор класса

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


class my_Fun
{

// компоненты-данные
double x;
unsigned size;

public:

// объявление конструктора 1 (с параметрами)
my_Fun (double X=0);

// объявление конструктора 2 (без параметров)
my_Fun(void);

// объявление и описание деструктора
~my_Fun ()
{
cout<<"Destroyed object... "<<endl;
}

// описание конструктора 1
my_Fun::my_Fun (double X)
{
cout<<"Constructor1...."<<endl;
x=X;
}
// описание конструктора 2
my_Fun::my_Fun (void)
{
cout<<"Constructor2..."<<endl;
x=5.0;
}
}


Деструкторкласса

Еще одним специальным методом класса является деструктор. Деструк­тор вызывается перед освобождением памяти, занимаемой объектной пере­менной,  и предназначен для выполнения дополнительных действий, связан­ных с уничтожением объектной переменной, например, для освобождения ди­намической памяти, закрытия, уничтожения файлов и т.п.  Деструктор всегда имеет то же имя, что и имя класса, но перед именем записывается знак ~ (тильда). Деструктор не имеет параметров и подобно кон­структору не возвращает никакого значения. Таким образом, деструктор не может быть перегружен и должен существовать в классе в единственном эк­земпляре. Деструктор вызывается автоматически при уничтожении объекта. Таким образом, для статически определенных объектов деструктор вызывает­ся, когда заканчивается блок программы, в котором определен объект (блок в данном случае – составной оператор или тело функции). Для объектов, память для которых выделена динамически, деструктор вызывается при уничтожении объекта операцией delete.

Дружественная функция(friend)


В языке С++ одна и та же функция не может быть компонентом двух разных классов. Чтобы предоставить функции возможность выполнения действий над различными классами можно определить обычную функцию языка С++ и предоставить ей право доступа к элементам класса типа private, protected. Для этого нужно в описании класса поместить заголовок функции, перед которым поставить ключевое слово friend. Дружественная функция не является методом класса, не зависит от позиции в классе и спецификаторов прав доступа. Friend – функции получают доступ к членам класса через указатель, передаваемый им явно. Можно сделать все функции класса Y друзьями класса X в одном объявлении.

 

Задание к работе

Общая постановка. Пользовательский класс Х должен содержать необходимые элементы-данные, которые создаются в динамической области памяти.

  • Конструктор для их создания (операция new) и установки их начальных значений: Х();

  • деструктор: ~Х(); 

  • friend – функция печати: friend void print();

  • функция, решающая поставленную задачу: friend Void Run().

Код методов и функций – вне пространства определения класса.

 

Варианты заданий

Варианты заданий используются из лабораторной работы №2.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5258
Авторов
на СтудИзбе
420
Средний доход
с одного платного файла
Обучение Подробнее