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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> На обьекты
gauss
сообщение 28.06.2005 20:30
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

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


Создасть класс TFigure с виртуальной функцией площадь, на его основе создать прямоугольник, круг, шестиугольник. А на их основе создать Паралелепипед, шар, и 6-угольную призму. Определить функцию нахождения площадей этих фигур.

Плиззз помогите!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 28.06.2005 20:39
Сообщение #2


Гость






Ну, в чем проблемы?
Type
TFigure = object
constructor init;
function s: real; virtual;
end;
{ и определяешь всех потомков: }
TRectangle = object(TFigure)
_a, _b: real;

constructor init(a, b: real);
function s: real; virtual;
end;
{ и так далее }

Или ты с объектами не умеешь работать? Тогда тебе для начала сюда:
FAQ: ООП. Объектно-ориентированное программирование
 К началу страницы 
+ Ответить 
gauss
сообщение 28.06.2005 21:18
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

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


Я не пойму, как дальше описать все методы и чтобы он вычислял площадь. В примерах там только begin end. =( А там наверное еще и inherited надо использовать?
Volvo, не мог бы хотябы на одном примерчике с прямоугольником показать саму программу. Заранее спасибо.
Извиняюсь за ламерство, все учатся :yessss:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.06.2005 21:28
Сообщение #4


Гость






Описание объектов - смотри выше...
Сами методы:
Constructor TFigure.Init;
Begin { только для корректной инициализации VMT } End;
Function TFigure.s: Real;
Begin s := 0; End; { Абстрактная функция }

Constructor TRectangle.Init(a, b: Real);
Begin
Inherited Init; { инициализация предка }
_a := a; _b := b;
End;
Function TRectangle.s: Real;
Begin s := _a*_b End;

{ Теперь если сделать так... }
Function Get_S(Var Obj: TFigure): Real;
Begin
Get_S := Obj.s;
End;

Var
myObj: TRectangle;
Begin
myObj.Init(2, 3); { <--- Исправлено }
Writeln(Get_S(myObj));
End.

... то будет вызвана функция S для TRectangle ... :yes:

Добавлено: Смотри исправление, я сразу немного неправильно написал ;)

Сообщение отредактировано: volvo - 28.06.2005 21:45
 К началу страницы 
+ Ответить 
gauss
сообщение 28.06.2005 21:47
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Мужской

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


Спасибо большое, дальше все сам сделаю smile.gif
Главное с пропасти столкнуть, а крылья сами вырастут (с) Чернышевский
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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