Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
ВнизКак правильно расчленить большой проект на классы и модули ? Найти похожие ветки
← →
АскЮ (2005-08-03 02:18) [0]Дайте несколько полезных советов ?
← →
Eraser © (2005-08-03 02:22) [1]АскЮ (03.08.05 02:18)
Ну здесь всё очевидно по-моему.
Модуль должен состоять из сходных по функциональности классов и/или классов "родственников".
← →
Джо © (2005-08-03 02:22) [2]На классы не "членят". Классы проектируют, а затем кодируют. Нарезать на модули - Copy/Paste.
---
Что тут можно посоветовать всерьез? Разве что почитать какую-нибудь хорошую книгу по рефакторингу. Например, М. Фаулер. Рефакторинг. Ну, или подобные.
← →
АскЮ (2005-08-03 02:25) [3]
> Eraser © (03.08.05 02:22) [1]
> АскЮ (03.08.05 02:18)
>
> Ну здесь всё очевидно по-моему.
> Модуль должен состоять из сходных по функциональности классов
> и/или классов "родственников".
Так и есть. Модуль состоит из 10000 строк с одни единственным классом TGame.
Как членить то ?
← →
Eraser © (2005-08-03 02:28) [4]АскЮ (03.08.05 02:18)
+ важное замечание! если проект очень большой, то желательно ещё соблюдать иерархию модулей. Т.е. что-то типа этого:
CommonObjects
/ \
Buttons .........
/ \ /\
ImgBtns SpeedBtns ... ....
___
пример убогий, но думаю понятен.
← →
Eraser © (2005-08-03 02:29) [5]АскЮ (03.08.05 02:25) [3]
Как членить то ?
Зачем?
← →
АскЮ (2005-08-03 02:39) [6]
> Eraser © (03.08.05 02:28) [4]
> АскЮ (03.08.05 02:18)
>
> + важное замечание! если проект очень большой, то желательно
> ещё соблюдать иерархию модулей.
В об этом я в общем и спрашиваю. А как её соблюдать ? Ведь всё же связано. Герой с уровнем, уровеь с героем. Требуются взаимообращения к данным и функциям друг друга.
← →
Eraser © (2005-08-03 02:46) [7]АскЮ (03.08.05 02:39) [6]
Ведь всё же связано. Герой с уровнем, уровеь с героем.
Это ничего страшного. Лишь бы не было "церкулирующих" (пересикающихся) ссылок, при которых проект просто не откомпилируется.
А иерархия простая. Допустим есть модуль с базовым классом Герой. В другом модуле можно разместить классы с разновидностями героев, которые унаследованы от Героя.
Что именно вызывает затруднение?
← →
АскЮ (2005-08-03 02:59) [8]
> Eraser © (03.08.05 02:46) [7]
> АскЮ (03.08.05 02:39) [6]
> Ведь всё же связано. Герой с уровнем, уровеь с героем.
>
> Это ничего страшного. Лишь бы не было "церкулирующих" (пересикающихся)
> ссылок, при которых проект просто не откомпилируется.
> А иерархия простая. Допустим есть модуль с базовым классом
> Герой. В другом модуле можно разместить классы с разновидностями
> героев, которые унаследованы от Героя.
> Что именно вызывает затруднение?
То, что два класса Герой и Уровень обращаются к данным и методам друг друга. И мне это не нравится.
← →
ЮЮ © (2005-08-03 03:16) [9]>два класса Герой и Уровень обращаются к данным и методам друг друга
И причем к приватным. Вот этого и избежишь, разнеся их в разные модули. А доступны останутся тлько public свойств и методы, т.е. только те методы и св-во, которые ты проектировал открытыми для других классов.
← →
АскЮ (2005-08-03 03:59) [10]
> ЮЮ © (03.08.05 03:16) [9]
А что такое protected ?
← →
Джо © (2005-08-03 04:12) [11]
> [10] АскЮ (03.08.05 03:59)
> А что такое protected ?
Члены класса, определенные в секции protected, видны отовсюду в модуле, в котором расположен класс; а также из всех его наследников, в независимости от того, в каком модуле они объявлены.
См. Private, protected, and public members в Справке.
← →
Defunct © (2005-08-03 04:15) [12]АскЮ (03.08.05 03:59) [10]
protected - секция, которая обеспечивает область видимости ее содержимого для всех наследников этого класса, независимо от того в каком модуле описан наследник.
private - видимость только в пределах одного модуля.
public - во всех модулях.
published = public + видимость в object inspector"e.
← →
АскЮ (2005-08-03 05:41) [13]Всё равно не удобно, когда два класса друг на друга завязаны. Получается этих героев от уровня отключить так просто нельзя, чтобы, скажем, сделать гонки.
← →
Джо © (2005-08-03 05:50) [14]
> [13] АскЮ (03.08.05 05:41)
Можно встречный вопрос? На какую, так сказать, помощь ты расчитываешь? Судя по предыдущим постам - тебя устроит только такой вариант, при котором найдется добрая душа, взявшая твой проект в 10000 строк и переписавшая его в исключительно красивом ООПном стиле. Продемонстрировав, тем самым, преимущества ООП и силу рефакторинга...
Или я ошибаюсь?
← →
evvcom © (2005-08-03 09:29) [15]
> когда два класса друг на друга завязаны.
Нормально. Базовые друг на друга вяжи и в один модуль их. А наследники ничего не должны знать о своих братьях и сестрах. Они должны перекрыть только то, что задумано в родителе.
← →
Думкин © (2005-08-03 09:35) [16]Проблема не в лекции. Проблема в понимании. его пока не видно.
Если афтар сам не знает чего хочет - как ему помочь?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c