Здавалка
Главная | Обратная связь

Сценарій взаємодії об'єктів



1. Конструювання об'єкта "вектор" за допомогою конструктора неявно-го об'єкта "масив".
2. Ініціалізіція атрибутів об'єкта "вектор".
3. Відображення значень атрибутів об'єкта "вектор".
4. Конструювання об'єкта "матриця" за допомогою конструктора об'єкта "вектор", який створюється на базі об'єкта "масив".
5. Ініціалізація об'єкта "матриця".
6. Відображення атрибутів об'єкта "матриця".
7. Конструювання та ініціалізація об'єкта "матриця", який додається до першого об'єкта "матриця".
8. Додавання двох об'єктів "матриця".
9. Відображення результатів додавання об'єктів "матриця"
10. Конструювання пустого об'єкта "вектор", для збереження результату множення матриці на вектор.
11. Множення об'єктів "вектор" та першого об'єкта "матриця" з ініціал-зацією об'єкта "вектор", що є результатом множення.

Об'єктно-орієнтоване програмування

Структура проекту програми 9.2

Текст програми 9.2

//==============Файл lab9_2.h – інтерфейси класів=======================

class array //клас масив

{

public:

char name[10]; //ім’я масиву

array(); //конструктор

virtual void show(); //відображення атрибутів об’єкта

};

//////////////////////////////////////////////////////// клас вектор ///////////////////////////////////////////////////

classvector:public array

{ public:

intmas[5]; //компоненти вектора

int row; //кількість компонентів

vector(); //конструктор

vector(int number_element); //перевантажений конструктор

virtual void show(); //відображення атрибутів об’єкта

};

///////////////////////////////////////////////// клас матриця //////////////////////////////////////////////////////////////

classmatrix:public vector

{ public:

intmatr[5][5]; //елементи матриці

int column;//кількість стовпчиків, кількість рядків успадковується з класу вектор

matrix(); //конструктор

matrix(int number_column); //перевантажений конструктор

void show(); //відображення атрибутів об’єкта

void mult(vector &v); //множення матриці на вектор

void add(matrix &other_matr); //додавання матриць

};

//===============Файл lab9_2.срр - реалізація класів =====================//

#include<iostream.h>

#include<stdio.h>

#include<string.h>

#include"lab9_2.h"

intflag=0; //прапорець для визначення типу виведення атрибутів

array::array() //конструктор ініціалізації атрибутів класу array

{ cout<<"enter name of object"<<endl;

gets(name); }

//////////////////////////////// відображення атрибутів об’єкта //////////////////////////////////////////////////

void array::show()

{ cout<<name; }

/////////// конструктор об’єкта vector, посилається на конструктор об’єкта array ////////////

vector::vector():array()

{ puts("enter size of column-vector");

cin>>row; //уведення кількості компонентів вектора

cout<<"enter "<<row<<" values of column-vector "<<endl;

for(inti=0;i<row;i++) cin>>mas[i]; //уведення значення компонентів

}

/////////конструктор об’єкта vector, посилається на конструктор об’єкта array /////////////

vector::vector(intnumber_row):array()

{ row=number_row;

}

/////////////////////////////// метод відображення атрибутів об’єкта /////////////////////////////////////////

void vector::show()

{ cout<<"vector atributes: name=";

array::show();

cout<<" row="<<row<<endl;

cout<<" values of column-vector:"<<endl;

for(inti=0;i<row;i++) cout<<mas[i]<<endl;

}

///////////////////////////// метод додавання матриць ////////////////////////////////////////////////////

voidmatrix::add(matrix &other_matr)

{ //визначення можливості додавання

if((row==other_matr.row)&&(column==other_matr.column))

for(inti=0;i<row;i++)

for(intj=0;j<column;j++)

matr[i][j]+=other_matr.matr[i][j];

else { cout<<"adding is impossible"<<endl;

flag=1; } //ознака неможливості додавання

}

///////////////////////////////// метод множення матриці на вектор /////////////////////////////////////////////

voidmatrix::mult(vector &v){

vector result(column); //об’єкт результату множення

if(v.row==column) //умова можливості множення

{ for (inti=0;i<row;i++)

{ result.mas[i]=0;

for(intj=0;j<column;j++)

result.mas[i]+=matr[i][j]*v.mas[j];

}

}

else cout<<"multiplication is impossible"<<endl;

result.show(); //відображення результатів множення

}

///////////////////////////////////// конструктор матриці ////////////////////////////////////////////////////////////

matrix::matrix(intnumber_row):vector(number_row)

{ char answer; //символ-відповідь на питання про необхідність уведення даних

cout<<"do you want to enter row ?y/n:";

cin>>answer;

if(answer=='n') //якщо кількість рядків не вводиться, то вона успадковується

{

cout<<"row is defined by vector"<<endl;

row= number_row;

}

else //потрібне введення нового значення кількості рядків

{ cout<<"enter row of matrix: ";

cin>>row;

}

cout<<"enter column of matrix"<<endl;

cin>>column; //уведення кількості стовпчиків

cout<<"enter "<<row<<"*"<<column<<" values of object's elements "<<endl;

for(inti=0;i<row;i++) //уведення елементів матриці

for(intj=0;j<column;j++)

cin>>matr[i][j];

}

void matrix::show()

{

puts("");

for (int i = 0; i < row; i++)

{

for (int j = 0; j < column; j++)

{

printf("%3d", matr[i][j]);

}

puts("");

}

puts("");

}

////////////////////////////////// тестова програма //////////////////////////////////////

void main()

{ puts("inheritance -lab9_2");

vector vec; vec.show();//конструювання вектора та відображення його атрибутів

int size_row=vec.row; //формування аргументу для конструктора об’єкту матриці

cout<<"matrix1: ";

matrix mat1(size_row); //конструювання матриці

mat1.show(); //відображення матриці

cout<<"matrix2: ";

matrix mat2(size_row);

mat2.show(); //конструювання матриці та її відображення

mat1.add(mat2); //додавання матриць

if(flag==0)

{ cout<<"result of matrix adding"<<endl;

mat1.show();

}

cout<<"result of multiplication matrix by vector"<<endl;

mat1.mult(vec); getchar(); //множення матриці на вектор, затримка зображення

}

 

 

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.