![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
saneea |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Пишу курсовой, и будет у меня там много стеков работающих с разными типами. Можно конечно каждый отдельно описать, но за такое "по головке никто не погладит". Вот я и думаю, как это грамотно организовать. Помогите пожалста с примерчиком и проясните как это называеться: полиморфизм или абстракция?
|
|||
|
||||
saneea |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
У меня вот есть одна догадка:
Но мне кажеться что это не совсем грамотно... хочу полиморфизм... ![]() |
|||
|
||||
MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
saneea, а почему это не является грамотным то ?=) Вроде бы всё нормально, и не прийдётся ни классы описывать, ни методы, и при этом для разных типов разные.
-------------------- MaXL |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
||||
|
||||
MaXL |
|
||||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
volvo877, мне почему то кажется, что в этом предложении именно говориться, что будет несколько стэков, которые и будут хранить разные типы данных, т.е. один для строк, другой для чисел, третий ещё для чего-нибудь там. А в вашем примере о том, что либо стэк, либо о том, что кривой код, либо о том, что стэк должен сам из '10' преобразовать в 10. Т.е. мы ведь знаем, какой стэк используем(т.е. для каких данных он создан), таким и пользуемся:
-------------------- MaXL |
||||
|
|||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
А если ты соизволишь прочитать внимательно, то увидишь, что я имел в виду: грамотно построенный стек должен выдать ошибку на том примере, который я привел, а не выполнять его, поскольку стек должен хранить ИЛИ строки, ИЛИ целые, но никак не одно и другое вместе!
|
|||
|
||||
saneea |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Да, именно так. Хочу сделать один базовый класс для всех типов данных, а от него родить ещё к примеру один класс для целых, а другой для строк. Просто очень хочеться это сделать грамотно... Помогите пожааалста... Это сообщение отредактировал(а) saneea - 22.4.2008, 15:38 |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
saneea, тогда в базовом классе стека храни указатели на данные, а в наследниках только приводи к нужному тебе типу.
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
volvo877, ну так я и говорю, что если создать стэк, в котором будут только числа к примеру, и если мы попытаемся туда запихать строку, то это просто кривой код будет...
-------------------- MaXL |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
Это возможности простого стека, а не ГРАМОТНОГО, пойми ты это!!! Вообще-то Стек должен в Compile-Time предотвращать попытки занесения "чужого" типа. Почему ты не описываешь всегда у процедур/функций, которыми пользуешься, бестиповые параметры? Ты ж и так знаешь, что передавать, а? И не ошибаешься никогда, верно? Так передавай в бестиповый, а внутри уже приводи к тому типу, что тебе нужен. Ан нет, тебе, как видно, удобнее, чтобы происходила доп. проверка на совместимость типа, что ж ты тут-то советуешь неизвестно что?
|
|||
|
||||
saneea |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
А можно пример? А то я не совсем понимаю как привести к нужному типу... |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
saneea, ты PM читал?
|
|||
|
||||
saneea |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Что такое РМ? |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
Личное сообщение, у тебя есть ссылка вверху страницы "... новых писем"
|
|||
|
||||
MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
volvo877, я просто говорю, что в данном случае проще пользоваться именно такой структурой.
saneea, выложишь потом код, с реализацией всех этих стэков и мы сравним. -------------------- MaXL |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |