UML-диаграмма

Автор работы: Пользователь скрыл имя, 25 Июля 2011 в 11:43, лабораторная работа

Краткое описание

Цель работы. Реализовать вычисления, считая, что a, b и x - одномерные динамические векторы, содержащие целочисленные элементы, длиной N. Эти векторы должны быть объектами класса. В классе должны быть предусмотрены несколько конструкторов и деструктор, а также переопределены нужные операции для вычисления логических и арифметических выражений, согласно постановке задачи своего варианта. Декларация класса должна быть оформлена в виде h–файла, а дефиниция – в виде cpp–файла.

Содержимое работы - 1 файл

Лаба2.doc

— 61.00 Кб (Скачать файл)

     МІНІСТЕРСТВО  ОСВІТИ І НАУКИ УКРАЇНИ

     Національний  аерокосмічний університет ім. М.Є. Жуковського “ХАІ” 
 

     Кафедра 603 
 

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

     з дисципліни «Об'ектно- орієнтоване  програмування» 

     ХАІ.603.621п.10О.050103.106342.01 
 

                                   
 

                                                             Виконав студент 621п групи

                                                             Бабенко А.А.

                                                                                          __________________ ____________

                                                                                                        дата                        підпис

                                                             Перевірив доцент кафедри 603

                                                             Голуб Н. Г.

                                                                                         __________________ ____________

                                                                                                       дата                        підпис 
 
 
 
 
 

                                                  2010

Цель  работы. Реализовать вычисления, считая, что a, b и x - одномерные динамические векторы, содержащие целочисленные элементы, длиной  N. Эти векторы должны быть объектами класса. В классе должны быть предусмотрены несколько конструкторов и деструктор, а также переопределены нужные операции для вычисления логических и арифметических выражений, согласно постановке задачи своего варианта. Декларация класса должна быть оформлена в виде h–файла, а дефиниция – в виде cpp–файла. Предусмотреть корректный потоковый ввод информации, а также понятный потоковый вывод информации. 

UML-диаграмма 

Листинг программы:

Файл  Headers.h:

#pragma once

#include "tchar.h"

#include <stdio.h>

#include <iostream>

#include "windows.h"

#include <fstream>

#include <conio.h>

#include <math.h>

using namespace std;

Файл Class.h:

#pragma once

#include "Headers.h" 

class ClassArray

{

 

      int * iArray;

      char Name;

      public :

      int SizeArray;

    ClassArray(int size, char nName);

      ~ClassArray();

      void InputValue (char Array);

      void OutputValue(ClassArray &X);

      double Mean();

      int operator>( ClassArray & right);

      int operator<(ClassArray & right);

      int operator==(ClassArray & right);

      ClassArray& operator=(ClassArray & right);

      ClassArray& operator=(const int right);

      ClassArray& operator/(const ClassArray &right);

      ClassArray& operator-(const int right);

      ClassArray& operator-(const ClassArray &right);

      ClassArray& operator+(const int right);

};

Файл Class.cpp:

#include "Class.h"

#include "Headers.h" 

char * ArraySizeErr = "Размеры массивов не совпадают!";

char * ZeroErr = "Деление  на ноль!"; 
 

ClassArray ::ClassArray(int size, char nName)

{

      Name = nName;

      SizeArray = size;

      iArray = new int[size];

} 
 

ClassArray ::~ClassArray()

{

      delete[] iArray;

} 

void ClassArray :: InputValue (char Array)

{

      int var;

      for(int x =0; x < SizeArray; x++)

      {

            int i = 1;

            do

            {

                        ifstream my_inp("CON");

                        cout << "Введите  целое число " << x+ 1 <<" массива "<< Array <<": ";

                        my_inp >> var;

                        if(my_inp.rdstate() == ios::badbit|| my_inp.rdstate() == ios::failbit)

                        {

                              cout << "Данные  введены неверно! Повторите ввод... \n";

                              i = 1;

                        }

                        else

                              i = 0;

            }

            while(i);

            iArray[x] = var;

      } 

} 

void ClassArray::OutputValue(ClassArray &X)

