Студопедия — Приклад виконання лабораторної роботи № 3.
Студопедия Главная Случайная страница Обратная связь

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

Приклад виконання лабораторної роботи № 3.

На основі статистичних даних показника Y та Х (таблиця 1), 1МНК знайти оцінки параметрів багатофакторної регресії, якщо припустити, що стохастична залежність між факторами Yі Х мають вигляд відповідно варіанту.

За критерієм Фішера з надійністю 0,95 оцінити адекватність регресії статистичним даним. Якщо модель адекватна статистичним даним, то знайти оцінку прогнозу та його надійний інтервал.

Варіанти для самостійної роботи (вихідні бази даних Хі та Yі)

Таблиця 1.

Варіант 1 Варіант 2 Варіант 3 Варіант 4
Y= ea0+a1X1+a2X2 Y=ea0+a1lnX1+a2X2 Y=ea0+a1/X1+a2lnX2 Y=ea0+a1/X1+a2/X2
Х1 Х2 Y Х1 Х2 Y Х1 Х2 Y Х1 Х2 Y
  0,4 5,1 21,2 5,1 3,0 31,4 0,5 24,1 972,3 5,1 0,5 41,1
  0,8 5,1 23,9 5,4 2,9 31,7 0,6 22,9 406,1 5,7 0,8 42,8
  0,9 4,7 21,8 7,1 2,8 43,7 0,9 22,8 150,3 6,5 1,1 40,2
  1,0 4,2 17,8 8,7 2,8 54,4 1,1 20,8 87,0 7,2 1,3 39,7
  1,3 3,9 17,3 9,9 2,6 59,5 1,3 19,9 65,7 7,9 1,6 37,5
  1,3 3,4 12,7 10,7 2,4 59,1 1,4 19,5 56,4 8,2 1,7 37,5
  1,6 3,3 14,6 11,8 2,4 66,6 1,5 19,4 48,2 8,4 1,7 36,4
  1,7 2,8 11,1 12,1 2,3 67,9 1,5 18,7 45,8 9,3 2,1 37,0
  1,7 2,6 9,8 12,2 2,1 62,3 1,8 18,3 38,2 9,7 2,3 31,2
  1,8 2,5 10,2 13,7 2,1 73,3 2,1 18,2 31,9 10,0 2,5 30,7
  2,0 2,1 8,9 15,1 2,1 80,7 2,2 16,2 27,2 10,3 2,8 29,6
  2,1 1,7 7,9 15,9 1,9 77,8 2,3 14,5 25,7 10,4 2,8 30,9
пр 2,4 1,4   18,5 1,8   2,4 13,0   10,5 3,1  

 

Варіант 5 Варіант 6 Варіант 7 Варіант 8
Y=ea0+a1lnX1+a2/X2 Y=a0+a1/X1+a2X2 Y=a0+a1lnX1+a2lnX2 Y=a0+a1lnX1+a2X2
Х1 Х2 Y Х1 Х2 Y Х1 Х2 Y Х1 Х2 Y
  15,8 0,5 41,1 1,1 13,1 49,5 50,8 52,1 16,9 52,1 25,2 68,3
  15,3 0,8 42,8 1,4 15,5 54,3 58,5 57,4 18,1 73,8 27,3 73,1
  13,4 1,1 40,1 1,5 15,6 54,2 97,0 73,2 19,0 73,9 26,2 70,1
  13,1 1,3 39,7 2,0 17,3 58,5 126,2 75,0 19,8 84,3 27,4 73,9
  12,1 1,6 37,5 2,2 17,4 59,0 143,6 83,1 19,6 98,8 27,2 74,2
  11,5 1,7 37,5 2,3 19,7 64,8 152,6 88,9 20,6 103,3 27,2 74,8
  11,4 1,7 36,4 2,8 21,5 70,1 189,5 132,4 21,2 105,4 28,2 75,6
  10,2 2,1 37,0 3,0 23,5 76,5 198,9 155,4 21,9 108,4 30,5 80,1
  8,6 2,3 31,2 3,2 24,9 81,0 231,0 193,8 22,3 114,5 29,2 79,3
  8,0 2,5 30,7 3,2 26,9 85,0 243,4 231,0 22,7 148,8 30,5 82,6
  7,6 2,8 29,6 3,4 29,3 92,7 261,7 273,9 22,7 181,3 30,2 81,0
  7,6 2,8 30,9 3,7 29,4 92,7 264,1 308,2 23,6 206,6 31,9 86,1
