Сценарій взаємодії об'єктів
1. Конструювання об'єкта "вектор" за допомогою конструктора неявно-го об'єкта "масив". Об'єктно-орієнтоване програмування Структура проекту програми 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(); //множення матриці на вектор, затримка зображення }
|