1) Основательно изучите лекционный материал.
Обратите внимание на примеры реализации классов как в в параграфах, описывающих
простые классы, так и в примерах наследования.
2) Напишите программу, реализующую Вашу задачу.
При этом:
a) Спроектируйте
класс:
- Опишите нужные поля (члены-данные класса);
- Напишите конструктор;
- Напишите метод (методы), выводящий на экран значения полей (членов-данных класса);
- Напишите методы (члены-функции) класса, нужные для реализации задачи;
- Напишите дружественную функцию, описанную в задаче.
b) Описание
класса сделайте в заголовочном файле, описание методов и функцию main- в двух других файлах.
c) После
вызова конструктора обязательно вызовите метод, печатающий значения полей (для
проверки)
d) В
функции main определите несколько объектов
(экземпляров класса). Продемонстрируйте решение задачи, во-первых, только с
помощью вызова различных методов объекта (объектов) и, во-вторых, с помощью
друга класса.
задачи смотрите здесь
контрольные вопросы смотреть здесь
Указания
Например, рассмотрим, как написать программу, реализующую задачу:
Описать класс Четырехугольник (определен координатами вершин).
Методы рассчитывают длины сторон, периметр. Друг класса определяет, периметр какого из двух четырехугольников меньше.
Используя созданный класс, написать программу, в которой рассчитываются характеристики двух четырехугольников и делается заключение, какой из них имеет меньший периметр.
Действуем в соответствии с заданием:
Спроектируем класс:
1-й этап: Опишем нужные поля (в заголовочном файле Pr_Klass.h)
#include <iostream>
using namespace std;
class FourAngl
{
double x1,y1,x2,y2,x3,y3,x4,y4,P;
/*Опишем там же конструктор, функцию-член вычисления периметра и функцию-член для вывода на экран координат:
*/
public:
FourAngl(void);
double Perimetr(void);
void Show(void);
};
2-й этап: Напишем код членов-функций в файле metody.cpp
#include "Pr_Klass.h"
FourAngl::FourAngl(void){x1=0;y1=0; x2=0;y2=4;x3=3;y3=4; x4=3;y4=0;}
double FourAngl::Perimetr(void){P=0;return P;}
void FourAngl::Show(void)
{
cout<<"vershiny: "<<x1<<" "<<y1<<endl<<" "<<x2<<" "<<y2<<endl;
cout<<" "<<x3<<" "<<y3<<endl<<" "<<x4<<" "<<y4<<endl;
}
При этом
- Конструктор сделаем предельно простой и удобный, чтобы при каждом запуске программы не вводить координаты.
- Функция-член Perimetr ничего не делает (заглушка);
- Функция-член Show выводит на экран координаты.
#include "Pr_Klass.h"
void main()
{
FourAngl fig1;
fig1.Show();
}
Она позволит отладить написанный вариант.
Запустим этот вариант программы. Если ошибок нет, на экране появятся координаты вершин.
4-й этап: Напишем вычисление периметра и выведем его значение на экран
Модифицируем член-функцию (хорошо бы ввести члены-данные "длины сторон" и член-функцию, которая их вычисляет, но это сделают те, у кого соответствующие задачи):
double FourAngl::Perimetr(void)
{
P=sqrt(x1*x1+y1*y1)+sqrt(x2*x2+y2*y2)+sqrt(x3*x3+y3*y3)+sqrt(x4*x4+y4*y4);
return P;
}
В функцию main вставим еще один оператор:
cout<<"P="<<fig1.Perimetr();
а в хедер-файле присоединим библиотеку математических функций.
Запустим этот вариант программы и убедимся, что всё рассчитывается верно.
Если в Вашей задаче есть еще методы, вписывайте и отлаживайте их один за другим.
5-й этап: Перепишем конструктор
Для того, чтобы ввести несколько объектов-четырехугольников, нужно переписать конструктор так, чтобы разным объектам можно было задать различные значения членов-данных. Можно написать ввод с клавиатуры (не забудте поправить описание конструктора в хедер-файле):
FourAngl::FourAngl(void)
{cout<<"x1,y1=";cin>>x1>>y1;
cout<<"x2,y2=";cin>>x2>>y2;
cout<<"x3,y3=";cin>>x3>>y3;
cout<<"x4,y4=";cin>>x4>>y4;
}
А можно воспользоваться параметрами (здесь по-разному могут задаваться только координаты (x1,y1):
FourAngl::FourAngl(double a1,double b1)
{
x1=a1; y1=b1;
x2=4; y2=5;
x3=3; y3=7;
x4=1; y4=2;
}
В зависимости от кода конструктора, начальные значения координат в функции main будут задаваться по-разному:
void main()
{
FourAngl fig1, fig2(10,11);
fig1.Show();
fig2.Show();
cout<<"P="<<fig1.Perimetr()<<endl;
cout<<"P="<<fig2.Perimetr()<<endl;
}
Использование функции-друга будет описано в следующем сообщении.
Комментариев нет:
Отправить комментарий