Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как разбить класс на несколько юнитов? 
:(
    Опции темы
RYB
Дата 21.1.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 17.1.2007

Репутация: нет
Всего: нет



Пишу некоторый класс, который очень разросся: больше 1000 строчек.

Хотелось бы некоторые его методы записать в другой юнит.

Подскажите пожайлуста как это реализвать.

Это сообщение отредактировал(а) RYB - 21.1.2008, 14:28
PM MAIL WWW   Вверх
Alexeis
Дата 21.1.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(RYB @  21.1.2008,  13:27 Найти цитируемый пост)
Пишу некоторый класс, который очень разросся: больше 1000 строчек. 

  Ну на 1000 можно еще потерпеть, если знать волшебные клавиши ctrl + shift + вверх/вниз .

Труднее после 2000 строк. А вообще, классы лучше делать более узкоспециализированными, так будет проще отлаживать и вспоминать чего там к чему, потому что огромный класс это уже не ООП, а процедурное программирование, где все процедуры запихнули в класс smile .


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Felan
Дата 21.1.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: 2
Всего: 7



Делать инклюды - имхо извращение.
НАчиная с 2006, кажется, в Turbe точно есть, появились т.н. класс-хелперы. Немного не та идея в основе лежит, но суть можно для разбития использовать.

А вообще-то размер модуля имеет малое значение, если знать упомянутые волшебные кнопки... Хотя конечно лучше как-то по другому проектировать smile


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 21.1.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(Felan @  21.1.2008,  14:21 Найти цитируемый пост)
НАчиная с 2006, кажется, в Turbe точно есть, появились т.н. класс-хелперы. 

  Есть, но у таких хелперов очень серьезные ограничения. Там можно добавлять только методы, притом не виртуальные.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Felan
Дата 21.1.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: 2
Всего: 7



Ааа, ну может быть. Я в подробностях не разбирался...
Ну тогда только инклюды остаются... Как C# partial классов в Делфи нет.

Хотя, я честно говоря, и не могу придумать, зачем они нужны...

Если бы автор сказал, зачем ему это надо, может чего другое посоветовал бы...

Это сообщение отредактировал(а) Felan - 21.1.2008, 17:05


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
Snowy
Дата 22.1.2008, 14:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Если уж очень хочется разбить на несколько модулей, то юзаем элементарное наследование.
В одном модуле часть реализовали, в другом пронаследовали, дописали методы, в третьем пронаследовали второй, ещё дописали... И т.д., пока не надоест.
PM MAIL   Вверх
Alexeis
Дата 22.1.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



  А по современным тенденциям принято использовать даже не наследование, а композицию. т.е. разделять один универсальный объект на группу специализированных объектов. Есть объект контейнер, который владеет группой объектов. Вот эта группа объектов и производит главное действие. Такой подход более гибок и эффективен. 
  Посмотрите например как реализован объект TImage, memo, даже TBitmap. Композиция объектов позволяет решать различные задачи не влезая в реализацию объекта. Даже такое "мягкое" влезание, как наследование может угробить стабильно работавшего предка. Намного безопаснее изменить маленький объект решающий узкую функцию, чем монстра у которого один метод может вызываться в десятках различных случаев.
  
  


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.