Помощь - Поиск - Пользователи - Календарь
Полная версия: Описание куба
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Godsmack2007
Народ помогите написать вот такую штучку - Опишите геометрический объект куб с помощью ООП
Unconnected
Может, что-то типа такого:

  type TCoor=record
x,y,z:integer;
end;
TCube=class
private
public
v:array[1..8] of TCoor;
end;


Можно было бы TCoor загнать в Private-секцию, но не получилось)
Godsmack2007
а может быть и не так?)))
Unconnected
Ну, этот класс содержит координаты вершин, к ним можно обратиться по порядковому номеру, но никто ведь не знает, что за кубы у твоего преподавателя(и что он хочет увидеть))
Lapp
Цитата(Godsmack2007 @ 16.06.2011 23:39) *
а может быть и не так?)))

Да, может.
1. В программировании любую задачу можно решить сотнями способов.
2. Мы тут тоже не боги. Не доверяешь - не приходи на форум и не спрашивай.
Godsmack2007
Unconnected ну да))
Lapp а я вообще то ничего и не говорил, просто переспросил, а вы тут сразу с какими то неопнятными наездами. Я просто очень хочу понять как делать это задание разобратся наконец с ним и все.
Lapp
Цитата(Unconnected @ 16.06.2011 23:35) *
Может, что-то типа такого:

Un, я думаю, ему нужно наследование от абстрактного объекта через геом. точку, цветную точку, точку с размером, ориентацией и к кубу - как-то так.. С методами (перемещение, поворот, окраска..)


Добавлено через 5 мин.
Цитата(Godsmack2007 @ 16.06.2011 23:51) *
Lapp а я вообще то ничего и не говорил, просто переспросил, а вы тут сразу с какими то неопнятными наездами. Я просто очень хочу понять как делать это задание разобратся наконец с ним и все.

Переспрашивают, когда не расслышали. А вопросы задавай более конкретно и по сути. Наехал потому, что не люблю, когда челу ответят, а он: а ты не врешь?
Давай на этом закроем конфликт, я рад, что ты хочешь разобраться. Просто сразу это не было заметно..
Godsmack2007
Lapp ок все закрыли) а если по делу то как вообще все реализовать мне тут вот так подкидывают идею но это только куб без ООП

Type
TKube = class
private
FX0,FY0,FZ0:Integer; // Какая-то из точек куба
FWidth:Word; // Ширина
FHeight:Word; // Высота
FDepth:Word; // Глубина
FColor:TColor; // Цвет стенок
public
// мне так захотелось, что б после создания
// куб нельзя было изменить, посему дальше свойства параметров куба, но
// только для чтения
property X0:Integer read FX0;
property Y0:Integer read FY0;
property Z0:Integer read FZ0;
property Width:Word read FWidth;
property Height:Word read FHeight;
property Depth:Word read FDepth;
// А вот цвет можно менять:
property Color:TColor read FColor write FColor;
//------------------------------------------
// нужно также придумать кучу методов:
Constructor Create(AX0,AY0,AZ0:Integer; AWidth, AHeight, ADepth:Word); // самый главный - конструктор
Destructor Destroy; Virtual; // Тоже не менее важный - дестуктор
Proceudre Draw;Virtual; // Метод - "Нарисуте меня". Пущай будет виратуальным. Вдруг потребуется на основании этого куба (в техмерном пространстве) изобразить какой-нить другой объект
Procedure Hide;Virtual; // Спрятать куб
//------------------------------------------
// Можно придумать еще как куб скажем будет перемещаться в простарнстве под действием различных сил
// но фантазия иссякает
End;




