Навигация
Главная
Поиск
Форум
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 65431
ТЕХНОЛОГИИ ДОСТ... 62379
Имитационное мо... 58018
Реклама
Сейчас на сайте
Гостей: 1
На сайте нет зарегистрированных пользователей

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

Моделирование информационно-поисковой библиографической системы на gpss ...
Информационная система - транспортный парк на Turbo Pascal (База данных)...
Моделирование работы участка термической обработки шестерен на GPSS + По...

Реклама



Подписывайся на 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 April 03 2014 02:09:59 · 0 Комментариев · 2957 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Создание фракталов
Delphi 7 Enterpri...
Visual Studio 200...
Панель "ссылки"
Apollovcl61
Простой пример ка...
Программирование ...
Программирование ...
PHP: обучение на ...
Создание оригинал...
Pro-Download Sys...
PDF
Библия хакера 2 К...
JanReplace
Text effect
Midi
Дешифратор содерж...
C# 2005 и платфор...
Программирование ...
Как программирова...

Топ загрузок
Приложение Клие... 100472
Delphi 7 Enterp... 87498
Converter AMR<-... 20081
GPSS World Stud... 13096
Borland C++Buil... 11941
Borland Delphi ... 8633
Turbo Pascal fo... 7042
Visual Studio 2... 5002
Калькулятор [Ис... 4860
FreeSMS v1.3.1 3544
Случайные статьи
Проверка балланса....
Если протокол не в...
Представление о пр...
Множественный дост...
Вычисление произол...
БЛОКИ
ЦЕЛЬ: ПОЛУЧЕНИЕ СТ...
Изменение активной...
Инфографика и SEO
Фреймы
Разбиения множества
Использование объе...
Создание проекта и...
Создание EXE прило...
Условная компиляци...
Класс TShape
Кодовые точки и ко...
Принтеры и факсы
Организация ввода-...
Определение решения1
Понятие модели и м...
Некоторые миры
Особенности примен...
Функция округления...
10 основных способ...
Статистика



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


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