IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> классы,работа с геометрическими объектами., С++
Tribunal
сообщение 18.11.2006 12:33
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


Задание следующее:
Написать программу,демонстрирующую работу с объектами двух типов Т1 и Т2,для чего создать систему соответствующих классов. Каждый объект должен иметь идентификатор(в виде произвольной строки символов) и одно или несколько полей для хранения состояния (текущего значения) объекта.
Клиенту(ф-ии main) должны быть доступны следующеие основные операции(методы):создать объект,удалить объект,показать значение объекта и прочие дополнительные операции,которые будут указаны ниже.Операции по созданию и удалению объектов инкапсулировать в классе Factory.Предусмотреть место,позволяющее продемонстрировать заданные операции.
При необходимости в разрабатываемые классы добавляются дополнительные методы(например,конструктор копирования,операция присваивания и тп)для обеспечения надлежащего функционирования этих классов.

Типы объектов
Класс \ Объект
-------------------------------------------------
Triangle \ Треугольник
Quadrate \ Квадрат
Rectangle \ Прямоуголник
Tetragon \ Четырёхуголник
Pentagon Пятиугольник

Перечень дополнительных операций
Операция(метод) \ Описание
-------------------------------------------------------------
Move() \ Переместить объект на плоскости
Compare(T& ob1,T& ob2) \ Сравнить объект 1 и 2 по площади
IsIntersect(T& ob1,T& ob2) \ Определить факт пересечения объектов 1,2(есть\нет)
IsInclude(T& ob1,T& ob2) \ Определить факт включения объекта 2 в объект 1.

T1 \ T2 \ Операция(Метод)
----------------------------------------------
Triangle \ Pentagon \ Move(),Compare(T&,T&)



дык вот....я даже не знаю с чего начать...
помогите,пожалуйста.


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Алена
сообщение 18.11.2006 19:09
Сообщение #2


Гость






Цитата
есть ли смысл делать структуру ,скажем,ВЕРШИНА для определения координат...
Есть, конечно... Что же ты хочешь передавать 6 разрозненных координат вместо трех пар? Лучше сделать структуру... Тем более, что используя эту структуру, будет проще, например, определить расстояние между точками... Каждая структура/класс должна заниматься своим делом, а не так, что один класс делает практически все, а остальные - просто для красоты...

Цитата
и где ее прописывать...за пределами класса или внутри
А вот это зависит от того, будет ли твоя структура (TPoint, например) использоваться только в TFigure и наследниках, или планируется ее использование также и в других классах (которые никак не связаны с TFigure)? Если толко для вот этих типов фигур - тогда имеет смысл объявить внутри TFigure (как базового класса):


public: // В секции public, потому что нам понадобится доступ и "снаружи"
struct TPoint {
// Конструктор по умолчанию...
TPoint(int px = 0, int py = 0): x(px), y(py) {
}

int x, y;
};


Это даст тебе возможность сделать, например, так:
class TTriangle: public TFigure {

private:
TPoint *pts; // указатель на массив TPoint, для хранения вершин

public:

TTriangle(TPoint p1, TPoint p2, TPoint p3) :
TFigure("triangle") {

pts = new TPoint[3]; // берем память под массив
... // и заполняем массив вершинами

}
~TTriangle() {
delete [] pts; // не забываем удалять массив
}

double getS() const {
return 10.0;
}

};
, а в main() делать так:

...
TTriangle T1(
TFigure::TPoint(1, 1),
TFigure::TPoint(3, 3),
TFigure::TPoint(5, 5)
);
cout << T1.getS() << endl;
...


Кстати, заметь, что если TPoint описывается внутри класса TFigure, то нужно указывать его области видимости ( TFigure:: ) для того, чтобы компилятор понял, о чем идет речь... Если же ты определить TPoint снаружи - то этого делать будет не нужно... Внутри классов, унаследованных от базового область видимости указывать не нужно...

Сообщение отредактировано: Алена - 18.11.2006 19:11
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Tribunal   классы,работа с геометрическими объектами.   18.11.2006 12:33
Алена   Начни с построения иерархии с "заглушками...   18.11.2006 17:33
Tribunal   а вот вопросик возник. когда создаю фигуру,ее созд...   18.11.2006 18:01
Алена   Есть, конечно... Что же ты хочешь передавать 6 раз...   18.11.2006 19:09
Tribunal   вот попыталась сделать конструктор... я хочу,чтобы...   19.11.2006 6:59
Tribunal   вот то,что у меня получилось. я не очень разобрала...   19.11.2006 8:29
Алена   1) ты забыла одну закрывающую скобку (завершающую ...   20.11.2006 0:35
Tribunal   воть...теперь он еще и на ввод-вывод ругается в не...   20.11.2006 12:01
Алена   Смотри, как я переделала классы... Твоя программа ...   20.11.2006 13:51
Tribunal   огромное спасибо!!! :) :) сейчас со вс...   20.11.2006 14:19
volvo   Ориентированная площадь вычисляется в 3 строки: ...   20.11.2006 15:06
Tribunal   а я с площадью сама разобралась!=) но всё равн...   22.11.2006 14:45
Tribunal   в этой программе мне нужно задействовать дружестве...   2.12.2006 7:08
Tribunal   не могу я понять смысл дружестенных функций...поэт...   4.12.2006 16:02
volvo   Дружественная функция? Как бы объяснить... Ага......   4.12.2006 18:12
Tribunal   аха...вроде понятно...спасибо большое!=) а не ...   4.12.2006 19:07
Tribunal   а если использовать этот алгоритм для проверки пер...   7.12.2006 16:33
volvo   Точка - она и в Африке точка, так что будет работа...   7.12.2006 16:47
Tribunal   в общем я решила сравнивать координаты максимумов ...   9.12.2006 16:42
Tribunal   изменила код выше   10.12.2006 18:49
Tribunal   воть....как думаете по какой причине можт IsInters...   17.12.2006 12:47
volvo   Приведи пример ввода, на котором выдаются неправил...   17.12.2006 13:10
Tribunal   например, треугольник 0 0 0 5 5 0 прямоугольник 1 ...   17.12.2006 16:01
Tribunal   не помогло даже добавление вроде как необходимого ...   17.12.2006 16:38
Tribunal   всё)сообразила..всё дело было в типах   18.12.2006 17:01
Гость   Это задача из учебника Павловской "Объектно-о...   25.12.2006 8:01
Гость   Это задача из учебника Павловской "Объектно-...   30.11.2007 11:44
Начинающей программер   Извините, а ктонибудь не может немного переписать ...   28.01.2007 18:22
volvo   Показывай, КАК именно пробовал делать (что, куда и...   28.01.2007 18:28
Гость   Я использовал последний пример от Tribunal. Так во...   29.01.2007 0:48
volvo   Я, кстати, только что заметил ошибку в твоих рассу...   29.01.2007 0:59
программер начинающий   т.е. мне надо написать в ф-ии main: new *T1, *T2; ...   29.01.2007 17:03


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 10:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"