{

      for(int x = 0; x < X.SizeArray; x++)

            cout <<"X["<<x<<"] = "<< X.iArray[x] << "\t";

} 

double ClassArray :: Mean()

{

      double Mean = 0;

      for(int x = 0 ; x < SizeArray; x++)

            Mean += iArray[x];

      Mean /= SizeArray;

      return Mean;

} 
 

int ClassArray :: operator>(ClassArray & right)

{

      return (this->Mean() > right.Mean());

} 

int ClassArray :: operator<( ClassArray & right)

{

      return (this->Mean() < right.Mean());

} 

int ClassArray :: operator==( ClassArray & right)

{

      return this->Mean() == right.Mean();

} 

ClassArray& ClassArray ::operator=(ClassArray & right)

{

      if(this->SizeArray != right.SizeArray)

      {

            if(SizeArray != 0)

                  delete[] iArray;

            SizeArray = right.SizeArray;

            iArray = new int[SizeArray];

      }

      for(int x = 0; x < SizeArray; x++)

            iArray[x] = right.iArray[x];

      return *this;

} 

ClassArray& ClassArray :: operator/(const ClassArray  &right)

{

      if(this->SizeArray != right.SizeArray)

            throw ArraySizeErr;

      for(int x = 0; x < SizeArray; x++)

      {

            if(right.iArray[x] == 0)

                  throw ZeroErr;

            iArray[x] =  iArray[x] / right.iArray[x];

      }

      return *this;

} 

ClassArray& ClassArray ::operator=(const int right)

{

      for(int x = 0; x< this->SizeArray; x++)

            this->iArray[x] = right;

      return *this;

} 

ClassArray& ClassArray ::operator+(const int right)

{

      for(int x = 0; x < SizeArray; x++)

            iArray[x] = iArray[x] + right;

      return *this;

} 

ClassArray& ClassArray ::operator-(const int right)

{

      for(int x = 0; x < SizeArray; x++)

            iArray[x] = iArray[x] - right;

      return *this;

} 

ClassArray& ClassArray ::operator-(const ClassArray  &right)

{

      for(int x = 0; x < SizeArray; x++)

            iArray[x] = iArray[x] - right.iArray[x];

      return *this;

}

Файл Main.cpp:

#include "Headers.h"

#include "Class.h" 

int InputSize ()

{

      int i = 1;

      int Size;

      while(i)

      {

            ifstream my_inp("CON");

            cout << "Введите размер массивов всех обьектов (1 - 10): ";

            my_inp >> Size;

            if(my_inp.rdstate() == ios ::badbit || my_inp.rdstate() == ios::failbit || Size > 10 || Size < 1)

            {

                  cout << "Вводите верные данные! Повторим ввод...\n";

                  i = 1;

            }

            else

                  i = 0;

      }

      return Size;

} 
 
 

int _tmain(int argc, _TCHAR* argv[])

{ 

      char key;

      SetConsoleOutputCP(1251);

      do{

            try{

      cout << "\t \t if(a>b) \t x = (a-b)/a+1" << endl;

      cout << "\t \t if(a==b)\t  x = 25" << endl;

      cout << "\t \t if(a<b) \t x = (a-5)/b" << endl;

      cout << "\n";

      int Size = InputSize();

      ClassArray a(Size, 'a');

      ClassArray b(Size, 'b');

      a.InputValue('a');

      b.InputValue('b');

      ClassArray X(Size, 'X');

      if(a>b)

            X = (a-b)/(a+1);

      else if(a==b)

            X = 25;

      else if(a<b)

      {

            X = (a-5)/b;

      }

      X.OutputValue(X);

            }

            catch(char * e)

            {

                  cout << e;

            }

      cout << "\n Чтобы повторить нажмите  'y' ! \n\n";

      key = _getch();

      }while(key == 'y');

      return 0;

} 

Функциональные  тесты:

                 if(a>b)         x = (a-b)/a+1

                 if(a==b)         x = 25

                 if(a<b)         x = (a-5)/b 

Введите размер массивов всех обьектов (1 - 10): 1

Введите целое  число 1 массива a: 2

Введите целое  число 1 массива b: 1

X[0] = 1

Информация о работе UML-диаграмма