Использование классов при работе с векторами и матрицами (Лабораторная работа № 2)

Страницы работы

Содержание работы

НГТУ, факультет РЭФ, кафедра ППиМЭ

Лабораторный практикум «Информатика-3»

Алгоритмы и программы вычислительных задач

микро- и наноэлектроники

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

Использование классов при работе

с векторами и матрицами

© Н.В.Усольцев       Редакция 2007 г.       Вариант № 2 от 10.09.07

1. Введение

Класс – тип данных, конструируемый программистом на основе стандартных или ранее определенных типов, влючающий в себя собственно данные и методы (функции) для работы с ними.

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

Класс может содержать открытые разделы (public), данные и методы которых доступны для любых функций, и закрытые разделы (private), данные и методы которых доступны только для функций (методов) данного класса. Обычно класс конструируют так, чтобы его данные располагались в закрытом разделе, а основные методы работы с ними – в открытом. Это позволяет защитить данные от непредусмотренных действий.

2. Класс TVector

Класс TVector может содержать следующие данные:

-  массив компонентов вектора (тип double[] или Vector);

-  количество компонентов вектора (тип int).

Данные будут располагаться в закрытом разделе. Для работы с ними предусмотрим следующие методы-функции:

voidInpVec(intcomp)                          - для ввода данных вектора с клавиатуры;

voidOutVec(intcomp, intw, intp)- для вывода данных вектора на дисплей;

voidSetVec(intcomp, VectorX)  - для программного задания данных вектора из массива X с числом компонентов comp;

voidGetVec(int& comp, VectorX)            - для программного получения (взятия)  данных вектора в массив Xс числом компонентов comp;

TVectorAddVec(TVectorX, TVectorY) -  для сложения двух векторов;

TVectorSubVec(TVectorX, TVectorY) -  для вычитания двух векторов;

doubleMultVec(TVectorX, TVectorY) -  для вычисления скалярного произведения двух векторов;

Описание данных и методов класса выполняется следующим образом:

Листинг 1

#include "define.h"

class TVector

  {

private: // закрытый раздел

// данные класса

intn;

VectorV;

public:  // открытый раздел

// методы класса

void InpVec(int);

     void OutVec(int, int, int);

     void SetVec(int,  Vector);

     void GetVec(int&, Vector);

     TVector AddVec(TVector, TVector);

     TVector SubVec(TVector, TVector);

double MultVec(TVector, TVector);

  };

После служебного слова class располагается идентификатор (имя) класса

TVector,  а затем, в фигурных скобках, описывается его состав. Закрытый раздел

private содержит данные класса: число компонентов вектора n и сам массив компонентов V. Эти идентификаторы в дальнейшем используются для доступа к данным класса в его методах. Перечисленные выше методы класса располагаются в открытом разделе public и представляют собой прототипы соответствующих функций. Следует обратить внимание, что параметрами трех последних функций и возвращаемым значением двух предпоследних является значение типа TVector, т.е. класс допускает в описании своих элементов использование типа самого себя (рекуррентное обращение).

Заголовочный файл define.h подключается для возможности использования типа Vector.

Описание класса, приведенное на листинге 1, записывается в заголовочный файл tvector.h, который подключается директивой #include ко всем функциям, использующим объекты данного класса. Можно представить следующую главную функцию, использующую объекты типа TVectorX, Y и Z:

Листинг 2

#include “tvector.h”

void main()

{

// описание данных

TvectorX,Y,Z;

     ...

}

Методы класса должны быть оформлены как функции языка С++. Обычно они располагаются в одном файле (файле реализации класса), который имеет то же имя, что и файл описания класса, но расширитель .cpp .  Содержание файла tvector.cpp для описываемого класса приведено на листинге 3.

Листинг 3

// файл реализации класса TVector

#include <iostream.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include "tvector.h"

void TVector::InpVec(int comp)

// метод (функция) для ввода вектора с клавиатуры

{

// описание данных

     int i;

// ввод вектора

if (comp>0) n=comp;

     else

       {

cout<<"Введите число компонентов ";

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Методические указания и пособия
Размер файла:
122 Kb
Скачали:
0