МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное агентство по образованию
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Учебный Центр Информационных Технологий «Информатика»
Лабораторная работа №1
по дисциплине «Объектно-ориентированное программирование»
Направление подготовки: 230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»
Выполнил слушатель:
Вариант: 9
Дата сдачи: __/__/____
Преподаватель:
Новосибирск, 2016г.
Лабораторная работа № 1. Разработка класса.
1. Цель работы: научиться проектировать и реализовывать классы, соответственно поставленной задаче. Освоить на практике базовые понятия и механизмы ООП.
2. Вариант № 9. Комплексные числа.
Объект класса хранит действительную и мнимую часть комплексного числа. Предусмотреть методы вычисления модуля и аргумента.
3. Описание программной реализации.
Проект скомпилирован в среде Microsoft VS и содержит три файла: интерфейс класса Complex.h, реализация методов класса Complex.cpp, и файл main.cpp.
Используемые функции:
— intmenu(Complex** &, int &) – блок программы, содержащий интерфейс пользователя и функции вывода таблицы введённых данных.
— void grow(Complex** &, int &) — функция, производящая динамическое увеличение массива элементов.
— void createObj(Complex** &, int &, int number=0) – создание объекта.
— voidcreateCopy(Complex** &, int &, int) — создание объекта как копии выбранного элемента.
— void showTable(Complex** &, int) — вывод содержимого массива в виде таблицы.
— void deleteAll(Complex** &, int) — удаление динамического массива и всех созданных объектов класса.
Методы класса Complex:
— Complex() – конструктор по умолчанию.
— Complex(int, int) — конструктор с параметрами.
— Complex(Complex &) – конструктор копий.
— ~Complex() — деструктор.
— staticint getCounter() — возвращает значение счётчика объектов.
— void edit() — редактирование объекта.
— staticvoiddel(Complex* &) — удаление выбранного объекта.
— voidshowObject() — вывод объекта.
— doublemod() — модуль комплексного числа.
— doublearg() — аргумент комплексного числа.
4. Вывод
В ходе выполнения лабораторной работы я научился проектировать и реализовывать классы, освоил базовые понятия и механизмы ООП: закрытые и открытые члены класса, перегрузка конструкторов, список инициализации, статические члены класса, динамическое выделение памяти, потоковый ввод/вывод.
5. Пример работы программы.
При запуске пользователю предлагается ввести количество элементов массива.
После чего отображается пустая таблица элементов массива и меню пользователя.
При заполнении элементов таблицы пользователю предлагается выполнить соответствующие действия с её элементами:
· Быстрая вставка элемента с параметрами по умолчанию
· Изменение выбранного элемента путём ввода действительной и мнимой частей комплексного числа
· Копирование выбранного элемента
· Удаление выбранного элемента
При выходе из программы происходит удаление всех элементов динамического массива и освобождается память.
6. Приложение. Текст программы
Complex.h:
#pragma once
#include <iostream>
#include <conio.h>
#include <math.h>
#include <Windows.h>
#include <locale>
using namespace std;
class Complex
{
static double const pi ;
static int counter;
double real, image;
public:
Complex();
Complex(int, int);
Complex(Complex &);
~Complex();
static int getCounter();
void edit();
static void del(Complex* &);
void showObject();
double mod();
double arg();
};
Complex.cpp:
#include "comPlex.h"
int Complex::counter;
double const Complex::pi = 3.1415926536;
Complex::Complex(): real(0), image(0) // конструктор по умолчанию
{
++counter;
}
Complex::Complex(int re, int im): real(re), image(im) // конструктор с параметрами
{
++counter;
}
Complex::Complex(Complex &obj): real(obj.real), image(obj.image) // конструктор копирования
{
++counter;
}
Complex::~Complex() // деструктор
{
--counter;
}
int Complex::getCounter() // возврат счётчика
{
return counter;
}
void Complex::edit() // редактирование объекта
{
cout<<endl<<"Введите действительную часть Z: real= "<<endl;
cin>>real;
cout<<"Введите мнимую часть Z: image= "<<endl;
cin>>image;
return;
}
void Complex::del(Complex* &obj) // удаление объекта
{
if (obj!=NULL)
{
delete obj;
obj = NULL;
}
return;
}
void Complex::showObject() // вывод объектов
{
cout<<"Z="<<real<<"+"<<image<<"*i"<<"\t"<<"|Z|="<<mod()<<"\t";
if (arg()!=0)
cout<<"arg Z="<<arg()*180/pi<<"\t"<<endl;
else
cout<<"n/a"<<endl;
return;
}
double Complex::mod() // модуль
{
return sqrt(real*real+image*image);
}
double Complex::arg() // аргумент
{
if (real>0) return atan(image/real);
if (real<0)
{
if (image>0) return pi+atan(image/real);
if (image<0) return -pi+atan(image/real);
if (image==0) return pi;
}
if (real==0)
{
if (image>0) return pi/2;
if (image<0) return -pi/2;
}
return 0;
}
main.cpp:
#include "comPlex.h"
#define ESC 27
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.