Навигация
Главная
Поиск
Форум
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
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 90
На сайте нет зарегистрированных пользователей

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

Меры близости на векторах в Delphi + Блок схемы
Моделирование ЭВМ на GPSS (три класса заданий) + Пояснительная записка
Принадлежит ли точка пересечению двух окружностей на Turbo Pascal + Отче...

Проектирование структуры объектов

·       Объект  типа 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 April 02 2014 22:09:59 · 0 Комментариев · 3658 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Crystal Button
Visual Studio 200...
DateEdit
JanComp
Animation Effect ...
AID антивирус
С/C++ Программиро...
Время загрузки ...
CABfiles
Интерактивный инт...
PHP в примерах
Apollovcl61
Zoom [Исходник на...
AdBlaster v2.5 - ...
Разработка клиент...
Калькулятор [Исхо...
Программирование ...
Игра в крестики н...
WordReport
Быстрое создание ...

Топ загрузок
Приложение Клие... 100772
Delphi 7 Enterp... 97809
Converter AMR<-... 20259
GPSS World Stud... 17014
Borland C++Buil... 14189
Borland Delphi ... 10267
Turbo Pascal fo... 7372
Калькулятор [Ис... 5972
Visual Studio 2... 5206
Microsoft SQL S... 3661
Случайные статьи
ФОРМЫ НЕСТАНДАРТНО...
Инструменты среды ...
Использование объе...
African vases
Страница не умещае...
Как повысить тИЦ? ...
Интернет-ресурсы и...
• Обеспечьте посто...
Constant and саsе ...
Функция проверяюща...
История опытов Эрн...
Ушу СПб
Есть еще несколько...
Асинхронный режим ...
Клуб вулкан — подк...
0, добавьте следую...
Корневой маршрутиз...
PowerShell - продо...
Аудиозапись с помо...
Программа Stufflt ...
Подход к реализаци...
Игровые автоматы В...
Играйте бесплатно ...
Первая попытка зап...
Есть ли польза от ...
Статистика



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


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