чета встрял я с этим заданием сегодня как то оно мне легким не показалось
Unconnected
Мм ну как раз это с ООП, класс ведь сделал.. только непонятно, зачем ширина, высота и глубина отдельно - в кубе они одинаковые ж. Можно сделать методы для поворота вокруг 3х осей, проходящих через центры граней..
Godsmack2007
Unconnected на этом примере пожете показать что имеете ввиду?
Unconnected
А как вообще вводится куб? Я сначала думал, что координаты всех вершин в базисе, а тут какая-то точка фигурирует, относительно которой что-то делается..
sheka
Lapp разбушевался! smile.gif

Un, нарисуй на бумажке точку и от нее любой ортогональный базис. Его положение уже должно задаваться дальше в программе.
Godsmack2007
все о чем то размышлают))) а я чета вообще ниочем)
sheka
God, ты придумай для себя что ты хочешь - и делай хоть что нибудь.
Godsmack2007
sheka - я хочу эту прогу чтоб она работала и все))) а как будет хоть как я всеравно умнее не придумаю)
IUnknown
Цитата
мне тут вот так подкидывают идею но это только куб без ООП
Это ООП, но идея неправильная. Одной точки в пространстве недостаточно для задания куба. Нужно еще что-то. Не веришь? Ну, попробуй взять карандаш, и нарисовать на листе бумаги (в клеточку, договорились) куб. Точку я тебе задам. Скажем, <10, 10, 10>. Ширина/Высота/Глубина = 15 ... Бери карандаш и начинай рисовать кубик. Для начала - оси координат, а уж потом - сами точки, соединяя которые получишь то, что тебе надо.

Что, "не выходит каменный цветок"(С)? А почему? Потому, что ты не знаешь, какая именно точка задана, и как относительно нее расположены остальные точки. А вот если я добавлю, что ребра куба параллельны осям координат, координаты всех точек - положительны, и точка <10, 10, 10> находится ближе всего к началу координат - то ты сможешь нарисовать кубик без проблем. Так что думай, какую еще информацию внести в класс, чтобы однозначно описать фигуру.

P.S. Делать задачу полностью - не буду, предупреждаю сразу. Потому что задана она тебе, а не мне. И решать ее должен ты, а не кто-то за тебя... Думай, пробуй. Что не получится - спрашивай...
Unconnected
Тремя точками можно однозначно задать (два вершины и центр, к примеру). Но я, не особо раздумывая, сделал бы задание по всем вершинам)
Godsmack2007
IUnknown как то так?

uses crt;
Type
TKube = object


X,Y,Z:Integer;
Width:Word;
Height:Word;
Depth:Word;
Color:byte;
constructor Create(mX,mY,mZ:Integer; mWidth, mHeight, mDepth:Word);
procedure print;
end;

constructor tkube.Create(mX,mY,mZ:Integer; mWidth, mHeight, mDepth:Word);
begin
x:=mx;y:=my;z:=mz;Width:=mWidth;Height:=mHeight;Depth:=mDepth;
end;

procedure tkube.print;
begin
writeln('x=',x,' y=',y,' z=',z,' width=',Width,' height=',Height,' depth=',Depth,' color=',Color);
end;

var
q:tkube;
begin
q.create(10,10,10,10,10,10);
q.color:=2;
q.print;
q.color:=5;
q.print;
readln;
end.


М
Теги!! Правила. Lapp

Lapp
Цитата(Unconnected @ 17.06.2011 18:39) *
Но я, не особо раздумывая, сделал бы задание по всем вершинам)
.. и поимел бы маааассу удовольствьица потом, вылавливая ну оооччень странные ошибки.. smile.gif
Unconnected
Цитата
и поимел бы маааассу удовольствьица потом, вылавливая ну оооччень странные ошибки..


Мм какого плана ошибки?)
Lapp
Цитата(Unconnected @ 17.06.2011 23:59) *
Мм какого плана ошибки?)
Расхождения, несоответствия. Все, что вытекает из переопределения уже определенных величин. В обычной ситуации ошибку отловить "просто или не очень". В случае хранения избыточной инфы - "ну очень непросто"..
Советую этого по возможности избегать.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.