пр 6,0 3,0   4,0 31,9   269,0 323,4   236,0 32,2  

 

Варіант 9 Варіант 10 Варіант 11 Варіант 12
Y=a0+a1/X1+a2X2 Y= Y=1/(a0+a1lnX1+a2X2) Y=ln(a0+a1lnX1+a2√Х2)
Х1 Х2 Y Х1 Х2 Y Х1 Х2 Y Х1 Х2 Y
  3,5 52,1 21,0 52,1 21,1 5,6 0,5 2,4 2,4 46,2 25,7 5,3
  4,7 53,1 19,2 52,6 22,9 6,5 5,3 7,0 0,9 49,5 33,4 5,6
  5,5 53,6 19,5 54,1 24,7 5,6 10,0 11,4 0,6 51,3 38,3 5,0
  7,7 55,1 18,1 57,9 29,0 5,8 14,6 14,3 0,6 51,3 45,8 5,1
  8,0 57,6 20,2 58,5 31,1 6,0 20,1 15,3 0,6 53,2 53,1 5,1
  10,1 58,9 19,9 61,7 35,5 6,1 20,2 17,3 0,4 54,5 55,5 5,9
  13,0 59,3 19,3 66,1 35,9 6,1 25,3 21,8 0,4 57,2 62,7 5,3
  14,8 62,2 18,3 68,2 39,9 6,5 27,6 24,7 0,4 59,6 68,4 5,3
  17,8 66,0 18,5 72,1 41,6 6,4 30,3 29,5 0,3 64,0 68,9 6,0
  18,7 67,4 18,2 72,4 43,4 6,6 32,1 33,0 0,4 65,4 65,4 5,4
  21,2 69,9 18,9 74,8 46,3 6,4 37,4 35,6 0,2 66,7 66,7 6,0
  23,1 70,5 19,5 78,6 49,3 6,6 41,0 40,5 0,2 67,5 67,5 5,7
пр 25,0 74,3   84,5 53,1   44,4 41,4   70,2 70,0  

 

Варіант 13 Варіант 14 Варіант 15 Варіант 16
Y=ea0+a1lnX1+a2√X2 Y=√a0+a1X1+a2lnX2 Y=a0+a1√X1+a2lnX2 Y=√a0+a1X1+a2X2
Х1 Х2 Y Х1 Х2 Y Х1 Х2 Y Х1 Х2 Y
  3,1 4,3 2,6 52,1 35,6 9,8 52,1 34,5 31,4 25,3 31,3 15,7
  3,8 5,3 3,7 52,7 40,2 9,9 58,8 35,2 32,4 27,9 32,6 17,5
  4,1 7,3 1,8 56,5 41,6 9,4 64,7 37,3 34,3 31,4 34,7 17,9
  4,6 7,8 2,6 63,0 43,8 9,8 68,1 39,6 35,5 32,6 35,9 17,4
  6,1 8,7 5,7 67,1 47,0 10,1 69,3 41,0 35,8 38,3 37,6 18,1
  7,2 10,6 6,3 73,0 50,2 10,7 72,8 41,6 35,7 42,3 40,0 18,5
  7,5 12,0 4,3 77,2 51,7 10,9 77,1 44,3 37,7 43,9 41,9 20,3
  9,4 13,7 6,6 83,9 59,1 11,3 77,3 44,4 36,4 45,9 43,0 19,3
  9,7 14,6 5,8 87,5 63,2 12,3 82,9 47,8 38,8 46,2 43,4 19,3
  10,1 14,8 7,2 89,1 68,2 11,8 83,9 48,1 39,2 47,9 44,3 20,3
  11,0 16,8 6,6 95,4 74,6 12,8 88,4 48,8 39,9 50,9 44,9 21,1
  12,2 17,3 7,3 101,9 82,3 12,4 90,3 52,5 39,8 56,8 44,8 20,9
