Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
ТЕХНОЛОГИИ ДОСТ... 65361
Имитационное мо... 59135
Реклама
http://labdepot.ru/oborudovanie/vakuumnye-laboratornye-pechi/
Сейчас на сайте
Гостей: 3
На сайте нет зарегистрированных пользователей

Пользователей: 13,104
новичок: oseose
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование системы управления качеством производственного процесса на...
Моделирование литейного цеха на GPSS + Пояснительная записка
База данных склада на Delphi + Схема БД

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
ДОСТОИНСТВА И НЕДОСТАТКИ ООП. Что мы приобрели?


Благодаря использованию возможностей языка, нам удалось за основу документа взять стандартный контейнерный класс TSringList. Это самый общий пример эффективного программирования. Тщательно разработанный код для TStringList удалось использовать повторно. Как следствие, отпала необходимость создавать методы для добавления, удаления, доступа к элементу по номеру, хранения строк и связанных с ними объектов. Этот же механизм наследования позволил упростить и собственно нашу часть программирования.
Мы разработали лишь основу программы, но можем надеяться, что оставшаяся часть решения задачи существенно упростится. Во–первых определенные выше классы естественны для телеконференций, во–вторых все они производные от (являются разновидностью) документа, и их использование унифицировано: методы имеют одинаковый смысл и имена, а виртуальные методы позволяют не выяснять точный класс каждого объекта.
Что бы кто–либо другой мог воспользоваться нашими трудами, необходимо снабдить разработанные классы описаниями. Их структура оказалась как будто специально приготовлена для этого: необходимо описать лишь интерфейсную (public) часть TDoc, небольшие изменения в TTalk, TFileDoc и TConf, неплохо также привести пример создания, использования и уничтожения объекта каждого класса. Обратите внимание на то, что для пользователя документируется только интерфейсная часть, например, ничего не нужно объяснять о сохранении докладов. Доклад добавляется в конференцию и всё. Остальное будет сделано при сохранении конференции.
Мы скрыли поля данных и отгородили пользователя от неправильного вмешательства в наши объекты. Примером такого вмешательства может служить манипулирование полем FStored. Пользователю наших классов не позволено самостоятельно задавать значение этого поля. Сделав это для конференции, он столкнулся бы с ошибками. Теперь, если в программе обнаружена ошибка, мы отнесем ее в одну из категорий:
1. ошибка не связана с использованием TDoc или его потомков;
2. действия пользователя не соответствуют описанию наших классов;
3. допущена ошибка в описании;
4. ошибка в проектировании или кодировании нашей части программы.
Из–за ясности описаний пункты 2 и 3 проверить достаточно легко. Обсудим последний пункт в нашем списке.
Допустим удалось установить, что TFileDoc загружается правильно, а TConf с ошибкой. В этом случае главное внимание следует уделить методу TConf.LoadBody. Поскольку его тело содержит всего 11 строк, а первая, вторая и одиннадцатая строки правильные, можно рассчитывать, что с оставшимися восьмью мы справимся за разумное время. Если же наоборот, обнаружилось, что ошибка в TFileDoc.LoadBody, то после ее исправления автоматически заработает и TConf.
Таким образом, в результате наследования наши методы выполняют достаточно сложные действия, оставаясь короткими. С другой стороны, исправление ошибок в базовом классе уменьшает количество ошибок и в классах–потомках. Всё это позволяет быстрее получать правильно работающие программы.
Предположим далее, что возникла необходимость изменить содержание заголовка документа. В скольких процедурах нужно будет внести изменения? Скорее всего в двух: TDoc.LoadHdr и TDoc.Store — остальные изменятся автоматически. Эта устойчивость к изменениям — тоже результат проектирования.
Опубликовал Kest October 12 2011 17:38:48 · 0 Комментариев · 4996 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Report
ИНТЕРНЕТ ПРОГРАММ...
Averaging [Исходн...
Программирование ...
Sztransppanel
39 статьи по Delphi
Пишем программы и...
Моделирование дви...
PHP 5
Assembler. Практикум
ICQ
Учебник для продв...
PCXReader. Програ...
Иллюстрированный ...
CodeGear RAD Stud...
Crypt32
Иллюстрированный ...
Добавление басса ...
Comdrv
Пятнашки и крести...

Топ загрузок
Приложение Клие... 100505
Delphi 7 Enterp... 89599
Converter AMR<-... 20090
GPSS World Stud... 14491
Borland C++Buil... 12530
Borland Delphi ... 8880
Turbo Pascal fo... 7082
Калькулятор [Ис... 5070
Visual Studio 2... 5016
FreeSMS v1.3.1 3552
Случайные статьи
Использование спец...
, специализирующая...
Моделирование элек...
Удаление ранее вве...
Что может инженер ...
Расцепляйте модели...
Для каких адресов ...
Игры для взрослых
ВОСХОДЯЩАЯ РЕКУРСИЯ
Некоторые выводы в...
Ручная и автомати...
Жидкость oldchemist
Дверной доводчик d...
Модемы стандарта V.90
Учтите, что АН и E...
Удаление индекса (...
Особенности примен...
Определение длины ...
Константы основных...
Перепишем функцию ...
Motorola Moto X XT...
Возможности окруже...
Свойство базисности
Ограниченные типы
Открытие и закрыти...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?