|
|
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Привет! Такой вопрос - если следуя правилам ООП проектировать программу как объектную модель, програмно описывая только взаимодействия между объектами, то выходит что нужно сразу все объекты объявлять/инициализировать, иначе я не вижу как это привязывать к меню. В меню выкладываются как бы определенные действия между объектами, а значит они к тому моменту должны быть. А каждый объект - это минимум одна бд. А если их больше? А если объектов не 3-4 а 10-20? Такая программа сразу будет тупо занимать кучу места в оперативе... Как же быть? Создавать на каждый пункт в меню метод в оАрр, который будет предварительно "поднимать" нужные объекты? спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2008, 16:14 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
CTAC-KO...если следуя правилам ООП проектировать программу ... А кто сказал, ООП единственно верный подход? Всегда использовал дикую смесь разных подходов при проектировании каждого приложения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2008, 16:36 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Все теории красивы только в теории ООП, реляционные БД и т.д. Когда дело доходит до практики, то разработчик сам ищет компромис между соблюдением теории, производительностью приложения, объемом и читабельностью кода, возможностью дальнейшего развития. В различных ситуациях одни и теже критерии имеют различную значимость. Какой компромис выберешь ты - зависит только от твоего опыта и пока сам не попробуешь все не поймешь что лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2008, 17:53 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> Такой вопрос - если следуя правилам ООП проектировать программу как > объектную модель, програмно описывая только взаимодействия между > объектами, то выходит что нужно сразу все объекты > объявлять/инициализировать, иначе я не вижу как это привязывать к меню. Не могу найти определение ООП, но на сколько я помню из теории (давненько дело было), то объектная модель подразумевает под собой, как ты сказал, описание моделей объектов и их взаимодействий. Нигде не сказано, что объекты ДОЛЖНЫ быть созданы при инициализации приложения. В описании ведущего объекта при необходимости делай проверку на присутствии ведомого и создавай его в ведущем объекте (чем тебе не описание взаимодействия объектов???). Если рассматривать ООП как абстрагированное описание модели реального мира, то ты, как объект реального мира, когда хочешь пить чай идешь на кухню открываешь кран и льешь воду в чайник, который включаешь и кипятишь эту воду. В моделях это выглядит как создать объект вода, связать с объектом чайник, который своими методами изменяет свойства объекта вода (в частности температуру). Таким образом видим, что создание и инициализация объекта вода происходит когда ты, как объект, создаешь экзэмпляр класса вода, а не в момент своего рождения (запуска своей программы). Надеюсь никого не запутал и сам не запутался :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 05:46 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
немного из теории автор 1. Почему необходим переход к ООП и какие преимущества дает применение ООП. Visual FoxPro поддерживает как стандартное процедурное программирование, так и мощное и гибкое объектно-ориентированное программирование. Объектно-ориентированный разработка и объектно-ориентированное программирование являются более современными и прогрессивными по сравнению со стандартным процедурным программированием. Вместо того, чтобы думать о программе как о процессе последовательного выполнения строк кода, теперь надо думать о создании объектов. В Visual FoxPro можно создавать объекты и манипулировать ими как самостоятельными компонентами. К преимуществам ООП можно отнести большую надежность кода, более легкое понимание разработчиками процессов, более простое сопровождение визуальных классов ( поиск ошибок и доработка). В результате этого: - повышается производительность труда программистов и снижаются трудозатраты; - повышается надежность программ. ООП в Visual FoxPro предусматривает создание библиотек визуальных классов, на основании которой ведется разработка клиентской части ПО. Все участники процесса разработки ПО мыслят одними категориями. Термины класс и объект лежат в основе всех этапов. Трансляция понятий не нужна, потери отсутствуют. 2. Что такое ООП. Название "Объектно-ориентированное программирование" говорит само за себя. Центром внимания ООП является объект. Несмотря на то, что в различных источниках делается акцент на те или иные особенности внедрения и применения ООП, 3 основных (базовых) понятия ООП остаются неизменными. К ним относятся: - Наследование (Inheritance) ; - Инкапсуляция (Encapsulation) ; - Полиморфизм (Polymorphism). Эти понятия лежат в основе мира ООП Абстракция данных Объекты представляют собою неполную информацию о реальных сущностях предметной области. Их модели адекватны решаемой задаче, работать с ними намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта. Наследование Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Наследование призвано отобразить такое свойство реального мира, как иерархичность. Полиморфизм Полиморфизмом называют явление, при котором классы-потомки могут изменять реализацию метода класса-предка, сохраняя его сигнатуру (таким образом, сохраняя неизменным интерфейс класса-предка). Это позволяет обрабатывать объекты классов-потомков как однотипные объекты, не смотря на то, что реализация методов у них может различаться. Инкапсуляция Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейс (т. е. список декларируемых свойств и методов) класса и не вникать в его внутреннюю реализацию. Этот принцип (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов. автор А кто сказал, ООП 2 Sergey Ch, чаще всего выглядит по-лучше, чем километры процедурного безумия 2 CTAC-KO если есть интерес, то начнем с малого и постепенно... жду ответа, в котором будет высказана заинтересованность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 09:50 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 CTAC-KO Вкратце. Если из меню требуется обратится к объекту, то в опции SKIP FOR пункта меню делается проверка на факт существования объекта. Как следствие, если объект не существует, то пункт меню просто блокируется. Ну, например, если пункт меню выполняет некие действия с активной, в данный момент формой, то можно сделать такую проверку Код: plaintext Могут быть и другие варианты, но общий принцип сохраняется: предварительно всегда проверяется факт существования объекта и только если он есть, запускается некий его метод или производится манипуляция с его свойствами. Например, попробуйте открывать стандартный пункт меню Edit. Увидите, что пункт "Copy" становится доступен только тогда, когда есть предмет копирования. Если копировать невозможно в принципе, то данный пункт просто не доступен. Кроме того, в FoxPro широко используется контекстно-зависимое меню. Т.е. некоторые Bar-пункты создаются только в случае существования определенных объектов. Создание объекта создает пункт меню. Удаление объекта удаляет пункт меню. Например, если активно окно проекта (PJX), то можно видеть что в основной линейке меню появляется пункт Project. Если увести фокус из окна проекта, например, в командное окно, то пункт Project пропадает. 2 прошелмимо Александр, Вы не первый раз приводите эту цитату, и я не первый раз поражаюсь, насколько Вы это делаете не к месту. Вопрос-то о чем был? И при чем здесь то, что написано в цитате? Кроме того, данная цитата - это яркий образец того, как не надо писать объяснения. Слишком сильно это напоминает банальную рекламу. Убедительные интонации при нулевой доказательности. Объяснение одних непонятных терминов через другие непонятные термины. Объяснение, которое ничего не объясняет, но делает вид, что что-то объяснили, а я такой не образованный, что ничего не понял... Только пожалуйста, не надо опять воспринимать это так, как будто я против ООП. В данном случае, я против формы ответа. Бестолково и не по существу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 12:17 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ вот как раз здесь про меню автору и не нужно ничего объяснять автору как раз нужно понять принципы и отличияи после того, как он начнет понимать для чего нужно ООП ... Код: plaintext это как раз попытка завязать беседу это вводная часть беседы, это .... а Вы как раз, снова влезли не туда, куда ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 12:32 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Хм... Ну, посмотрим... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 12:47 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторА каждый объект - это минимум одна бд. А если их больше? А если объектов не 3-4 а 10-20? вот здесь автору необходимо понимать принципы наследования классов в фокспро, каким образом выделить наиболее существенные отличительные признаки и св-ва, каким образом наследовать классы, изменять только, то что необходимо а для этого, необходимо понять что такое абстракция, что для Вас, ВладимирМ - пустой звук. Объясните автору основы ООП - по существу, пожалуйста. Т.к. автор авторВ меню выкладываются как бы определенные действия между объектами. Т.к. я увидел абсолютно неверное понимание для чего вообще нужен опред-й подход к разр-ке, то и была попытка начать разговор с основ ООП в фокспро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 12:51 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторХм... Ну, посмотрим... чего смотреть-то Вы собрались? вот и буду вначале объяснять круги Эйлера, что такое объем, что такое признаки, как объединить, как ограничить ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 12:52 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Ну, Вы, как обычно, переврали мои слова. Но, я вообще-то, хотел посмотреть на реакцию автора вопроса. Нужно обладать достаточной смелостью, чтобы признать, что ничего не понял из приведенной Вами первоначальной цитаты. Как я уже говорил, этот текст написан так, что заставляет читающего ощутить свою ничтожность перед глубиной мысли автора. Вы бы хоть раз указали источник. Откуда цитату-то взяли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 13:08 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ идите на фоксклаб. авторНо, я вообще-то, хотел посмотреть на реакцию автора вопроса. обратите внимание, на строки автор 2 CTAC-KO если есть интерес, то начнем с малого и постепенно... жду ответа, в котором будет высказана заинтересованность. это писалось не для Вас, и Ваше мнение мне, лично, не интересно ... Вы же, снова влезли туда, куда Вас не просили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 13:32 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторНу, Вы, как обычно, переврали мои слова какие??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 13:34 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Хотелось бы узнать источник цитаты Особенно заинтересовало это место: Код: plaintext 1. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 13:44 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 CTAC-KO Ты зачем опять размытые вопросы на религиозные темы задаешь? Вон какая война пошла Давай уточняй чего спрашивал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 13:57 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 Aleksey-K http://www.yandex.ru/yandsearch?text=%F1%E8%E3%ED%E0%F2%F3%F0%E0&rpt=rad http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC_%D0%B2_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0%D1%85_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 14:08 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо авторНу, Вы, как обычно, переврали мои слова какие??? Вот эти прошелмимоа для этого, необходимо понять что такое абстракция, что для Вас, ВладимирМ - пустой звук. Насколько я помню, в спор с Вами велся несколько раз и по одному и тому же вопросу. Между глобально-теоретическими аспектами ООП с Вашей стороны и конкретно-практическими - с моей. Основная идея, которую я пытался до Вас довести, что любая теория хороша в определенных границах. До определенной степени. Если условия задачи выходят за те рамки, в которых существует теория, то имеет смысл использовать другую концепцию программирования, поскольку слепое следование идее приводит к нагромождению совершенно неудобочитаемого кода. Вы же настаивали на том, что ООП хороша всегда и при любых условиях. Причем Вы просто прекратили дискуссию сделав странный вывод, что я против ООП. Абстрагирование - это как раз умение не только выделить главное, но и понять, какие преимущества или недостатки будет иметь тот или иной способ реализации не зацикливаясь на своих симпатиях или антипатиях. "Абстрагировавшись" от них. Вот и сейчас, Вы делаете поспешные выводы даже не пытаясь понять то, о чем собственно хотел спросить CTAC-KO . Да, у него не хватает слов, чтобы "правильно" (с Вашей точки зрения) сформулировать вопрос. Но означает ли это то, что он не понимает о чем спрашивает? Ну, что именно он хотел спросить - очевидно. Причем именно сам вопрос Вы проигнорировали. А насчет понимания - это стало бы ясно из ответов на уточняющие вопросы. Кстати, еще раз прошу уточнить - откуда первоначальная цитата приведенная Вами? Почему Вы упорно не отвечаете на такой простой вопрос? Может, со свойственной Вам поспешностью, Вы выдрали понравившиеся Вам куски не попытавшись понять суть того, о чем шла речь в первоисточнике? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 14:11 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ идите на фоксклаб с Вами разговор давно закончен, т.к. дискуссии считаю просто бесполезными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 14:14 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Извините, последний вопрос. Мне просто интересно. Вы не знаете автора приведенной цитаты или сами это написали, но стесняетесь признаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 14:30 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ последний ответ для Вас. Успокойтесь, с Вами беседы не получится. Вам не понятно то, что я Вас давно игнорирую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 14:33 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо2 Aleksey-K http://www.yandex.ru/yandsearch?text=%F1%E8%E3%ED%E0%F2%F3%F0%E0&rpt=rad http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC_%D0%B2_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0%D1%85_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F Спасибо. Что такое сигнатура в ООП я теперь понял, хотя считал, что как раз возможность иметь РАЗНЫЕ сигнатуры (Согласно вашей ссылки: Сигнатура функции — это имя функции, тип возвращаемого значения и список аргументов с указанием порядка их следования и типов) хотя бы в плане входных параметров и позволяют мне у классов наследников существенно менять методы (относительно класса предка). Так работают все компиляторы (много конструкторов с разным набором параметров и, следовательно, с разными СИГНАТУРАМИ). В VFP с помощью кода я могу реализовать тоже самое (все-таки интерпретатор в этом дает значительную гибкость). А в Вашем определение Полиморфизм эта возможность полностью отвергатеся (классы-потомки могут изменять реализацию метода класса-предка, сохраняя его сигнатуру). С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 15:21 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2Aleksey-K , на самом деле то, что было это вообще не основное объяснение и я это вообще не хотел писать об этом, но просто объяснить сложное без объяснения простого невозможно. не возможно изъясняться без опред-я понятий. (а в итоге, из-за того что приходится сказать "А" начинается какой-то треп на пустом месте) вот на самом деле, что я хочу показывать пример полиморфизма в фокспро показано 1. создание своего класса на основе базового класса 2. показано наследование классов (порождение, создание наследников) на основании соз.класса 3. показана работа классов (возможность вызова в любой посл-ти), перегрузка методав в любом месте, вызов методов предка (возможность игнорирования методов предка). мне оч.хотелось-бы вначале рассказать о синтезе и анализе, о работе с объемами иначе понять преимуществ ООП, для чего необходим этот подход к программированию невозможно. иначе невозможно правильно мыслить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 15:48 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо ВладимирМИзвините, последний вопрос. Мне просто интересно. Вы не знаете автора приведенной цитаты или сами это написали, но стесняетесь признаться? последний ответ для Вас. Успокойтесь, с Вами беседы не получится. Вам не понятно то, что я Вас давно игнорирую? Я задал какой-то не приличный, не правильный или очень сложный вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 15:57 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Посмотрел ваш пример. Идею понятна, но все-таки это не полиморфизм. Во первых у всех ваших 3-х классов нет общего класса потомка с методом "позвени". Три класс и три раз вы добавляет метод. Может торопились ? Во вторых и в главных: то что вы показали в примере, просто перегрузка метода и отношение к полиморфизму (изменьчивости) не имеет. Все-таки в VFP нет механизма позднего связывания и витруальных методов. Но это для VFP не так критичко. Он интерпретатор. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 16:13 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторВо первых у всех ваших 3-х классов нет общего класса потомка с методом "позвени". Три класс и три раз вы добавляет метод. Может торопились ? Вы поторопились анализировать предложенный пример. Базовые классы фокспро не могут быть изменены пользователем. Поэтому создан свой класс БУБЕН. от класса БУБЕН уже пронаследованы 2 класса (красный и синий), котор. и имеют общ.методы и св-ва. вот об этих 2- х классах и идет речь. от том что есть в фокспро и чем он отл-ся от др.сред разработки - не есть суть, это не тема данной беседы и данных примеров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 16:36 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
в данном случае, для более подробного объяснения воспользуюсь заимствованием трудов стороннего автора (изв. займусь плагиатом) автор Понятие базовых классов. Основные свойства классов Базовые классы Visual FoxPro хранятся в библиотеке самого пакета. Базовые классы не могут быть изменены пользователем и являются заготовками для создания пользовательских приложений. Однако, в каждом конкретном случае могут потребоваться какие-то свои особенности в функциональности объектов программы, и тогда на основе базовых классов создаются подклассы Например, на основе базового класса "Форма" можно создать пользовательский класс формы со своим цветом, размерами, кнопками перемещения по записям и т.д. На основе подкласса можно создавать сколько угодно объектов конкретных форм. Класс ведет себя как "черный ящик", т.е. инкапсулирует в себе все свойства, события, методы, обеспечивая постоянство алгоритма функционирования, тем самым уменьшая количество ошибок программирования. Подкласс наследует свойства класса, но может прибрести и новые свойства. Например, при создании своего подкласса типа "Форма" мы может унаследовать такие стандартные элементы базового класса, как кнопки закрытия окна, изменения его размеров, способности формы перемещаться, изменять размеры и т.д. Во всех случаях данные элементы будут работать одинаково, и программисту нет необходимости их программировать заново и даже беспокоиться о том, что они могут работать не так, как они должны по определению. Объекты наследуют все основные свойства подкласса, на основе которого они были созданы, и если требуется во всех объектах поменять какое-то свойство, например, цвет, это изменение надо произвести в подклассе. Оно автоматически будет унаследовано всеми объектами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 16:44 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Мамочки родные!!! Я на выходных врос задал, мне дали 2 ответа ну я и ушел фтуман на раздумья, а тут ТАКОЕ началось!!! Ну вопрос-то я задал так как сумел рассуждая на основе каких-то понятий в вфп, которые у меня есть. Может не совсем понятно Вам, нет, таки точно непонятно :) Суть какая - до сих пор я малевал процедуру main.prg откудова все запускалось и в которой была, нет совсем недавно появилась процедура выхода из проги, и которая какбы останавливалась на read events. Затем бороздя данный форум я наткнулся на статейку про создание этого самого главного файла проекта, где было сказано в конце, что лучше всего создать кастомный объект goAрр, в котором посоздавать разные методы и далее это уже будет работа с его свойствами и методами. Тут-то я и прозрел маленько. Особенно потому, что общалсо немного с Игорем Копыриным, ведущим рубрику на subscribe.ru Язык FoxPro - от простой программы к жизни с комфортом. . Вот у него я прочитал такую идею, что он вначале создает в программе все необходимые объекты, начиная, конечно с Арр, т.е. у него там ОбъектЗаконы, объектЗоны и тд и тп. Поскольку я прозрел и понял ЧТО имелось в виду (в прошлом году я ваще выпучив шары думал - ну нихрена себе какой интересный подход к созданию проги - но самому ниче было не понятно, нах создавать все этиобъекты и что оно ваще такое) то перешел к созданию этого самого оАрр. Мне понравилось. :) Я вынес отдельными методами серию SET-ов, подключение к SQL-серверу, афторизацию, выход из проги и тд. Кроме того создал пропертя типа Админ, SQLHandle и т.п. (вместо создания паблик-переменных). Все это хорошо и я начал думать дальше. Значит у меня в проге есть список работников. Думаю - надо создавать объект оРаботники, который сможет методами 1) Выдать нужного работнега (по конкретному условию) 2) выдать список работнегов (по конкретному условию) 3) выдать всех работнегов 4) работать со словарем Работнеги (Редактирование, Прием/Увольнение и тп) 5) Присовокупить к определенной группе работников их календарь распорядка работы с днями/часами 6) Получать от этого объекта что-типа доступен ли такой-то работник, согласно его календаря, на работе в такой-то день, такой-то час 7) и тд/тп Такого плана объект естесственно должен быть не один в программе. Их будет довольно много. А в меню мне нужно к примеру так - Меню Справочнеги, Пункт Работнеги. Сейчас там do form ListWorkerz with ADD|EDIT. А если у меня это уже объект, то я, скажем, даю в меню команду типа oWorkerz.ShowListOfWorkerz. Это означает что собственно oWorkerz уже должен быть и у него уже должен быть к этому моменту список работнегов, выбранный в курсор с SQL-сервера. Ведь я же не могу дать в меню несколько команд, например screen.addobj('Workerz') oWorkerz.Init, oWorkerz.ShowListOfWorkerz и тп, неговоря о проверке наличия oWorkerz. Стало быть мне теперь что? Нада в объекте оАрр малевать метод для этого пункта. В нем будет проводиццо проверка наличия нужного объекта и еси его нет - создавать, инициализировать, наполнять и все такое, а тогда уже давать oWorkerz.ShowListOfWorkerz Иначе, если все объекты сразу же создать (а еще минингит по раздаче прав, ведь не каждому клиенту в принципе будет необходимо все, а в данный момент у меня это реашется путем расдачи админом доступа к опр. пунктам меню), а раз так, то штатный цилик 650х128Мб РАМы/вынь2000 будет у клиента умирать на месте, в свапе :) вот... думаю более-менее разъяснил че имелось в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 22:49 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
CTAC-KO... до сих пор я малевал процедуру main.prg откудова все запускалось ...Вы может и не поверите, но многие так делают до сих пор и будут продолжать делать... По поводу ООП. Просто как было верно замечено выше, не все среды разработки позволяют делать то, что позволяет делать FoxPro... Отсюда и пошли все эти объекты с их свойствами и методами... Например, в C# просто с самого начала этому учат, потому как там нет как такового FrameWork, который нам уже дали с самого начала в FoxPro + очень просто отталкиваться от данных, а не от объектов. В .NET пока все надо создавать самому и SQL внутри кода был большим ни-ни, то есть вся обработка данных проще делалась в объектах, которые передавали данные в базу данных... С версией 3.5 подход начнет меняться и надо будет еще посмотреть, как начнет меняться идеология разработки программ на .NET... Если Вы не применяли ранее объекты, то не переживайте - дело это нехитрое, просто понапридумывали много разных понятий и подходов вокруг всего этого (народ поназащищал диссертаций)... С практической точки зрения применяйте то, что Вам удобнее... Good luck! P.S. Насчет медленности работы - ООП действительно работает очень медленно. Многие пишут сначала менеджер объектов (что-то наподобие сборщика мусора) который держит открытыми только те объекты, которые нужны. Много лет назад я стоял перед выбором, перед которым стоите Вы, но победил разумный рационализм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2008, 23:50 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> Стало быть мне теперь что? Нада в объекте оАрр малевать метод для этого > пункта. В нем будет проводиццо проверка наличия нужного объекта и еси его > нет - создавать, инициализировать, наполнять и все такое, а тогда уже > давать oWorkerz.ShowListOfWorkerz Ну ты же сам и ответил на свой вопрос. Если ты ВСЮ работу хочешь сделать через классы - тогда это наиболее правильное решение. Только в такой постановке задачи логичнее создавать объект oWorkez как свойство класса oApp: в oApp if !PEMSTATUS(This, 'oWorkez' , 5) && Это свойство еще не добавлено This.AddObject('oWorkez', 'classWorkez') ** Или так : *This.AddProperty('oWorkez', createobject('classWorkez')) endif This.oWorkerz.ShowListOfWorkerz Внешний вызов (не из oApp) может выглядеть так: oApp.oWorkerz.ShowListOfWorkerz Но это не правильно, т.к. лучше все таки через метод класса oApp, в котором будет проверка на присутствие свойства oWorkez, на то что свойство oWorkez - объект type('oApp.oWorkerz')='O' (или pemstats и vartype) and !isnull(oApp.oWorkerz), а потом уже вызов методов вложенного (связаного) объекта. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 07:26 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> в oApp > > if !PEMSTATUS(This, 'oWorkez' , 5) && Это свойство еще не добавлено > > This.AddObject('oWorkez', 'classWorkez') > > ** Или так : > > *This.AddProperty('oWorkez', createobject('classWorkez')) ** Или даже так: * This.AddProperty('oWorkez') * This.oWorkez = createobject('classWorkez')) > endif PS и тут Остапа понесло :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 07:31 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторСтало быть мне теперь что? стало быть вначале научиться правильно создавать классы, правильно наследовать, понимать, что у них должно быть изменяемое, каким образом осуществить взаимод-е между объектами. Вопрос: Вы правильно понимаете наследованные классы? Вы понимаете, что такое ассайн и акцесс методы? Вы понимаете где необходимо пронаследовать, а где необходимо динамически видоизменить? впечатление, что Вы ринулись в бой без понимания основ. Код: plaintext авторP.S. Насчет медленности работы - ООП действительно работает очень медленно ООП чего? Где и что работает медленно? Медленно взлетает кастом класс? Странно. Тогда откуда появляются процедурные алгоритмы автор....идет более 5-ти часов ? автора раз так, то штатный цилик 650х128Мб РАМы/вынь2000 будет у клиента умирать на месте от чего? от 2-х коллекций и от 3-х, 4-х -50-ти поднятых объектов кастом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 09:26 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
пример коллекции, которая динамически добавляет .... при необходимости Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 09:33 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторЯзык FoxPro - от простой программы к жизни с комфортом.. вот это - просто безобразие Код: plaintext 1. 2. 3. нет, не в том, что автор именует объекты по-русски, а в том, что издеваетя над фокспро, не объявляю переменные, не задумывается над зоной вид-ти прем-х , не говоря уже о какой-то внятности и логичности виз.программирования, построения библ.классов, ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 09:52 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Боюсь нарваться на праведный гнев защитников ООП :), но все-равно поделюсь личным опытом. VFP выросло из процедурного FPD многое что касается ООП добавилось, но отказываться от проверенных подходов только в дань моде ООП считаю не уместным. Знать о возможностях ООП надо, но не надо пытаться использовать их любой ценой. Курсор, например, не может быть свойством объекта. Отказаться от их использования? Зачем? CTAC-KO Я вынес отдельными методами серию SET-ов, подключение к SQL-серверу, афторизацию, выход из проги и тд. Кроме того создал пропертя типа Админ, SQLHandle и т.п. (вместо создания паблик-переменных). Я можно сказать на том же остановился. Сделал обертки для наиболее используемых наборов функций (работа с файлом, с Ini-файлом, запуск и ожидание завершения внешнего приложения и т.п.) Лично для меня в ООП важен только принцип повторно используемого кода. Если попытаться сформулировать в правило какой код собирать в объект, то оно будет звучать так: "Если какой-то кусок кода пишешь второй раз, надо скопипастить и задуматься, пишешь в третий раз - сделать класс и использовать его, на 4 раз исправить первые два на объект" На третий раз приходит уже четкое понимание того какие свойства и методы нужны объекту, на 4-й это либо подверждается, либо класс переделывается. И то за исключением случаев когда можно обойтись функцией и вставить ее в файл подцепляемый по SET PROC CTAC-KOВсе это хорошо и я начал думать дальше. Значит у меня в проге есть список работников. Думаю - надо создавать объект оРаботники, который сможет ... А в меню мне нужно к примеру так - Меню Справочнеги, Пункт Работнеги. Сейчас там do form ListWorkerz with ADD|EDIT. ... А форма разве не объект? На мой взгля форма самый идеальный базовый класс для простых объектов бизнес-логики. Курсор не может быть свойством объекта, он виден всем в DE, а если форма с PrivateDataSession, то курсор на форме становится ее свойством. Создать несколько однотипных форм фокс не запрещает. Производный класс раве что не создашь. На мой взгляд достаточно нескольких классов форм (я так делаю): 1. clsForm (производный от Form) - прописан Resize(), создание пункта меню при получении фокуса, запуск модально/немодально, автоизменение размера шрифта, контроль повторного открытия формы и еще кое-что по мелочи 2. clsFormBSpr (производный от clsForm) - работа со списком записей, есть грид и набор кнопок (добавить, удалить ...) 3. clsFormESpr (производный от clsForm) - работа с одной записью, есть набор кнопок (сохранить, отмена) и т.д. (есть еще clsFormBDoc, clsFormEDoc для документов с табличной частью, clsStepForm - для сложных расчетов с показом шагов и прогрессбаром) Создав две формы на основе clsFormBSpr и clsFormESpr, добавляю в DE нужную таблицу или КА, на первой настраиваю колонки в гриде, на второй поля ввода. Остальное взаимодействие между этими формами прописано в классах форм (поиск, добавление, правка, удаление, копирование, ввод с возможностью отмены сохранения и т.д.). В 80% случаев этого достаточно чтобы за пару минут сделать интерфейс для простого справочника, в остальных случаях прописываются ньюансы обработки и отображения конкретных данных. Все что касается бизнес-логики, то часть работы со списком добавляется в форму списка, часть касающаяся обработки конкретной записи в форму обработки записи. Если надо - всегда можно вызвать DO FORM ... NOSHOW И самый главный плюс формы - ее можно запустить одним мышекликом, в отличии от классов в VCX. Классы в PRG наверно "не умею готовить" Бывают ситуации когда такого подхода недостаточно. Например какая-то сложная логика, которую необходимо использовать на разных формах, вот в этом случае необходимо заводить отдельный класс для описания и использовать его из всех заинтересованных форм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2008, 17:23 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо авторЯзык FoxPro - от простой программы к жизни с комфортом.. вот это - просто безобразие Код: plaintext 1. 2. 3. нет, не в том, что автор именует объекты по-русски, а в том, что издеваетя над фокспро, не объявляю переменные, не задумывается над зоной вид-ти прем-х , не говоря уже о какой-то внятности и логичности виз.программирования, построения библ.классов, ... Вы зря стучитесь в открытою дверь (да еще так громко и требовательного)! Нет тут противников ООП. Все только за, но... VFP не есть полностью ООП язык. Ну например, рабочие его области со всем, что там открыто ну ни как не "ложаться" в концепцию ООП, а отчеты, а меню? Все попытки придумать для них ООП-ную обертку только загоняет проблему вглубь этих оберток. Это его и недостаток и достоинство. Вот он такой, этот VFP и мы за это его используем. Это, как машина без ограничительей по скорости и маневренности: Плохой водитель расшибется, а хороший выжмет все, что можно. Все это тут неоднократно обсуждалось и я, например, больше не буду участвовать в этой дискуссии. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 08:48 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
автордань моде да нет, не моде.. это попытка еще раз рассказать о подходе, который: - повышается производительность труда программистов и снижаются трудозатраты; - повышается надежность программ. авторВы зря стучитесь в открытою дверь я не стучусь, а просто хочу продемонстировать координально противоп-е решения задач, начать с малого и объяснить почему и как, а начинается сыр-бор с примеров, занимающих 3КБт дверь закрыта, и открывается не многим, а вот когда программист видит пронаследованные классы, почему-то это его ввергает в глубокий ступор, а работодатели мечутся в поисках программиста, который понимает классы в фокспро. авторVFP не есть полностью ООП язык и что? не нужно обучать наследованию, написанию библиотек? использованию методов и принципов ООП? так нет-же ничего, авторы в изданиях ограничиваются 2-мя страницами печатного текста автори я, например, больше не буду участвовать в этой дискуссии. ок, конечно, в данной дискуссии необходимо было продемонстрировать примеры, в которых можно было проанализировать преим-ва и не достатки, показать интересный подход к решению отдельных задач авторКурсор не может быть свойством объекта GETCURSORADAPTER( [ cAlias ] ) .... + так страниц на ацать обоснований противопоожного авторА форма разве не объект? это ужас, летящий на крыльях ночи авторКлассы в PRG наверно "не умею готовить" вот как раз там "готовить" их и не нужно, чем постить, лучше наберитесь терпения и я расскажу, пр виз-е и невиз-е классы и чем отл-ся созд-е виз-х библиотек от "готовить в прг" авторНа третий раз приходит уже четкое понимание того какие свойства и методы нужны объекту, на 4-й это либо подверждается, либо класс переделывается. Вот про это и весь разговор. я и твержу все время, анализ, анализ, синтез, синтез, снова анализ ... вот про это будет следующие сообщение автор Например какая-то сложная логика, которую необходимо использовать на разных формах, вот в этом случае необходимо заводить отдельный класс для описания и использовать его из всех заинтересованных форм логика не бывает сложной, логика или есть или ее нет (т.е. на самом деле логика есть всегда - законы существуют более 3-х тысяч лет) - есть понятие истинности и неистинности (ошибочности, ложности, изв. за каламбур) вот когда все сложно - и выручает наследование в 5 уровней + взаим-е десятка классов, в 3-- 5-ти виз-х библиотеках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 09:35 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторПлохой водитель расшибется, а хороший выжмет все, что можно. да, начинаем изучать приборы простейшие примеры использования ACCESS и ASSIGN методов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 09:57 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторНа третий раз приходит уже четкое понимание того какие свойства и методы нужны объекту, на 4-й это либо подверждается, либо класс переделывается. для того, чтобы этого не происходило, необходим анализ и синтез необходимо правильно мыслить, используя законы и методы Логики. необходимо уметь правильно обобщать и правильно производить операции деления объемов, необходимо правильно находить существенные и несущественные признаки предметов, правильно абстрагироваться от действ-ти данный рисунок - это круги Эйлера, которые как Вы видите они различны, в зависимости от того по какому основанию судить о классах. если кому-то интересно, то я продолжу данную ветку, если нет, то уж извините - "и вот закрыта в сказку дверь и ты не ...." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 10:22 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
http://forum.foxclub.ru/read.php?28,317228 авторВсе только за, но... VFP не есть полностью ООП язык. авторЯ всегда говорил, что в фоксе наиболее продвинутая модель ООП. Технология опередила свое время :) крайне противоположные мнения ..истина где-то рядом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:01 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо Что-то я совсем перестал понимать автора ;-/ Вот пример с ACCESS и ASSIGN он подтверждает (опровергает) какое утверждение из вышесказанных? Или круги с бубнами? Это все здесь по какому вопросу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:15 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторон подтверждает (опровергает) что ж ты злой то такой да ничего я подтверждать не хочу и опровергать не хочу я показываю класс, свойство и методы кому интересно - посмотрит, может не знает. это азы ООП, азы проходим, смотрим что есть в фокспро, что можно использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:31 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
показал классический пример ( отличие, совсем иной подход к реализации ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. авторЧто-то я совсем перестал понимать автора что не так-то? хочу объяснить начинающим что и как чтобы не пугались проектов в соурсах фокспро что не так я делаю? почему столько возмущений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:34 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторKruchinin Pahan вот чтобы это начать понимать http://fox.wikis.com/wc.dll?Wiki~VFPDesignPatternCatalog нужно начать понимать классы, нужно начать понимать абстракцию, нужно понимать, что если мы начнем абстрагироваться, то нам нужно сравнивать классы, объекты по каким-то основаниям, почему могут быть предметы сравнимые, несравнимые .... как объемы ограничить, как выделить ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:42 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
что не так я делаю? почему столько возмущений? Александр, форма подачи не та. Способы аргументации. Способы ведения дискуссии. Даже если пишешь и правильно по сути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:47 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> что не так я делаю? > почему столько возмущений? > > Александр, форма подачи не та. Способы аргументации. Способы ведения > дискуссии. Даже если пишешь и правильно по сути. Согласен с Sergey Sizov. Очень неприятно читать, когда начинается обсирание других и обвинение их , когда они предлагают свои решения поставленного вопроса в том, что что они не понимаю ООП. Хотя вопрос изначально был другой и автор вопроса, похоже, удовлетворился ответом (или просто боится встрявать в эту "дискуссию"). Про классы очень интересно. И новичкам будет очень полезно. Если сможете поделится своим видением (или процитировать, что тоже хорошо ( а лучше и то и то)), не говоря что другие дураки, которые ничего не понимают, то с удовольствием и я почитаю. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:55 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
ну тогда застолбим здесь высказывание, поставив жирную точку автор при использовании ООП: - повышается производительность труда программистов и снижает трудозатраты; - повышается надежность программ. и успокоимся авторформа подачи да я вот не делаю, и видел реализаций ... да нет, просто ... я не умею, я не .., это мода и мне не нужно, но я вот воткну свои круказюльки ... но формы как чесал, так и буду ... ну вот и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:57 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторне говоря что другие дураки, которые ничего не понимают покажи, где я это написал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:58 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо авторА форма разве не объект? это ужас, летящий на крыльях ночи Ничто так не меняет точку зрения как удар в глаз. Свои эмоции надо аргументировать. Цитат из мультфильмов недостаточно. прошелмимоэто попытка еще раз рассказать о подходе, который: - повышается производительность труда программистов и снижаются трудозатраты; - повышается надежность программ. ... логика не бывает сложной, логика или есть или ее нет (т.е. на самом деле логика есть всегда - законы существуют более 3-х тысяч лет) - есть понятие истинности и неистинности (ошибочности, ложности, изв. за каламбур) вот когда все сложно - и выручает наследование в 5 уровней + взаим-е десятка классов, в 3-- 5-ти виз-х библиотеках Ага. Смотришь на этот изнаследованный код, лазишь по методам всех уровней и материшь про себя того джедая с бластером и красным мечом, который это напроектировал. Даже если это твой собственный проект законченный год назад и благополучно забытый. И в чем тут высокая производительность? В том что при внесении изменений самый нижний класс надо просмотреть и протестить всех наследников? Это повышает надежность? Или проекты выполненные по всем правилам теории ООП так хороши что не требуют внесения изменений? Инкапсуляция и наследование красивы только в теории, а на практике приходится жертвовать теорией в угоду производительности. На мой взгляд понятней и надежней использовать свойства-объекты, чем наследование. Хотя тестить при изменении тоже не мало. А у меня библиотека базовых форм едина на все проекты, постоянно используется, доработки не требует, поэтому не надо долго вспоминать что там к чему. В 99% времени работы с программой нужна именно визуализация, так почему бы не делать объекты на основе форм? В чем ужас? Про последовательность инитов в курсе. Чем это не ООП? 1. В форме легко собирается весь код для работы с конкретным объектом. Весь код и данные в одном месте. В случае чего поправил, быстро протестил и забыл. 2. Форму элементарно запускать (особенно в процессе разработки) 3. На форме простановка ControlSource делается мышекликами, а в VCX приходится руками писать А под сложной логикой понимаю то что не вписывается в мою концепцию. Реальный пример привести сложно, т.к. писать много прийдется, возьмем классический остаток товара и несколько документов его меняющих. Вся логика изменения остатков выносится в класс на основе Custom, который будет объектом свойством форм работы с этими документами. прошелмимоя и твержу все время, анализ, анализ, синтез, синтез, снова анализ ... А работу когда работать? Производительность производить? Для анализа надо сначала досконально изучить предметную область. Ладно если проект большой есть отдельный аналитик, который только этим и занимается, круги с квадратами рисует, а если я все в одном? Потеря времени на излишний анализ явно мою суммарную производительность не повысит. Я предпочитаю максимальное время анализа уделить проектированию структуры БД, чтобы можно было все данные правильно хранить, чтобы потом с нуля не переделывать, а все остальное строится уже от БД. Повторюсь что в ООП полезным вижу только повторное использование кода, и базовые классы на основе форм появились не случайно, а именно в следствии постоянного прописывания одного и того же кода в разных формах. Любой написанный разработчиком код это результат его собственного опыта и знаний. Это и есть стиль программирования, то что он сочетает в себе различные классические теории и особенности языка программирования - это нормально. И то, что эти сочетания индивидуальны для каждого разработчика это тоже нормально. Если преуспевающий разработчик пишет код идущий в разрез всех канонов программирования, то от чего его успех? Почему он должен что-то менять только потому что так не положено? Знать законы надо и для того чтобы их умышленно нарушать. Самое сложное для разработчика - понять предметную область, правила по которым работают его будущие пользователи, чтобы не получались велосипеды с квадратными колесами, слепленные по всем каконам теорий программирования, со слов заказчика, считающего многие вещи "общеизвестными" и не требующими упоминания. PS Извини за резкость :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 12:58 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
автор 1. В форме легко собирается весь код для работы с конкретным объектом. Весь код и данные в одном месте. В случае чего поправил, быстро протестил и забыл. 2. Форму элементарно запускать (особенно в процессе разработки) 3. На форме простановка ControlSource делается мышекликами, а в VCX приходится руками писать Вы ошибаетесь, и Ваша проблема в том, что Вы не видели хороших реализаций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 13:04 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
"прошелмимо" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:5251250@sql.ru... > Автор: прошелмимо > автор > не говоря что другие дураки, которые ничего не > понимают > > > покажи, где я это написал? Боюсь, что можем скатиться с ООП до сам дурак. Давай я один раз приведу, но потом к этому возвращаться не будем: >Автор: прошелмимо >2 ВладимирМ >последний ответ для Вас. >Успокойтесь, с Вами беседы не получится. >Вам не понятно то, что я Вас давно игнорирую? У меня сложилось стойкое ощущение, что буквально это надо читать как "Я вам уже 10 раз это объяснял, а у вас мозгов не хватает это понять. Дальше разговаривать нет сил и вообще вы не достойны моего внимания. Поэтому игнор." А сложилось оно наверное из того, что в данной векте ни одна ваша попытка объяснения "основ ООП" так логически и не была закончена. Я, вот, например, знаю классы, наследование, полиморфизм. Только не совсем понял к чему были круги с бубнами??? Что вы на них пытались изобразить я понял - наследование (в первую очередь). Но к чему они были приведены???? Я думаю что половина народу читая выдранные цитаты и глядя на круги так же ощущает себя (как и я, впрочем) как сказал >Автор: ВладимирМ >Кроме того, данная цитата - это яркий образец того, как не надо писать >объяснения. [...] Объяснение, которое ничего не объясняет, но делает вид, >что что-то объяснили, а я такой не образованный, что ничего не понял... Причем понятно ЧТО вы пишете, но непонятно К ЧЕМУ!!! PS напоминаю, что боюсь, что можем скатиться с ООП до сам дурак, поэтому предлагаю вернутся в стезю ООП. Если будет над чем, то с удовольствием подискутирую, выскажу свое мнение (пока еще здесь не авторитетное, но все же). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 13:20 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 Sergey Sizov. чем Вы объясните то, что нет литературы по затронутой теме, и то, что авторы новых изданий, к примеру Питер.Самоучитель ВФП9 ... ограничиваются только одной печатной страницей. что Вы можете предложить? и стоит ли вообще рассказывать о ООП в фокспро? дело в том, что с моей точки зрения, и при наличии реализаций, фокспро позволяет оч.просто масштабировать прил-я с ним-ми трудозатратами именно за счет, имеющихся инструментов генер-и и компил-и в рантайме библ-к виз.классов. без наличия знаний в области работы с классами, взаим-я объектов невозможно понимать данные процессы ... ну и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 13:22 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторЯ, вот, например, знаю классы, наследование, полиморфизм. Только не совсем понял к чему были круги с бубнами??? это Логика - наука такая, чтобы это понять необходимо прочитать любую курсовую работу по теме:"Логика ..." (можете поискать) авторА сложилось оно наверное из того, что в данной векте ни одна ваша попытка объяснения "основ ООП" так логически и не была закончена. все, здесь не получится, потому, что я публикую и жду желание продолжить тему, жду вопросы, чтобы объяснить я не жду сравнений и мнений - надежда была на вопросы новичков, так как при попытках посмотреть исходные коды билдеров фокспро возникает непонимание, у программистов фокспро, не понимающих ООП в фокспро возникает проблема с трудоустройством у большинства работодателей в Мск авторлогически и не была закончена я дал опред-я опред-я разве не закончены? ну задайте вопрос, что Вам не понятно? но лучше уже не стоит ... можете обратиться к источникам по след.ссылке, и далее там найдете ответ http://fox.wikis.com/wc.dll?Wiki~DisplayFindResults ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 13:30 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторпоэтому предлагаю вернутся в стезю ООП. нет, хватит оно мне особо не нужно пробуйте читать самоучители и ... - там ничего нет, но это не главное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 13:33 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо2 Sergey Sizov. чем Вы объясните то, что нет литературы по затронутой теме, и то, что авторы новых изданий, к примеру Питер.Самоучитель ВФП9 ... ограничиваются только одной печатной страницей. Не знаю. Но предполагаю, что те, кто может написать что-то по данной теме, относятся к практиками и им просто некогда это сделать. Да и не их стезя это, наверное. что Вы можете предложить? Увы, пока ничего. Сам завален работой по уши. Единственное, что я мог бы сделать - быть редактором, тестером или консультантом по обработке уже написанной кем-то статьи или серии статей. Хотя, может кто-то таки решится и на книжку не очень большую. и стоит ли вообще рассказывать о ООП в фокспро? Учитывая его особенности я считаю разумным отдельно описать эти особенности, при чем желательно в сравнении с "классическими" ООП языками. дело в том, что с моей точки зрения, и при наличии реализаций, фокспро позволяет оч.просто масштабировать прил-я с ним-ми трудозатратами именно за счет, имеющихся инструментов генер-и и компил-и в рантайме библ-к виз.классов. без наличия знаний в области работы с классами, взаим-я объектов невозможно понимать данные процессы ... ну и т.д. С этим, вроде бы, особо никто и не спорит. Другое дело, что Ваши реплики часто можно понять только уже зная обсуждаемый предмет. То есть получается замкнутый круг - чтобы понять надо знать, чтобы узнать надо понять. Еще затрудняют понимание конспективные сокращения, которые, опять же, лучше понимаются теми, кто уже "в теме". Я понимаю, что тема достаточно обширная и хочется сказать много и мысль намного опережает руки (сам такой :) ), но вот для достижения приемлемого уровня понятности приходится таки писать слова и фразы полностью, с полными формулировками. Ну и немаловажную роль играет последовательность изложения. Перескакивание с одного аспекта осуждаемой темы на другой, потом на третий и обратно на первый и все в одном абзаце трудно для понимания даже знающему человеку. Из этого, в сочетании с резкими, категоричными выпадами в адрес собеседников, и складывается, я надеюсь ошибочное, мнение о высокомерности и излишней "учености" Ваших реплик и замечаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 13:59 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 Sergey Sizov. большое спасибо за ответ, понимаю безрезультатность своих усилий, да объяснить, тем более ... заставить думать в опред.русле без опред.спец.знаний невозможно мое мнение: ед.путь, без наличия спец.литературы - это насаждение знаний мат.зависимым подчиненным оч. обидно, что умирает среда разработки, зачастую в которой большинство разработчиков так и не увидели всех достоинств. а форум, да извините, это я зря здесь, хотелось понять, как необходимо ...., мне предстоит командировка в далекие края, если не поменяю место работы, так, что, немного потренировался и понял по-минимому, буду орать: "молчать и слушать, ..." - шучу. все, всем спасибо, я пошелмимо. не судите строго - виноват, каюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 14:09 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимоВы ошибаетесь, и Ваша проблема в том, что Вы не видели хороших реализаций Можно на ты. Может и не видел, может и видел. А в чем критерии "хорошести"? Производительности программиста и устойчивости программы? При каком подходе они лучше? Не вижу прямой зависимости. Это спорный вопрос. Если одно и ту же задачу решат студент только что закончивший каноны программирования изучать и программист с 15-ти летним опытом, не подозревающий об этих теориях, то чей продукт появится быстрее и будет работать стабильней? Вот правильное мнение Galyamov Rinat Про классы очень интересно. И новичкам будет очень полезно. Если сможете поделится своим видением (или процитировать, что тоже хорошо ( а лучше и то и то)), не говоря что другие дураки, которые ничего не понимают, то с удовольствием и я почитаю. Надо аргументировать свои высказывания не краткими цитатами из теории (найди в инете полное описание и давай ссылку, кто захочет ознакомится), а конкретным кодом и приемами программирования. Какой смысл тратить время на околонаучный треп? Этим интересно заниматься за кружкой пива. Теории многие изучали, но как их применить в реальной жизни вот что интересно. А жизнь она у всех разная, и задачи разные, у одного куча маленьких, у другого несколько, но больших, а ты всех под одну гребенку ... Не знаю как ты, но я иногда меняю свое мнение о вопросам, обсуждаемым в этом форуме. прошелмимочем Вы объясните то, что нет литературы по затронутой теме, и то, что авторы новых изданий, к примеру Питер.Самоучитель ВФП9 ... ограничиваются только одной печатной страницей. ... потому, что я публикую и жду желание продолжить тему, жду вопросы, чтобы объяснить я не жду сравнений и мнений - надежда была на вопросы новичков, так как при попытках посмотреть исходные коды билдеров фокспро возникает непонимание... Если действительно хочешь заполнить информационный вакуум, то напиши законченную статью, выложи где-нибудь. И топик для обсуждения заведи, чтобы досказать то, что не было понято. Тема совсем не тривиальная и в стиле вопрос-ответ ее не разобрать. Вот тогда будет конструктивная критика и восторженные возгласы начинающих ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 14:13 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо2 Sergey Sizov. большое спасибо за ответ, понимаю безрезультатность своих усилий, да объяснить, тем более ... заставить думать в опред.русле без опред.спец.знаний невозможно Очень может быть. Но это ж не повод совсем опускать руки? мое мнение: ед.путь, без наличия спец.литературы - это насаждение знаний мат.зависимым подчиненным Как один из способов может где-то и такой вариант подходит. Но вот мне дали стУдента и я на нем как раз потренируюсь в объяснениях этой темы. :) [/quot]оч. обидно, что умирает среда разработки, зачастую в которой большинство разработчиков так и не увидели всех достоинств. [/quot] Похожие мысли и меня посещают. Вот идей по исправлению такой ситуации пока никаких. [/quot] все, всем спасибо, я пошелмимо. не судите строго - виноват, каюсь.[/quot] Надеюсь, не совсем уж мимо? Да и на FoxClub не такие уж кровожадные, чтоб к ним не ходить. Особенно интересно по КА поболтать, код пообсуждать и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 14:44 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимомое мнение: ед.путь, без наличия спец.литературы - это насаждение знаний мат.зависимым подчиненным "Плох тот солдат, который не мечтает стать генералом" Подчиненный когда-нибудь вырастет и сам начнет насаждать свои знания. Вопрос только в том что за знания у него будут. Я считаю что единственный правильный путь коллективной разработки. Мне как-то довелось посопровождать проект на FPD написанный несколькими разработчиками без "насаждения" единого стиля. Спроектировали базу, Поделили на части и написали. Вот где ужас. Убив кучу времени немного разобрался в одном месте, понял как что изначально задумывалось, добираюсь до другого - это другой писал со своим виденьем, надо начинать с начала ... прошелмимооч. обидно, что умирает среда разработки, зачастую в которой большинство разработчиков так и не увидели всех достоинств. Очень обидно что активно развивается среда не имеющая достоинств с точки зрения программиста. Это я про 1С. Там все однозначно, это можно сделать только так, это совсем никак. Свободы творчества никакой, производительности софта тоже, зато производительность труда разработчика какая. Да и разработчику высокой квалификации не надо. Да и не разработчик он вовсе, а сопровожденец готовых конфигураций. Зато нет проблем с поиском таких разработчиков. Вот и остается фоксу то, куда 1С влезть не смогло. Умирает не фокс, а индустрия программирования как таковая, разработка с нуля - это единичные проекты малой и средней сложности для специфичных задач, не охваченных типовыми решениями. Никто сегодня не пытается написать свой бух.учет - практически сразу приходит мысль об интеграции с 1С-Бухгалтерией. Основная масса внедряемого софта - готовые решения, адаптируемые под заказчика. Нужны не программисты, а сопровожденцы, а сопровожденцу не надо знать концепций ООП, достаточно знать то что он сопровождает и иметь средние навыки программирования. И заказчику это выгодно, т.к. рядовой сопровожденец обходится существенно дешевле чем продвинутый разработчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 16:39 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо авторПлохой водитель расшибется, а хороший выжмет все, что можно. да, начинаем изучать приборы простейшие примеры использования ACCESS и ASSIGN методовО, а я об этом ничего не знал! Значит если добавить к пропертю акцес-метод, то этот метод будет срабатывать каждый раз при ОБРАЩЕНИИ к этому пропертю, а ассайн - метод который будет срабатывать при изменении этого пропертя. А наверное можно и сразу два этих метода прописывать? Я-то эти чекбоксы давно вижу, но ни разу не подумал - что это такое ваще и для чего... Знач, в разрезе моего вопроса выходит типа так - я просто создаю объекты. Но только когда у объекта спросют че-нить, т.е. проперю какую-то, а у ей будит акцес-метод, тогда только и произойдут всякие волнения типа запросов нужных данных с SQL их обработка и все такое. И собственно отдача спрошаемого. Афигеть! это нужно еще впитать, обдумать, оптяпать, и обозреть как заюзать, что требует времени. спасибо за ликбез :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 18:46 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
"Ох уж эти сказочники..." (с) Программисты - это люди, живущие в мире магии и заклинаний. Произнес "магическое" слово и принтер зажужжал... Произнес другое "магическое" слово и монитор включился... Магия, однако! Заклинания... Т.е. буквально! Как правило, программисты используют слова, смысл которых не понимают. Они только знают, что должно произойти в результате "произнесения" тех или иных слов. Но еще хуже дело обстоит с теоретиками от программирования. Они постоянно придумывают новые "заклинания". Новые термины для объяснения давно существующих вещей. Когда "продираешся" через дебри мудреных терминов, то остается полное ощущение, что тебя ловко обманули, а ты даже не можешь сказать в чем. Ну, как у Задорнова: "Бекон" - красиво звучит. А поешь и думаешь - нафига я столько шкварок нажрался? Проблема в том, что все эти красивые термины вроде "наследование", "полиморфизм" в общем-то, описывают то, что уже давным давно существовало в процедурном программировании. С самого его рождения. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И все! Рассматриваются разные варианты взаимодействия этих двух процедур. А слов-то, слов вокруг этого! И все такие красивые, загадочные, непонятные. Ну, заклинания и есть! Иначе не скажешь. Принципиальное отличие объектного программирования от процедурного заключается в том, что некоторые процедуры, как-бы "привязываются" к определенной "основе". Группируются в некий "блок". Который, собственно, и называют "объект". Аналогом такого объекта в процедурном программировании можно считать процедурный файл. Вы можете строить дом из кирпича, но можете из панелей или даже отдельных модулей. Процедурное программирование - это строительство из кирпича, а ООП - из готовых панелей или модулей. И тем и другим способом Вы можете как построить красивое здание, которое простоит не одно столетие, а можете возвести халупу, которая развалится через пару лет. У обоих стилей есть достоинства и недостатки. Нельзя сказать, что один из них - это хорошо, а другой - плохо. Это взаимо-дополняющие технологии. К чему я это все? Да просто так. Раговор уже пошел "вообще". Беспредметный. Хотя, может из этого что и получится... Кстати, думаю статей на эту тему нет как раз из-за этого. Практики прекрасно понимают всю бессмысленность игры в слова. Это просто никак не помогает решать практические задачи. А теоретики уже не могут обходится без "заклинаний". Работа у них такая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 19:36 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимочем Вы объясните то, что нет литературы по затронутой теме... Б.Страуструп "Язык С++" 50 страниц по этой теме. Создателю языка максимально поддерживающего ООП наверно можно доверять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 20:05 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
CTAC-KOО, а я об этом ничего не знал! ... Советую не пожалеть денег и времени на поиски и почитать, если есть то перечитать: М.Базиян "Программирование в VFP 6" Т. Агафонова, В.Клепинин "VFP 9" Читай обе, не пожалеешь, найдешь все те приятные мелочи, которые не понял если раньше читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 20:11 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Ну что ж для тех кто испрашивал немного практики: Пример практического использования Access для свойства: В недавно написанном приложении на VFP9+MSSQL2005 для отладки (т.к. за 20 пользователями сложно уследить) создал класс, NetHook, который используя WinSock по UDP распространял группе пользователей "администратор/разработчик" пакеты с содержанием либо отладочной информации, либо сообщения exсeptions, либо сообщения о "простых" ошибках типа не найдена переменная, обеспечивается и обратная связь: программист может выдать пользователю краткую инструкцию, явно как и пользователь может запросить у программиста помощь в любой момент. При этом формировался пакет с данными типа: 01|6|14|"Произведен вход в систему...".... 01-сообщение вида отладочная информация/фоновая информация 6-код пользователя отправителя 14-код пользователя/группы полльзователей получателей ну и далее непосредственно текст сообщения Так вот: проблема как оказалось была не особо уж серьезной но мне показалось, что далеко не лучший вариант производить разборку в методе OnRecieve для WinSock, поскольку мне наиболее важно именно побыстрее сбросить приемный буфер, и отдать это все на обработку другому объекту, а имеено классу NetUsers который имел свойство с access'ом, так вот именно в этом access'е и происходила разборка пакета, принятого WinSock, при этом и WinSock, и основная программа продолжали работать, ведь WinSock всегда запускается отдельным tread'ом, а access метод срабатывает как event... Т.е. получилось эдакое подобие C++-ного CALLBACK... P.S Объект NetHook является Prtocted свойством объекта NetUsers и инициализируется в NetUsers Понятно, что NetUsers.destroy() прописано уничтожение связанного экземпляра NetHook P.P.S Не могу выложить код сейчас - пишу из дома, а библиотека класса на работе, если кого интересует могу выложить код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2008, 21:37 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Принципиальное отличие объектного программирования от процедурного заключается в том, что некоторые процедуры, как-бы "привязываются" к определенной "основе". Группируются в некий "блок". Который, собственно, и называют "объект". Аналогом такого объекта в процедурном программировании можно считать процедурный файл. Это называется инкапсуляция. И эти, как Вы выразились, "заклинания" в частности позволяют называть вещи конкретно и своими именами, а не растекаться мыслью по древу на абзац. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 00:31 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Dima T Советую не пожалеть денег и времени на поиски и почитать, если есть то перечитать: М.Базиян "Программирование в VFP 6" Т. Агафонова, В.Клепинин "VFP 9" Про vfp 6 Базияна в курсе. Сам читал после полугодовой практики - нашел много интересных тонкостей, которые невидел (нет или невнимательно переводил MSDN). А вот по 9-ке тоже хотелось бы почитать чего-нить толкового. Не в плане "клинтете в меню такое-то, перетащите мышкой то-то туда-то", а именно "для практиков" или профессионалов. Тонкости, новости - если заинтересовало, то подробнее в help`е. Несколько раз искал отзывы о книгах по форумам. Основной ответ: "По 9-ке толковых нет - читайте Базияна". ВНимание вопрос. Появилось ли в природе то, что я хочу??? Скажите кто что читал и какое впечатление на него произвели те книги по 9-ке, которые он читал? Те же Т. Агафонова, В.Клепинин делают упор на тонкости (которых нет или неявно даны в help`е) или общий обзор??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 06:38 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Galyamov RinatПро vfp 6 Базияна в курсе. Сам читал после полугодовой практики - нашел много интересных тонкостей, которые невидел (нет или невнимательно переводил MSDN). А вот по 9-ке тоже хотелось бы почитать чего-нить толкового. По 9-ке всего одна книга, вполне нормальная на мой взгляд. До Базияна не дотягивает, но начинающему подойдет и все нововведения после 6-ки хорошо описаны. Galyamov RinatНе в плане "клинтете в меню такое-то, перетащите мышкой то-то туда-то", а именно "для практиков" или профессионалов. Тонкости, новости - если заинтересовало, то подробнее в help`е. ...Перечитай HELP :) То что ты ищешь в книгах не пишут, это называется личный опыт, его невозможно прочитать в одном месте. Он уникален у каждого разработчика и не ограничивается только фоксом. Если есть желание узнать больше полезного, то можешь поизучать WinAPI: Джефри Рихтер "Программирование в Windows" - знание устройства и возможностей ОС никому не помешало. Если никогда не работал с MSVC++ WinAPI проектами, то предварительно желательно какую-нибудь книжку "WinAPI для чайников" прочитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 07:47 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 CTAC-KO молодец за то, что сам анализируешь - есть способности к самообучению. мне не дали рассказать тебе и тысячной доли того, что необходимо. ты уже увидел в соурсах проекты, сделанные координально с другим подходом и это не мода (ну не глупцы-же делали) пробуй сам еще смотреть. что не понятно - спроси. обрати внимание на исходники проектов Седны. того дядю не слушай - он ВРАГ. Он не понимает, что такое абстракция и для чего она нужна. вот тебе мануал для начала, и сам поиском по инету - это чтобы правильно думать. у программиста ООП мозги немного "не туда крутятся". ну примерно такие сказочки они сочиняют: "зашла девочка в дом, там яблочко лежит, она его захотела скушать - ручку протянуло, а яблочко ей и говорит: не кушай меня - йа полнайа ийаду ..." (ну со стороны нормального человека - полный дурдом...) авторПрограммисты - это люди приходит папа с ребенком в зоопарк. подходят к клетге с шимпанзе. сын орет: папа, папа, я знаю кто это папа: кто? сын: это программисты папа: почему? сын: пАтаму, что не стриженные и на ж..пе мазоль. Вот и сказочке - конец, а кто слушал - мАааааЛаааадец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 09:36 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо ИМХО, лучший выход, написать статью и завести ветку для ее обсуждения. В данной же ветке больше препирательств, чем информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 10:11 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо авторKruchinin Pahan вот чтобы это начать понимать http://fox.wikis.com/wc.dll?Wiki~VFPDesignPatternCatalog нужно начать понимать классы, нужно начать понимать абстракцию, нужно понимать, что если мы начнем абстрагироваться, то нам нужно сравнивать классы, объекты по каким-то основаниям, почему могут быть предметы сравнимые, несравнимые .... как объемы ограничить, как выделить ... Да не, ООП я понимаю, и картинки понимаю, и примеры понимю, а вот вас - не очень. А для всех приверженцев ООП, я скажу так. ООП это жалкая плоская проекция фреймовых систем (точнее сказать, частный случай плоской фреймовой системы). Так что, если начинать абстрагироваться, то абстрагироваться надо сразу до фреймов. SQL к чертям, любая операция - на паттернах семантических сетей. ООП - вчерашний день, процедурное программирование - позавчерашний. В новый век с новыми методами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 14:20 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимотого дядю не слушайв любом случае всегда полезно знать несколько мнений, разные стороны, так сказать. здесь нет и не может быть врагов, здесь собрались исключительно ХОРОШИЕ люди, практически все друзья, ведь собрались здесь чтоб помогать друг другу. Показать как можно то-то и то-то сделать разными способами, а другие смотрят и учаццо, как я :) я б наверное так и не понял бы что такое эти классы вообще, еси б не этот форум, а сколько я тут реальной помощи и знаний получил - так и ваще... Так что лично я все мнения читаю, но и что Вы, Александр, предлагаете по-любому посмотрю и поучусь. Кстати, я канешна преувеличил полные непонятки с приемственными процеДурами, просто ранее не встречасло с таким, конечно удивило несколько. А сколько может быть "вложений" матрешки? А вызов по глубине выделяеццо как я понял двоеточиями, вернее их кол-вом? типа Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 14:22 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
CTAC-KO... А сколько может быть "вложений" матрешки? ... Ровно столько, чтобы на вопрос, "А какой цветочек на самой маленькой нарисован?" пока вынимаешь одну из другой не начнет приходить мысль "Что ж она так глубоко запрятана" :) Лично мне более 3-х уровней никогда не требовалось, но есть и другие мнения. Все зависит от задачи, которую ты решаешь и от тебя как проектировщика структуры кода. CTAC-KOА вызов по глубине выделяеццо как я понял двоеточиями, вернее их кол-вом Неправильно Например есть clsOne от него производный clsTwo от него clsThree есть метод Click() прописанный во всех трех классах. Далее на примере кода в clsThree.Click() 1. Прописать какой-то код. clsTwo.Click() и clsOne.Click() не отработают 2. Вызов кода clsTwo.Click() (clsOne.Click() отработает если будет вызван из clsTwo.Click()) Код: plaintext 1. 2. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 14:43 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
понятно, нужно только знать/помнить наименования всех классов в глубину? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2008, 20:09 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
CTAC-KOпонятно, нужно только знать/помнить наименования всех классов в глубину? Помнить надо для обхода порядка вызовов. А так в большинстве случаев DODEFAULT() достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 08:38 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 CTAC-KO не нужно запоминать никакую глубину для использования тебе нужен только сам, получившийся абстрактный класс во время разработки, пользуемся дизайнером и там все видно - он сам покажет кто от кого давай по-порядку, начнем с малого, и затем .... вот я давал почитать документ. почитал?? в понедельник посмотрим лягушечку(забугорную) и попробуем попить своего киселя, молока и водки (если захочешь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 09:22 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Pomoemu, dlia izuchenija OOP luchshe vybrat' "chysto" OO jazyk - java ili C# (VB.net ne podojdet vsviazi s vozmojnostiju ispol'zovat' moduli). Nabrat'sia opyta i dal'she sproektirovat' etot opyt na VFP. VFP daet vozmojnost' delat' liubuju veshch' 4-mia sposobami i ochen' trudno ustojat' soblaznu "skatyvania" v procedurnoe programirovanie. Danylo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2008, 06:32 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
документег про лохику я почитал. Идея, как я понял, несеццо такая - нуна хорошо расчесать свой код в плане общих вещей, чтоб их потом повыносить ф классы. а с нужными отличиями будуд классы на этих классах. даже уже в одном своем классе радостно ассайн-метод приделал :) Я вот типо свое комбо делал и захотел чтобы оно на дестроях сорсовый курсор прихлопывало, собсенно в его ините этот курсор запрашуеццо. дык вот. я приделал ассасина к RowSource, который метод в мою кастомную пропертю RowSourceTable записывал понятно че, еси там пусто было. ну а на дестроях Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2008, 16:56 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Ой, блин... Ну и сказочники пошли... Простой пример. Все (ну, или почти все), слышали такой термин "нормализация". Несколько меньшее количество народа знает, что у нормализации есть несколько уровней (по научному - форм). Еще меньшее количество народа знает, что, как правило, при проектировании базы данных ограничиваются третьей нормальной формой, а, зачастую, сознательно идет на денормализацию (нарушение нормальной формы). А теперь простой вопрос: кто может привести официальное определение, хотя бы первой нормальной формы? Нет, в книжку заглядывать не надо. По интернету лазить тоже. И вообще, у Вас неожиданно погас свет. По памяти давайте! Ну? Никто? Как же так!? А как же вы все вообще проектируете базу данных? Да очень просто! Все эти глубоко научные термины не имеют к практическому программированию никакого отношения. Ну, почти... Это терминология теоретиков и для теоретиков. Не для практиков. Цель этих теоретических рассуждений - теоретические же рассуждения. В лучшем случае, они могут привести к новой идеологии. Но, в большинстве случаев, так рассуждениями и остаются. С практической точки зрения, нормализаци - это устранение дублирования вводимой и изменяемой информации. Информация должна физически хранится в одном месте. А из других мест на нее просто ссылаются. Вот и все. Так вот, что такое класс? Это заготовка. Болванка. Исходный материал. Если вернуться к примеру со строительством дома, то класс - это готовая панель. Разумеется, прежде чем начать строить дом необходимо определиться какие панели понадобяться. Глупо делать панель с балконом, если предполагается строить одноэтажный дом. Нет, разумеется, такую панель тоже можно будет использовать, но придется что-то делать с этим не нужным балконом. Логично сделать панель без балкона. А если перейдем к строительству многоэтажного дома, то из панели без балкона сделаем такую же панель, но с балконом. Это и есть "наследование". Какие сложности именно так (или примерно так) все и описать? Ведь не для теоретиков же все это пишется, а для практиков! Зачем, ну зачем все эти высоко-ученые термины через которые надо продираться с дикой головной болью, если на практике всем этим добром не пользуются? Даже тот, кто пытается что-то там объяснить! Приведенный текст по логике - просто проитворечит сам себе. Нарушает все те правила, которые сам же и устанавливает! Далеко не все способны объяснять. В смысле, не дать некую формальную отписку, типа - на, подавись! А объяснить так, чтобы человек понял. Ну, не способны и все. Тем не менее, потребность хоть в каких-то объяснениях есть. Вот и пишут... Кстати, поскольку теоретики, как правило, страшно далеки от народа (в смысле, от практики), то следует иметь в виду, что методы X_access() и X_assign() срабатывают только и исключительно при программном обращении или изменении свойства X. Это значит, что можно создать, например, для свойства PageFrame.ActivePage метод Assign(), чтобы отслеживать факт изменения активной страницы PageFrame. Только вот при изменении активной страницы при помощи мышки или клавиатуры этот метод срабатывать не будет! А сработает он только и исключительно при программном изменении. Т.е. если дадут команду вроде PageFrame.ActivePage = 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2008, 20:03 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Владимир Проблема в том что объекты и таблицы это не одно и тоже. Есть даже такой термин Object Relational impedance mismatch . А насчет панелей вы правы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2008, 21:17 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
kdanyloВладимир Проблема в том что объекты и таблицы это не одно и тоже. Есть даже такой термин Object Relational impedance mismatch . А насчет панелей вы правы. Смысл примера с нормализацией был в том, чтобы показать, на достаточно простом и почти всем понятном примере что "высоконаучные" термины, так и остаются терминами, используемыми только очень узким кругом людей. На практике, большинством из этих терминов или не пользуются вообще или им придают совершенно другой смысл. Более "приземленный", что ли. "Будь проще и народ к тебе потянется". (с) Из последнего ответа CTAC-KO можно сделать вывод, что он практически ничего не понял из той статьи по логике, которую выложил прошелмимо . Я даже сомневаюсь, что он ее прочитал. Просмотрел - возможно, а вот прочитал - вряд ли. Слишком уж там все мудрено закручено. И, как ни странно, это совершенно нормальная реакция. Поскольку постоянно встает вопрос: а зачем? Ну, что дает знание всех этих терминов в смысле практического программирования? Какое вообще отношение этот текст имеет к рассматриваемым вопросам? Да никакого! Это так, игра ума. Нет, с точки зрения "чистой науки" - все правильно. Именно так и надо писать если речь идет о преподавании в ВУЗ-е, где-нибудь на младших, общеобразовательных курсах. Проблема только в том, что "чистой наукой" на данном форуме не занимаются. Здесь решают вполне конкретные задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 00:20 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Если вернуться к примеру со строительством дома, то класс - это готовая панель ..... При всем уважении к Вам – это не верно. Класс - это чертеж данной панели, а сама панель – это объект данного класса, т.е. – экземпляр, выполненный по этим чертежам. Класс (т.е. чертеж) может быть – один, а объектов – сколько угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 04:37 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ Вы на верном пути: все правильно, но мы по-правильному не будем. автор Ну, что дает знание всех этих терминов в смысле практического программирования? Какое вообще отношение этот текст имеет к рассматриваемым вопросам? при исп-и ООП применяется абстракция, исп-ся операции над объемами. знание этих правил дает возможность правильно мыслить, избегать ошибок при практическом программировании. 2 CTAC-KO , попробуй поиграться с этим примером http://fox.wikis.com/wc.dll?Wiki~DecoratingWithThisAccess~VFP http://fox.wikis.com/wc.dll?Wiki~DecoratorPattern~SoftwareEng потом попьем своей водки и начнем снова говорить о классах, видах ... способах разработки .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 09:40 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
ВладимирМПростой пример. Все (ну, или почти все), слышали такой термин "нормализация". ... А теперь простой вопрос: кто может привести официальное определение, хотя бы первой нормальной формы? Нет, в книжку заглядывать не надо. По интернету лазить тоже. И вообще, у Вас неожиданно погас свет. По памяти давайте! Знание и понимание разные вещи. Можно знать наизусть эти определения, но кроме как цитировать ничего не уметь с ними делать. Но это не значит что они не нужны. Откуда-то ведь практик взял свой опыт? Практику интересно только понимание практического смысла этих формулировок: ВладимирМНормализаци - это устранение дублирования вводимой и изменяемой информации. Информация должна физически хранится в одном месте. А из других мест на нее просто ссылаются. Вот и все. У одного и того же явления с разных точек зрения разные смыслы. Например увеличение скорости с точки зрения физика - ускорение, математика - производная. и оба правы. С чего-то надо начинать изучать теорию реляционных БД. Если студенту выложить практический смысл нормализации, врядли оно понятней ему будет. Или вспомните начало изучения геометрии - учить аксиомы что треугольник всегда треугольный меня по началу просто убивало, но потом понял что вся остальная геометрия строится на этих примитивных аксиомах. В чем я полностью согласен, так в том что форум - не лучшее место для обсуждения теорий. В двух словах не опишешь, то за что теоретики диссертации защищали. Да и выжимки из этого через фильтр собственного опыта не особо интересны. Поэтому получается околонаучный треп, скатывающийся на перепалки типа "сам дурак" или "религиозные войны" где все средства хороши чтобы доказать что молишься "правильному" богу. ВладимирМДалеко не все способны объяснять. В смысле, не дать некую формальную отписку, типа - на, подавись! А объяснить так, чтобы человек понял. Ну, не способны и все. Тем не менее, потребность хоть в каких-то объяснениях есть. Вот и пишут... Можно так же сказать что и понимать все по разному способны, кому-то и отписки хватает, а у кого-то разжеванный по самые нехочу ответ вызывает одни вопросы и непонимание. Я это все к тому что не надо сходу критиковать за то что кто-то кого-то пытается обратить в свою религию, тут все взрослые, большинство с верхним образованием, думаю каждый сам разберется где мухи а где котлеты. Вдруг религия правильная окажется :) А вот если кто-то советует глупости в практических вопросах - тут надо вмешиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 14:12 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Логично сделать панель без балкона. А если перейдем к строительству многоэтажного дома, то из панели без балкона сделаем такую же панель, но с балконом. Это и есть "наследование". Пушку тоже от танка будете наследовать? :-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 22:30 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
fixxer ВладимирМ Логично сделать панель без балкона. А если перейдем к строительству многоэтажного дома, то из панели без балкона сделаем такую же панель, но с балконом. Это и есть "наследование". Пушку тоже от танка будете наследовать? :-))) Eto ty poshutil, pravda? Pushku net, a tank s pushkoj mojno nasledovat' ot abstractnogo tanka bez pushki. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 01:49 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> Логично сделать панель без балкона. А если перейдем к > строительству многоэтажного дома, то из панели без балкона сделаем такую > же панель, но с балконом. Это и есть "наследование". > > Пушку тоже от танка будете наследовать? :-))) Ну как тебе сказать. Раз уж коснулись военной темы, то считай, что те же МИГи можно считать наследованием с переопределением отдельных функций. Вертолет КА-52 - прямой наследник КА-50 (это вертушки) - там практически все от 50-го, за исключением "переопределенных методов и свойчств", как то, кабина на двоих пилотов и модификации вооружения. А если более приземленно - то возьмем к примеру ВАЗ. Начиная с копейки и заканчивая семеркой - прослеживается прямое наследование. Если скажешь - ну это же "НАШ" автопром. Тогда берем любого производителя авто. Любую модель, которая выпускается в кузовах седан и универсал. Как правило универсал - прямой наследник седана, с переопределенной задницей и все!!! Так что панель с балконом и без считаю корректным сравнением. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 07:36 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Привет! Давайте так - Александр пытается мне показать как можно решить мой вопрос практически. Поэтому я не участвую в перепетиях хорошо это или плохо и по поводу теории. Смысл? Смотрел я по тем ссылам. И вот такой практический смысл в этом для себя нашел: у меня в данный момент немало "справочников". Под редактирование справочников я намалевал класс - форма с гридом и кнопками навигации. Скажем в данный момент для каждой бд справочников я в форм дизайнере рисую форму на основе этого класса, по ходу меняя лишь метод Init грида и метод DeleteAction формы. В итоге у меня в проекте куча таких форм лежит. Из меню я вызываю все через do form ... Теперь получается можно сделать так: в отдельном месте (не иначе как процедурный файл) задефайнить эти формы как классы на основе своего "справочного" класса, прописав только указанных 2 метода, а в меню тогда можно ставить create object() вместо do form. Это с одной стороны уменьшит размер выходного файла (практический смысл=0, т.к. разница будет несущественна), но с другой стороны это затруднит создание/редактирование этих форм, т.к. сам процесс будет невизуальными, т.е. не через формдизайнер, а пропиской в прг. С третьей стороны в формдизайнере я делаю то же самое - прг для 2х методов, правда я еще визуально ширину столбцов гриду могу задать, ну и доступ к нужной форме ПОКАЧТО более быстрый, но когда форм в проекте станет в разы больше - не факт. короче попробую я так сделать можно еще у goApp создать метод типа как Assign на пропертю MenuItem. Тогда в самом меню писать что-то типа goApp.MenuItem='bla-bla'. И в том методе уже выложить все деяния. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 07:37 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Ну что же, скопипастчу сюда байку про симуляторы авторПовторное использование объектно-ориентированного кода (в программах) вызвало головную боль у Австралийских Вооруженных Сил. Т. к. симуляторы все активнее используются для тренировок боевых действий вертолетов, от программистов требуется постоянное повышение реализма используемых сценариев, включая детальные ландшафты местности и - в случае операции Феникс - стад кенгуру (т.к. испуганные животные могут легко выдать расположение воинских частей). Hачальник отдела симуляций наземных операций Defense Science and Technologу Organization приказал разработчикам, чтобы получить сертификат качества ИСО8, смоделировать перемещения кенгуру и их реакцию на вертолеты. Будучи грамотными программистами, те использовали готовые программные объекты, описывающие поведение пехоты в аналогичной ситуации, заменив изображения солдат на изображения животных и увеличив их скорость. Желая продемонстрировать свое мастерство перед посетителями - американскими пилотами - горячие австралийские парни "разбудили" кенгуру, пройдя над ними на малой высоте во время симуляции. Кенгуру разбежались, как и предполагалось, и американцы понимающе кивнули... А затем сильно удивились, т.к. кенгуру, перегруппировавшись, появились из-за холма и выпустили тучу стингеров по злополучным вертолетам. (Программисты забыли удалить соответствующий кусок кода из "пехотных" объектов). Урок? Объекты создаются с определенными атрибутами, и любой объект-потомок наследует этот атрибут. Смущенные программисты научились быть более внимательными, используя готовые объекты в своих программах, а американцы уехали с невольным чувством уважения к австралийской фауне. Hачальник симулятора отметил, что пилоты с этих пор боятся кенгуру как огня, для чего, собственно, и, нужен был этот кусок кода в симуляторе. ________ Не дадим распространиться заразе политкорректности! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 08:37 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторСмысл? чтобы понять большее, нужно начать с меньшего. мне нужен верный ход твоих мыслей, чтобы ты правильно начал выстраивать цепочку взаимосвязей, правильно анализировать предметы. это понятно? ия должен тебе буду объяснить почему так правильнее, а иначе - нет. делать я это буду, опираясь на методы и законы Логики. авторно с другой стороны это затруднит создание/редактирование этих форм, т.к. сам процесс будет невизуальными, т.е. не через формдизайнер, а пропиской в прг. ты ошибаешься, обрати внимание на мои примеры я всегда визуально разрабатываю классы разработка класса формы также происходит визуально в дизайнере. посмотри все мои примеры - я всегда рисую формы визуально в библиотеке виз.классов. ты торопишься, я покажу виз-е классы и расскажу о невизуальных. все визуальные классы мы всегда рисуем визуально в дизайнере. никаких прг мы не пишем. Все классы визуальные помещаем в библиотеки виз.классов. все классы, кроме session, column, header визуальные (я так считаю в отличии от некот.авторов) - это классы, котор.мы можем разрабатывать в дизайнере классов. Невизуальные классы описываем в процедуре. другое дело - созданные объекты - он уже визуальные и невизуальные. к прим. кнопка - визуальный объект, таймер - невизуальный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 09:34 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2CTAC-KO обрати внимание на пример. посмотри как нарисована форма. много отличий от дизайнера форм?? (отличие - ты имеешь "рафинированный" класс) и затем ты работаешь только с классами (обрати внимание на закон Логики, утверждающий, что опр-и необходимо производить с предметами, имеющими одно основание) (имеется ряд преим-в, и я пока умолчу, мы пока учимся разрабатывать классы) http://www.sql.ru/forum/actualfile.aspx?id=5265404 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 09:40 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторно когда форм в проекте станет в разы больше - не факт. опять ты торопишься. Валить все в одну виз-ю библиотеку нельзя!! Будем делать много библиотек и объединять классы в зав-ти от общ.признаков, или др.каких-то хар-к (нам это никто не запретил, и будем использовать опять-же методы, которым нас учит Логика) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 09:44 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
не, стоп, тут уже ты меня неправильно понял. Я когда написал что форм у меня много, так это не в классах, а в проекте на закладке Docs. Класс для них один, там много однотипных форм на нем созданных. Я никуда не тороплюсь. Я просто пытаюсь осваивать материал на своей конкретной задаче. В той теме про лягушек - брали класс и его сабклассили, переписывая или добавляя к базовому чего надо. Вот и я хочу так попробовать, вместо создания на своем классе формы, во что практически входит редакция 1 метода формы и 1 метода грида на этой форме. т.е. описать сабкласс на классе и столкнулся с проблемой - медот формы переписать проблем нет, а вот как инит гриду этой формы переписать? типа Код: plaintext 1. 2. а как тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 10:56 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
2CTAC-KO ты пытаешься сразу перейти к практике не освоив азов. так грид то-же классом своим должен быть вот все и будем все классами тянуть нужно вначале с одиночными классами научиться работать, а затем уже собирать и комбинировать из различных типов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 11:01 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
посмотри, что пишут работодатели авторExpecting Member Откуда: Сообщений: 80 автор По части Delphi требуется приличное знание технологий ООП. Если этими знаниями не обладаете - не надо тратить наше и свое время. На дурку не прокатит. Чтобы не тратит ваше время на рассмотрение резюме, поясните,пожалуйста, что вы подразумеваете под приличным знанием технологий ООП? вчера, 17:09 [5273066] Цитировать Сообщить модератору Re: Разработчик T-SQL + Delphi32. Москва, крупный банк Agers Member Откуда: Сообщений: 14 Expecting Надо, чтобы человек умел работать с иерархиями классов, понимал, что такое полиморфизм, а не только кидать кнопки на форму. А то прочитают "Delphi для чайников" и говорят, что знают Delphi, а чем отличается overload от override не знают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 11:25 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимотак грид то-же классом своим должен бытьтак он сибе отдельным классом. но форма-то класс и на ней уже этот классовый грид лежит. у тебя же класс-форма содержит на себе класс-грид? ну а как его, гридовый, инит переписать через классдефайн из этой формы? прошелмимовот все и будем все классами тянуть нужно вначале с одиночными классами научиться работать, а затем уже собирать и комбинировать из различных типовок. попробуем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 11:26 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
авторну а как его, гридовый, инит переписать через классдефайн из этой формы? посмотри есть наследник, вот у него есть внутри грид ну я взял и в инит грида написал что нужно этого тебе достаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 11:30 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо авторну а как его, гридовый, инит переписать через классдефайн из этой формы? посмотри есть наследник, вот у него есть внутри грид ну я взял и в инит грида написал что нужно этого тебе достаточно?ну я понял, ты в родительский грид в инит напишешь чего надо, а в наследника оно попадет с этим инитом (наследует). т.е. сначала нужно инит грида переписать, затем пересоздать класс формы с этим гридом? а зачем такое выделение? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 11:39 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Galyamov Rinat > Логично сделать панель без балкона. А если перейдем к > строительству многоэтажного дома, то из панели без балкона сделаем такую > же панель, но с балконом. Это и есть "наследование". > > Пушку тоже от танка будете наследовать? :-))) Ну как тебе сказать. Раз уж коснулись военной темы, то считай, что те же МИГи можно считать наследованием с переопределением отдельных функций. Вертолет КА-52 - прямой наследник КА-50 (это вертушки) - там практически все от 50-го, за исключением "переопределенных методов и свойчств", как то, кабина на двоих пилотов и модификации вооружения. А если более приземленно - то возьмем к примеру ВАЗ. Начиная с копейки и заканчивая семеркой - прослеживается прямое наследование. Если скажешь - ну это же "НАШ" автопром. Тогда берем любого производителя авто. Любую модель, которая выпускается в кузовах седан и универсал. Как правило универсал - прямой наследник седана, с переопределенной задницей и все!!! Так что панель с балконом и без считаю корректным сравнением. А я не считаю. Дело в том, что кроме наследования существует еще один способ расширения функциональности классов - аггрегация. Об этом часто забывают, а порой она много гибче наследования. Возьмем тот же пример с ВАЗом. Есть "копейка", а есть "одиннацатая" и "тринадцатая". Отличаются, по сути движком. Так вот, вместо того, чтобы наследовать от "копейки" и с мясом выкурочивать движок, проще создать сущность "двигатель" и аггрегировать ее в класс "копейка". И тогда заменой движка мы получаем "одиннацатую" и "тринадцатую" без головной боли. (класс "копейка" остается неизменным) Если идти дальше, то и другие части можно аггрегировать, грубо говоря, оставляя "шасси" и навешивая опции, это к слову о "седанах" и "универсалах". Простое "правило буравчика" на необходимость наследования это проверка на отношение "is-a". "универсал" is-a "седан"? да ни в коем случае. Возможно они is-a "кузов". Но это, возможно, не более чем единый интерфейс для аггрегации их в "шасси". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 11:39 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
прошелмимо2CTAC-KO обрати внимание на пример. посмотри как нарисована форма. много отличий от дизайнера форм?? (отличие - ты имеешь "рафинированный" класс) и затем ты работаешь только с классами (обрати внимание на закон Логики, утверждающий, что опр-и необходимо производить с предметами, имеющими одно основание) (имеется ряд преим-в, и я пока умолчу, мы пока учимся разрабатывать классы) http://www.sql.ru/forum/actualfile.aspx?id=5265404 ну давай разбирать чтоли? создаем myCAD. Код: plaintext тогда создаем форму myform Код: plaintext 1. Код: plaintext 1. Код: plaintext ну а потом если нужно другое условие то там подменяеццо условие сWhere макроподставой и перевыборка в курсор thisform.oCad.CursorRefresh(). от дизайнера форм отличий нет. только все создаваемые формы лягут в классы, а не в доки, но в том же кол-ве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 12:09 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
>Если идти дальше, то и другие части можно аггрегировать, грубо говоря, >оставляя "шасси" и навешивая опции, это к слову о "седанах" и >"универсалах". ... Возможно они is-a "кузов". Но это, возможно, не более >чем единый интерфейс для аггрегации их в "шасси". Согласен с агрегацией, но я имел в виду, что класс "авто" описывает Именно авто в СБОРЕ. У него есть свойства - движок, шасси, кузов и т.д., являющиеся объектами ссответсвующих классов со своими свойствами и методами. Согласен, что седан и универсал - это, скорее разные ветки наследования от класса авто, но учитывая, что седаны появились несколько раньше универсалов (и с конвеера они сходят как правило раньше универсалов), можно предположить, что все таки меняют класс АВТОСЕДАН на наследованный от него АВТОУНИВЕРСАЛ, с переопределенным свойством "КУЗОВ", который вполне может быть объектом соответствующего класса КУЗОВУНИВЕРСАЛ, наследованный от класса КУЗОВ или (даже скорее всего, потому что инженеры не разрабатывают новый кузов "универсал", а переделывают из кузова "седан", который опробован на стендах и прошел краш-тест) от класса КУЗОВСЕДАН. Что - то мы с тобой в регилиги вдарились :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 12:28 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Galyamov Rinat можно предположить, что все таки меняют класс АВТОСЕДАН на наследованный от него АВТОУНИВЕРСАЛ, с переопределенным свойством "КУЗОВ", Единсвенное не понятно, зачем чтобы переопределить свойство рожать наследника? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 13:06 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
> можно предположить, что все таки меняют класс АВТОСЕДАН на > наследованный от него > АВТОУНИВЕРСАЛ, с переопределенным свойством "КУЗОВ", > > > Единсвенное не понятно, зачем чтобы переопределить свойство рожать > наследника? Чтобы оставить возможность создавать создавать объекты обоих классов. Или я не так понял вопрос? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 14:10 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
такой вопрос - решил создать класс - кнопку btnApply с методом Validation, в который вписываю проверку заполненности необходимых полей на форме, т.е. разрешать отрабатывать Click кнопы или нет. Из метода возращаюсь по Return .T./.F.. Затем в методе Click кнопы ставлю Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 12:35 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
Имя класса::Validation() С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 13:50 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
CTAC-KO... Собственно вопрос - если так делать, то отрабатывается чтоли только классовый, т.е. наследованный Validation? А текущий мимо зарплаты? Так наверно: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 14:13 |
|
||
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#18+
спасибо. короче я какбы изначально неправильно удумал. Надо ту процедурку в метод клика, с небольшой добавкой. А сам код клика выносить в отдельный метод, я назвал ClickCode Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 17:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1588160]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
116ms |
get tp. blocked users: |
1ms |
| others: | 184ms |
| total: | 385ms |

| 0 / 0 |