пр 13,1 18,7   104,2 87,3   93,4 54,6   58,3 47,1  

 

 

Лабораторна робота №3

 

Тема роботи: Одиночне спадкування. Поліморфізм.

Мета роботи:Ознайомитися з видами спадкування та його перевагами.Набути практичних навичок створювання нових класів шляхом спадкування існуючих класів, використання у програмі на мові С++ одиночного спадкування та поліморфізму.

Тривалість: 4 години.

 

МЕТОДИЧНІ ВКАЗІВКИ

 

ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ №3

 

Відповідно до індивідуального варіанту завдання до лабораторної роботи №1 необхідно:

1) розробити один –два похідних класи, для яких базовим є клас розроблений в попередніх лабораторних роботах;

2) оголосити об'єкти, використовуючи розроблені конструктори похідних класів;

3) продемонструвати застосування методів базового та похідних класів.

Приклад виконання лабораторної роботи № 3.

Для класу, створеного в попередніх лабораторних роботах, розробимо два похідні класи:

Клас для роботи з об'єктом товар, який відпускається на вагу.

Засобами мови UML цей клас можна зобразити наступним чином:

 

CTovar_weight
Name price Weight
SetName() SetPrice() SetWeight () GetName() GetPrice() GetWeight ()

Рис. 7.1. Структура класу CTovar_weight.

 

Клас для роботи з об'єктом товар, який розфасований в тару.

 

Засобами мови UML цей клас можна зобразити наступним чином:

 

CTovar_package
Name Price Height Length Wigth
SetName() SetPrice() SetTara() GetName() GetPrice() GetTara()

Рис. 7.2. Структура класу CTovar_package.

Діаграма класів буде мати вигляд:

CTovar_package
Height Length Wigth Quantity
SetTara() SetQuantity() GetHeight() GetLength() GetWigth() GetQuantity()

 

 

Рис. 7.2. Діаграма класів

 

Щоб реалізувати похідні класи CTovar_package та CTovar_weight на основі баового CTovar нам потрібно їх оголосити та реалізувати конструктори і методи, яких немає базовий класс.

 

Для цього

1. Зайдемо до середовища Visual Studio 2010.

2. Відкриємо проект, створений у лабораторній роботі №2, та відредагуємо розміщення компонетів на формі. Для форми змінимо значення властивості Text на «Поліформізм» та додамо необідні елементи (див. рис.7.3)

 

Рис. 7.3. Вигляд форми «Поліморфізм»

3. На панелі меню вибрати Проект->Добавить класс. На центральній панелі вибираємо Класс С++та задаючи імя нового классу CTovar_weight та місце його розміщення.

Натиснувши на кнопку Добавить, перейдемо до вікна майстра класів. В полі майстра класів Имя класса введемо імя классу, поля Файл.h, Файл.cpp заповнюються автоматично, імя базового классу CTovar, доступ public. Натискаємо кнопку Готово.

В результаті в проект буде додано шаблон створенного классу (файл CTovar_weight.h) та файл його оголошення (CTovar_weight.cpp). (див. Рис. 7.4)

Рис. 7.4. Вікно Обозревателя решений.

4. Двічі клацнувши по файлу CTovar_weight.h перейдемо у вікно редагування. Створений шаблон буде мати вигляд

#pragma once

#include "tovar.h"

ref class CTovar_weight:

public CTovar

{

public:

CTovar_weight(void);

virtual ~CTovar_weight(void);

 

};

 

Між першою фігурною дужкою та ключовим словом public розмістимо опис полів нашого классу, після ключового слова public додамо оголошення методів нашого классу. Створений класс буде мати вигляд:

#pragma once

#include "tovar.h"

ref class CTovar_weight:

public CTovar

