|
|
|
Объектная модель программы
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35107110&tid=1588160]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 408ms |

| 0 / 0 |
