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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> классы,работа с геометрическими объектами., С++
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
дык вот....я даже не знаю с чего начать...
Начни с построения иерархии с "заглушками" - пустыми методами, или методами, только печатающими, какие действия они должны производить:


#include "iostream.h"

// Базовый класс для всех фигур, чтобы были возможны, например,
// операции сравнения площади в любых вариантах
class TFigure {

public:
  TFigure(const char *s = ""): name(s) {
    cout << name << " created ..." << endl;
  }

  // чисто виртуальный метод, вычисление площади, 
  // будет переопределяться в каждом производном классе
  virtual double getS() const = 0;

protected:
  // Название фигуры
  const char *name;

};

// Определяем класс - наследник от TFigure
class TTriangle: public TFigure {
public:

  // Конструктор... В процессе работы над программой тебе придется
  // добавить сюда еще несколько параметров, гарантирующих однозначное
  // определение треугольника на плоскости (например, координаты 3-х точек),
  // но для начала - "пустышка"
  TTriangle() : TFigure("triangle") {
  }

  // Переопределение метода расчета площади
  // (если этого не сделать, то нельзя будет создать экземпляр класса TTriangle,
  // т.к. считается, что он содержит неперекрытую ЧИСТО виртуальную функцию)
  double getS() const {
    return 10.0;  // Для простоты будем считать, что ВСЕ треугольники имеют площадь = 10
  }

};

class TQuadrate: public TFigure {
public:

  // Аналогично, добавить в конструктор необходимые параметры
  // для задания квадрата на плоскости
  TQuadrate() : TFigure("square") {
  }

  double getS() const {
    return 12.0;
  }

};

// Сравнение площадей двух фигур... Возможны любые комбинации, главное,
// чтобы T1 и T2 были потомками (в любом "поколении") TFigure
int Compare(const TFigure &T1, const TFigure &T2) {

  // Благодаря виртуальным функциям, вызываются методы getS именно тех классов,
  // экземпляры которых переданы как фактические параметры в функцию
  return (T1.getS() < T2.getS()) ? -1 : 1;
}


// Основная программа пока умеет немного - только задать один или несколько экземпляров
// одного из вышеопределенных классов ...
int main() {

  TTriangle T1;
  // ... напечатать площадь этого объекта ...
  cout << T1.getS() << endl;

  TQuadrate T2;
  cout << T2.getS() << endl;

  // ... и вывести результат сравнения плохадей в одном порядке ...
  cout << Compare(T1, T2) << endl;
  // ... и в другом тоже (знаки результатов должны быть противоположными)
  cout << Compare(T2, T1) << endl;

  return 0;

}

Теперь у тебя есть "основа" программы, и ты можешь добавлять в нее все необходимые функции... Маленький совет: не добавляй все сразу - ни к чему хорошему это не приведет... Например, добавь инициализацию треугольника тремя точками, отработай программу, проверь, что все в порядке, только потом добавляй инициализацию квадрата...

Можешь изменить Compare так, чтобы при одинаковых площадях возвращался 0...

Что не будет получаться - пиши smile.gif

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

Сообщений в этой теме
Tribunal   классы,работа с геометрическими объектами.   18.11.2006 16:33
Алена   Начни с построения иерархии с "заглушками…   18.11.2006 21:33
Tribunal   а вот вопросик возник. когда создаю фигуру,ее созд…   18.11.2006 22:01
Алена   Есть, конечно... Что же ты хочешь передавать 6 раз…   18.11.2006 23:09
Tribunal   вот попыталась сделать конструктор... я хочу,чтобы…   19.11.2006 10:59
Tribunal   вот то,что у меня получилось. я не очень разобрала…   19.11.2006 12:29
Алена   1) ты забыла одну закрывающую скобку (завершающую …   20.11.2006 4:35
Tribunal   воть...теперь он еще и на ввод-вывод ругается в не…   20.11.2006 16:01
Алена   Смотри, как я переделала классы... Твоя программа …   20.11.2006 17:51
Tribunal   огромное спасибо!!! :) :) сейчас со вс…   20.11.2006 18:19
best place to buy generic cialis   Levitra Nitric Oxide   31.10.2021 8:26
volvo   Ориентированная площадь вычисляется в 3 строки: …   20.11.2006 19:06
Tribunal   а я с площадью сама разобралась!=) но всё равн…   22.11.2006 18:45
Tribunal   в этой программе мне нужно задействовать дружестве…   2.12.2006 11:08
Tribunal   не могу я понять смысл дружестенных функций...поэт…   4.12.2006 20:02
volvo   Дружественная функция? Как бы объяснить... Ага...…   4.12.2006 22:12
Tribunal   аха...вроде понятно...спасибо большое!=) а не …   4.12.2006 23:07
Tribunal   а если использовать этот алгоритм для проверки пер…   7.12.2006 20:33
volvo   Точка - она и в Африке точка, так что будет работа…   7.12.2006 20:47
hydroxychloroquine for sale amaz   What Is Cephalexin For   18.09.2021 2:12
Tribunal   в общем я решила сравнивать координаты максимумов …   9.12.2006 20:42
Tribunal   изменила код выше   10.12.2006 22:49
Tribunal   воть....как думаете по какой причине можт IsInters…   17.12.2006 16:47
volvo   Приведи пример ввода, на котором выдаются неправил…   17.12.2006 17:10
Tribunal   например, треугольник 0 0 0 5 5 0 прямоугольник 1 …   17.12.2006 20:01
Tribunal   не помогло даже добавление вроде как необходимого …   17.12.2006 20:38
Tribunal   всё)сообразила..всё дело было в типах   18.12.2006 21:01
Гость   Это задача из учебника Павловской "Объектно-о…   25.12.2006 12:01
Гость   Это задача из учебника Павловской "Объектно-…   30.11.2007 15:44
Начинающей программер   Извините, а ктонибудь не может немного переписать …   28.01.2007 22:22
volvo   Показывай, КАК именно пробовал делать (что, куда и…   28.01.2007 22:28
Гость   Я использовал последний пример от Tribunal. Так во…   29.01.2007 4:48
volvo   Я, кстати, только что заметил ошибку в твоих рассу…   29.01.2007 4:59
программер начинающий   т.е. мне надо написать в ф-ии main: new *T1, *T2; …   29.01.2007 21:03
gabriella   Your writings and news are really interesting to m…   12.04.2022 10:23
nishaknapp   Why not settling on games that is fun and at the s…   29.07.2022 17:07
gabriella   I appreciate you spending some time and effort to …   1.08.2022 9:35


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

 



- Текстовая версия 15.04.2025 2:22
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name