{

double Weight; // поле похідного класу

public:

CTovar_weight(void); // конструктор за замовчуванням

CTovar_weight(double ves); // конструктор з полем

virtual ~CTovar_weight(void); // деструктор

void SetWeight(double weight); // метод похідного класу для зміни значення поля

double GetWeight(); // метод похідного классу для отримання значення поля

};

 

5. Перейдемо до файлу CTovar_weight.cpp. Додамо оголошення методів классу. В результаті отримаємо

#include "StdAfx.h"

#include "Tovar_weight.h"

//

// Конструктор за замовчуванням

//

CTovar_weight::CTovar_weight(void)

{

Weight=0.0;

}

//

// Конструктор з одним параметром

//

CTovar_weight::CTovar_weight(double ves)

{

Weight=ves;

}

 

//

// Деструктор

//

CTovar_weight::~CTovar_weight(void)

{

}

 

//

// метод для зміни ваги товару

//

void CTovar_weight:: SetWeight(double ves)

{

this->Weight=ves;

}

//

// метод для отримання значення ваги товару

//

double CTovar_weight:: GetWeight()

{

return this->Weight;

}

 

6. Аналогічно розробимо і похідний клас CTovar_package.

7. Для створення обраних об’єктів з заданими параметрами використаємо кнопку button1 з написом «Создать объект», код обробки події натискання на неї наведено нижче:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

if (checkBox1->Checked==true)

{

//

// создаем объекты базового класса

//

// используется конструктор по умолчанию

іf (radioButton2->Checked==true)

{tovar1=gcnew CTovar (); // используется конструктор по умолчанию

listBox1->Items->Add("Создан объект базового классв - конструктор по умолчанию");

listBox1->Items->Add("Название: " + tovar1->GetName() + " Цена: " +

Convert::ToString(tovar1->GetPrice()));

}

//

// используется конструктор с одним параметром название

//

if (radioButton4->Checked==true)

{tovar2=gcnew CTovar (textBox1->Text);

listBox1->Items->Add("Создан объект базового классв – конструктор с одним параметром название");

listBox1->Items->Add("Название: " + tovar2->GetName() + " Цена: " +

Convert::ToString(tovar2->GetPrice()));

}

//

// используется конструктор с одним параметром цена

//

if (radioButton10->Checked==true)

{tovar3=gcnew CTovar (Convert::ToDouble(textBox2->Text));

listBox1->Items->Add("Создан объект базового классв - конструктор с одним параметром цена");

listBox1->Items->Add("Название: " + tovar3->GetName() + " Цена: "

+ Convert::ToString(tovar3->GetPrice()));

}

//

// используется конструктор с двумя параметроми

//

if (radioButton5->Checked==true)

{tovar4=gcnew CTovar (textBox1->Text, Convert::ToDouble(textBox2->Text)); // используется конструктор с двумя параметрами

listBox1->Items->Add("Создан объект базового классв - конструктор с двумя параметрами");

listBox1->Items->Add("Название: " + tovar4->GetName() + " Цена: "

+ Convert::ToString(tovar4->GetPrice()));

}

}

if (checkBox2->Checked==true)

{

//

// создаем объекты производного класса 1

//

// используется конструктор по умолчанию

if (radioButton1->Checked==true)

{W_tovar1=gcnew CTovar_weight ();

listBox1->Items->Add("Создан объект базового классв - конструктор по умолчанию");

listBox1->Items->Add("Название: " + W_tovar1->GetName() +

" Цена: " + Convert::ToString(W_tovar1->GetPrice())+

" Вес "+ Convert::ToString(W_tovar1->GetWeight()));

}

//

// используется конструктор с одним параметром вес

//

if (radioButton3->Checked==true)

{W_tovar2=gcnew CTovar_weight (Convert::ToDouble(textBox3->Text));

listBox1->Items->Add("Создан объект базового классв – конструктор с одним параметром вес");

listBox1->Items->Add("Название: " + W_tovar2->GetName() +

" Цена: " + Convert::ToString(W_tovar2->GetPrice())+

" Вес "+ Convert::ToString(W_tovar2->GetWeight()));

}

//

// создаем объекты производного класса 2

//

// код аналогичный для объектов производного класса 1

}

 

