TURBO PASCAL |
Новости
|
ООП - это очень простоВыпуск № 5 Выдавать глобальные идеи - это удовольствие. Мысли ООПрограммиста об ООПрограммированииДанная работа является продолжением рассылки ООП - это просто Сначала я напишу о том, как я понимаю сущность объектно-ориентированного программирования (а может другие не так, так пусть напишут сами) Задумывая объект не надо думать о программировании!! В этом заключена основная идея объектно - ориентированного программирования, которое совершило настоящий переворот в образе мышления программистов. Следует определить, для чего, с какой целью создаем объект, даже если его создаем с учебными целями. Нужно определить, какую группу задач должен решать этот объект. (Именно так! Именно группу задач!) Практически никогда объект не создается для решения одной задачи. И даже если это так, то все равно, следует подумать, куда еще можно применить этот объект. НО ПРИ ЭТОМ, когда будем применять еще, не нужно будет переписывать объект, а лишь определить его ПОТОМКОВ с новыми качествами. Исходя из цели определяем структуру объекта, но опять же не в операторах Паскаля, С++ или другого языка, а в "человеческих" терминах:
Теперь нужно решить, что в этом объекте является основным, а что лишь добавляет удобства в работе с ним. Такое размышление позволяет определить цепочку наследования объектов (Вот, вот! Уже началось ООП!). То есть в основе всего находится базовый объект. Он только очерчивает общую структуру всех объектов - его наследников. Базовый объект решает только одну главную задачу. Весь сервис реализуют его наследники. Наследование - одно из ключевых понятий объектно - ориентированного программирования! Разработчикам компиляторов (и трансляторов) языков программирования удалось создать эффективный механизм наследования для объектов. И не пользоваться этим механизмом Вы не сможете, если Вы перейдете, например, на Delphi. Так что давайте попробуем разобраться в родственных связях на конкретном примере реализации базы данных Планирование объектаРассуждения о базовом объекте:
Прежде чем перейти к реализации задуманного следует рассказать Вам всю правду об объектах. Сейчас это так модно! Так вот: объекты не находят в капусте! Сначала объект описывают в разделе описания типов TYPE, а потом обычно их размещают в динамической памяти компьютера. Для этого у объекта должен быть метод, который может называться как угодно, делать, что угодно, или ничего не делать, но определяться не как procedure или function, а только CONSTRUCTOR. В Borland Pascal ему обычно дают имя Init, в Delphi - Create, а в С++ - имя класса (объекта, по-нашему, по Борланд Паскалевски). Задачей этого метода является построение объекта (название такое). Этот метод должен быть вызван самым первым. Конструктор может ничего не делать. Срабатывает один только его вызов. Заметим, что constructor также обеспечивает работу эффективного механизма "изменяющихся" (виртуальных) методов. Вывод: Нет никаких причин, почему бы не завести себе constructor, а также ... destructor. Его роль противоположна constructor'у. Он умеет удалять объект. Заметим, что в Borland Pascal для destructor'a используют "обычное" имя Done, в Delphi - Destroy, а в С++ - имя класса с тильдой (~) впереди. Аналогично конструктору, деструктор может ничего не делать. Срабатывает его вызов. Все остальное - дополнительные действия. Вывод 2: почему бы не завести себе деструктор (а также кошку, свечной заводик... :-)) ) Вывод 3: не бойтесь, больше никого и ничего обязательного нет в составе объектов. Все - только добровольное РеализацияПредлагаемая мною реализация состоит из трех файлов:
Сейчас только приведу код в виде одного архива можно здесь: BaseObj.zip. Объяснения дам позднее: этот файл, который Вы читаете, и так получается большим. ЗЫ: Вы можете присылать свои предложения о составе хранимой единицы. (Не знаю, как Вы, а я не сразу понял, почему пишется "ЗЫ") Наши предложения и вопросыМы тут пошарили в своих карманах и кроме пяти крошек и двух фиг нашли свою рассылку, посвященную решению задач. Что если ее возобновить? Мы предлагаем не просто решать задачи, а решать олимпиадные задачи (любых олимпиад), и не столько решать, сколько обмениваться опытом, алгоритмами решения, поиску более эффективных алгоритмов решения. Думаю, что в таком варианте рассылка окажется полезной. Вот например, как вывести сумму прописью. Видел несколько решений, может найдем получше? А форма подписки - так вот она:
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |