Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 14:07   #1
Vampirius
Пользователь
 
Аватар для Vampirius
 
Регистрация: 25.09.2009
Сообщений: 22
По умолчанию Класс в Delphi

Подскажите как создать класс Рациональная Дробь в среде Delphi со всеми возможными действиями над ними
Лишь утратив всё до конца, мы обретаем свободу...©
Vampirius вне форума Ответить с цитированием
Старый 14.04.2010, 14:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если интересует в принципе теория о создании класса то вот неплохая статья
http://www.rsdn.ru/article/Delphi/makecomponents.xml
Здесь речь идет о компонентах - но они такие же классы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2010, 14:40   #3
Vampirius
Пользователь
 
Аватар для Vampirius
 
Регистрация: 25.09.2009
Сообщений: 22
По умолчанию

Интересует создание класса на примере рациональной дроби.
Статью посмотрел. Доходчиво написано.

А кто является родительским классом для рациональных дробей и как обозначить свойства и действия над ними?

Без классов задача решается достаточно просто, а вот с ними уже хуже.
Лишь утратив всё до конца, мы обретаем свободу...©
Vampirius вне форума Ответить с цитированием
Старый 14.04.2010, 15:00   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А кто является родительским классом для рациональных дробей
Та можешь смело TComponent брать.
Цитата:
как обозначить свойства
Всмысле обозначить? Описать? - через Property
http://www.delphisources.ru/pages/fa...perty.php.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2010, 15:15   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Vampirius Посмотреть сообщение
А кто является родительским классом для рациональных дробей и как обозначить свойства и действия над ними?
Родоначальником всех классов (и TComponent'a) является TObject. Если Ваш класс не собирается рисоваться на форме, отображаться и печататься где-то еще, то можно и от TObject'a унаследоваться.

Цитата:
Без классов задача решается достаточно просто, а вот с ними уже хуже.
Это дело привычки.
Код:
type
     TDrob = class      // Эквивалентно drob = class (TObject)
         pivate
              m: Integer;   // Числитель дроби
              n: Integer;    // Знаменатель
         public
              constructor Create;
              destructor Destroy;
              procedure Set (Zisitel, Znamenatel: Integer);
              function GetZislitel(): Integer;
              function GetZnamenatel(): Integer;
              procedure Add (Zislitel, Znamenatel): Integer;
    end;
Вот объявление для примера. Распишите методы и продолжите вычитание, умножение и деление.

Сразу скажу, что конечно можно создать и методы для работы с TDrob - то есть допустим задать сложение так: Procedure Add (Value: TDrob); но я бы не советовал. Этим заниматься должны (по идеи) структуры более высокого порядка, например массивы дробей и т.д.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 14.04.2010 в 15:23.
Utkin вне форума Ответить с цитированием
Старый 14.04.2010, 16:24   #6
Vampirius
Пользователь
 
Аватар для Vampirius
 
Регистрация: 25.09.2009
Сообщений: 22
По умолчанию

Выдаёт declaration of class tform1 is missing or incorrect
Посмотрел в интернете об ошибке. Говорят нужно создавать консольное приложение. А работу надо выполнить в объектном.
В чём ошибка?
Лишь утратив всё до конца, мы обретаем свободу...©
Vampirius вне форума Ответить с цитированием
Старый 14.04.2010, 16:30   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ошибка в том, что это только пример объявления класса. А к нему еще требуются сами методы:
Код:
constructor TDrob.Create;
begin
end;

destructor TDrob.Destroy;
begin
end;
ну и т.д. TDrob здесь говорит о том, что этот метод принадлежит именно этому классу (в юните может быть огромная куча классов и просто функций и процедур).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.04.2010, 16:36   #8
Vampirius
Пользователь
 
Аватар для Vampirius
 
Регистрация: 25.09.2009
Сообщений: 22
По умолчанию

Как я понял в деструктор можно записывать процедуры а вот чем наполнить конструктор?
Лишь утратив всё до конца, мы обретаем свободу...©
Vampirius вне форума Ответить с цитированием
Старый 14.04.2010, 16:56   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Тем же. Конструктор нужен для подготовки экземпляра класса к работе. Самый простой вариант это инициализация Ваших полей (в качестве которых тоже могут выступать экземпляры классов, например TStringList).
В Вашем случае можно написать так:
Код:
constructor TDrob.Create;
begin
      Inherited Create;   // Здесь Вы вызываете конструктор предка, в нашем случае это TObject
      m:=0;
      n:=1;
end;
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.04.2010, 17:12   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а вот чем наполнить конструктор?
А можешь вообще егоне наполнять.
Просто сделай пустой.
Доверяй делфи - после того как описал все нужные методы класса, стань на них и нажми CTRL+SHIFT+C и пусть само создаст из тела.
А там наполняй сколько хочешь и чем хочешь
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КЛАСС 4ika Общие вопросы C/C++ 1 16.03.2010 21:32
C++ . Класс Ануар56 Помощь студентам 8 23.04.2009 19:41
Собственный класс диалогового окна на чистом WinApi в Delphi Iber Win Api 19 01.12.2008 15:40
Класс Юлёк Фриланс 6 15.06.2008 15:00