8. Для модифікації обраних об’єктів з заданими параметрами використаємо кнопку button3 з написом «Изменить объект», код обробки події натискання на неї наведено нижче:

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {

 

//

// меняем поля первого объекта производного класса 1

//

 

if (radioButton11->Checked==true)

{listBox1->Items->Add("Выбан объект W_tovar1");

listBox1->Items->Add("Название: " + W_tovar1->GetName() + " Цена: " +

Convert::ToString(W_tovar1->GetPrice())+

" Вес "+ Convert::ToString(W_tovar1->GetWeight()));

//

// меняем название

//

if (checkBox4->Checked==true) W_tovar1->SetName(textBox1->Text);

//

// меняем цену

//

if (checkBox5->Checked==true) W_tovar1->SetPrice(Convert::ToDouble(textBox2->Text));

//

// меняем вес

//

if (checkBox6->Checked==true) W_tovar1->SetWeight(Convert::ToDouble(textBox3->Text));

//

// проверяем изменения

//

listBox1->Items->Add("объект W_tovar1 после модификации ");

listBox1->Items->Add("Название: " + W_tovar1->GetName() + " Цена: "

+ Convert::ToString(W_tovar1->GetPrice())+

" Вес "+ Convert::ToString(W_tovar1->GetWeight()));

}

else

//

// меняем поля первого объекта производного класса 1

//

{listBox1->Items->Add("Выбан объект W_tovar2");

listBox1->Items->Add("Название: " + W_tovar2->GetName() +

" Цена: " + Convert::ToString(W_tovar2->GetPrice())+

" Вес "+ Convert::ToString(W_tovar2->GetWeight()));

//

// меняем название

//

if (checkBox4->Checked==true) W_tovar2->SetName(textBox1->Text);

//

// меняем цену

//

if (checkBox5->Checked==true) W_tovar2->SetPrice(Convert::ToDouble(textBox2->Text));

//

// меняем вес

//

if (checkBox6->Checked==true) W_tovar2->SetWeight(Convert::ToDouble(textBox3->Text));

//

// проверяем изменения

//

listBox1->Items->Add("объект W_tovar1 после модифмкацмм ");

listBox1->Items->Add("Название: " + W_tovar2->GetName() +

" Цена: " + Convert::ToString(W_tovar2->GetPrice())+

" Вес "+ Convert::ToString(W_tovar1->GetWeight()));

}

//

// КОД ДЛЯ ИЗМЕНЕНИЯ ПОЛЕЙ объектОВ производного класса 2

//

 

}

9. Додамо на форму кнопку button4 з написом «Использовать виртуальный метод» для демонстрації використання віртуальних методів класу. Перейдемо до файлу

«Tovar.h». Додамо після першого рядка файлу рядок для можливості використання системних перетворень типів

 

using namespace System;

 

а також оголошення методу

 

virtual System::String ^ Look();

 

Перейдемо до файлу «Tovar.сpp». Додамо віртуального методу

 

System::String ^ CTovar::Look()

{

System::String ^ s=Convert::ToString(this->GetPrice());

return (s);

}

Далі внесомо зміни в оголошеня класу CTovar_weight, додавши в файл «CTovar_weight.h» оголошення методу

 

virtual System::String ^ Look() override;

 

та його реалізацію в файл «CTovar_weight.сpp»

 

System::String ^ CTovar_weight::Look()

{

System::String ^ s=Convert::ToString(this->GetPrice()*this->GetWeight());

return (s);

}

Для демонстрації використання методів Look() можно використати наприклад такий код

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {

 

listBox1->Items->Add("объект tovar4 метод Look(): ");

listBox1->Items->Add(tovar4->Look());

 

listBox1->Items->Add("объект W_tovar1 метод Look(): ");

listBox1->Items->Add(W_tovar1->Look());

}




<== предыдущая лекция | следующая лекция ==>
Завдання до лабораторної роботи №8. | Работа № 5

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



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

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

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

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

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

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

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия