Навигация
Главная
Поиск
Форум
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
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
21 ошибка прогр... 62505
Реклама
Сейчас на сайте
Гостей: 3
На сайте нет зарегистрированных пользователей

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

База данных студентов на Delphi + Microsoft SQL Server
Диплом - база данных поставщиков на Delphi (MS Sql Server)+ Пояснительна...
Информационная система - продуктовый магазин на Turbo Pascal (База данны...

Реклама



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

ПОДПИСЫВАЙСЯ на канал о программировании
Проектирование структуры объектов

·       Объект  типа TPoint является точкой с координатами x,y вещественного типа и цветом  Pcolor. Вещественный тип координат точки определяется тем , что этот объект предназначен для описания вершин квадрата, а при вращении они могут принимать вещественные значения. Кроме очевидных  необходимых методов  Init, Show  и Destructor  добавим в их число и виртуальный метод Rotate реализующий плоское вращение точки вокруг заданной оси. Координаты оси вращения имеют целый тип и задаются извне (являются входными параметрами метода). Целые значения координат оси обусловлены тем, что размер as квадрата в дальнейшем будем выбирать среди целых значений.

·       Объект типа TLine наследует все поля  и методы TPoint, но перекрывает своими виртуальными методами Show и  Rotate соответствующие методы родителя. Отметим, что перекрываются и другие одноименные методы (например, Constructor Init, Destructor), но как указывалось ранее, в программе с ними будет установлена статическая связь и они останутся вне рамок, обеспечивающих полиморфизм объектов. Обратите внимание, что заголовки виртуальных методов должны оставаться неизменными. Тип TLine, кроме унаследованных полей x и y, содержит два поля pn и pk типа TPoint, которые являются объектами и описывают две точки, задающих отрезок прямой  на плоскости – будущую сторону квадрата. Виртуальные методы Show и  Rotate позволяют отображать этот отрезок на экране цветом Lcolor  и поворачивать его вокруг заданной оси. На первый взгляд, непонятна роль унаследованных полей x  и y. Тем более, что можно было в типе TLine обойтись только одним полем pn, а координаты конца отрезка поместить в x и y. Однако, такой подход привел бы к разным синтаксическим конструкциям при обращении к  начальной  и конечной точкам отрезка, что повлияло бы на единообразие стилистики программы и затруднило бы ее восприятие. Кроме того, потомки данного типа могут использовать эти поля для своих специфических нужд, например, помещая в них координаты середины отрезка.

·       Объектный тип TSquare  (квадрат) конструируется из 4-х отрезков типа ТLine, длины стороны квадрата as и переменной Scolor для задания его цвета, а виртуальные методы Show и Rotate обеспечивают его полиморфические свойства отображения и поворота.

·       Тип TScreen, находясь на самом нижнем уровне иерархии описывает самый сложный объект – экран , со всеми его  «действующими лицами»: катящимся квадратом и поверхностью качения. Кроме квадрата, унаследованного из родительского типа, в данном типе имеются О-поля для задания положения и цвета поверхности качения (поля Gdisp и Gcolor) и соответствующий метод DrawGround ее прорисовки на экране, а также поля OsX,OsY и angle для текущих координат положения оси вращения и текущего значения угла поворота квадрата соответственно. Метод GraphInit инициализирует графический режим монитора VGAHi и сделан виртуальным, так как тип TScreen сам, в дальнейшем, может использоваться как родительский для создания других объектов, использующих другие графические режимы. Метод  ShiftOsXY отвечает за своевременное перемещение оси вращения квадрата при его качении по поверхности и тоже является виртуальным, поскольку условия перемещения оси вращения квадрата зависят от рельефа качения и в потомках может возникнуть   необходимость его модификации. Вообще, во всех случаях, когда возникают сомнения относительно того, сделать метод статическим или виртуальным, лучше сделать выбор в пользу виртуальности, поскольку «все течет – все изменяется» и нельзя исключать, что в дальнейшем данный объект, уже в другой Вашей программе, может пригодиться как прародительский и сэкономит Ваши время и усилия. Метод Go реализует основные действия при качении квадрата:  анимацию, регенерацию сцены при достижении квадратом края экрана, реакцию на завершение программы и т.п.

Опубликовал Kest Апрель 03 2014 02:09:59 · 0 Комментариев · 3154 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Упорядоченный дин...
Клавиатурный трен...
PHP в примерах
mp3tag
Adapter (пример D...
MiniTetris [Исход...
Delphi 2005 Учимс...
3D Тетрис [Исходн...
DelTrayIcon [Исхо...
PDF
JanComp
Трассировка прово...
DS_Group
TsHintManager
AlignEdit
netBIOS
Task Shedule
Progressbar
Text3D
Меню проводника в...

Топ загрузок
Приложение Клие... 100568
Delphi 7 Enterp... 93541
Converter AMR<-... 20124
GPSS World Stud... 16040
Borland C++Buil... 13437
Borland Delphi ... 9416
Turbo Pascal fo... 7146
Калькулятор [Ис... 5351
Visual Studio 2... 5054
FreeSMS v1.3.1 3577
Случайные статьи
Обсуждение структу...
Microsoft и NetWar...
Поиск
Исходя из сценария...
Среди чисел 1, 2, ...
Реклама Сургут
Законы эмпирическо...
Создание и конфигу...
Процедура Line - в...
Cannot Read or Wri...
Классификация устр...
Анализ посещаемост...
Скрипт показа банн...
ShiftRow
Работа с диспетчер...
Типы материнских плат
Процедура SetLineS...
Установление подли...
Задание на моделир...
Игровой видео слот...
Выбор разрешения э...
показана куча из 1...
Моделирование расп...
Аппаратная реализа...
Как Windows обнови...
Статистика



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


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