Обьектно-ориентированное программирование
Использование объектно-ориентированных технологий языка Delphi. Решение задачи прорисовки элемента динистор на рабочем поле программы. Обработка входных сигналов с клавиатуры и мыши. Использование работы с файлом для сохранения состояния программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 20.05.2012 |
Размер файла | 345,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Российский государственный университет
инновационных технологий и предпринимательства
Пензенский филиал
Кафедра управления информационными ресурсами
Пояснительная записка
к курсовому проекту по дисциплине
«Информатика и программирование»
Тема: Обьектно-ориентированное программирование
Содержание
Введение
1.Использование объектно-ориентированных технологий языка
2.Описание решаемой задачи
2.1 Прорисовка элемента
2.2 Обработка событий проложения
2.3 Использование специальных компонент
2.4 Описание сохранения состояния
Заключение
Список используемой литературы
Приложение А
Приложение Б
Введение
В жизни современного общества важную роль играют автоматизированные информационные технологии. Но развитие информационных технологий происходит весьма неравномерно: если современный уровень вычислительной техники и средств связи поражает воображение, то в области смысловой обработки информации успехи значительно скромнее.
Сегодня уже не стоит вопрос о том, что каждый грамотный специалист в области техники и естественных наук должен быть знаком с вычислительной техникой. Сегодня мы говорим о всеобщей компьютерной грамотности. Путь к такой грамотности пока еще на стадии становления.
Становление информационного общества повлечёт за собой радикальные изменения в сфере производства и деловой активности людей, а также и во всей социальной сфере. В этом обществе, решающую роль будут играть не вещество и энергия, а информация и научные знания - факторы, которые станут определять перспективы его дальнейшего развития.
1.Использование объектно-ориентированных технологий языка
Основной упор этой модели в Delphi делается на максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет ни какой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать.
В стандартную поставку Delphi входят основные объекты, которые образуют удачноподобранную иерархию из 270 базовых классов. Но если возникнет необходимость в решении какой-то специфической проблемы на Delphi, советуем, прежде чем попытаться начинать решать проблему “с нуля”, просмотреть список свободно распространяемых или коммерческих компонент, разработанных третьими фирмами, количество этих фирм в настоящее время превышает число 250, хотя, возможно, я не обо всех знаю. Скептики, возможно, не поверят мне, когда я скажу, что на Delphi можно одинаково хорошо писать как приложения к корпоративным базам данных, так и, к примеру, игровые программы. Тем не менее, это так. Во многом это объясняется тем, что традиционно в среде Windows было достаточно сложно реализовывать пользовательский интерфейс. Событийная модель в Windows всегда была сложна для понимания и отладки. Но именно разработка интерфейса в Delphi является самой простой задачей для программиста.
2.Описание решаемой задачи
В данном разделе описаны ключевые моменты построение программы. Рассмотрены компоненты языка программирования в пересечении с потребностями реализации задания. Проектирование решения состоит из следующих частей:
-Прорисовка элемента - решение задачи прорисовки элемента динистор на рабочем поле программы.
-Обработка событий приложения - обработка входных сигналов с клавиатуры и мыши и их отображение в программе.
-Использование специальных компонент - использование стандартных компонент языка программирования для редактирования состояния объекта.
-Описание сохранения состояния - использование работы с файлом для сохранения состояния программы.
Далее рассмотрим эти этапы более детально.
2.1 Прорисовка элемента
Рассмотрим решение задачи прорисовки элемента динистор на рабочем поле программы.
Рисование линий осуществляется с помощью процедур MoveTo и LineTo модуля Graphics. Ниже наведено их описание:
MoveTo - Перемещает точку начала рисования линии в указанные координаты x и y (Canvas.MoveTo(50, 100);).
LineTo - Рисует линию начиная с текущей позиции (см. MoveTo) до указанных координат x и y.(Canvas.LineTo(50, 100)).
Эффект перемещения точки начала рисования линии так же достигается при помощи установки своства PenPos в канвасе... например, "Canvas.PenPos.x := 20;", "Canvas.PenPos.y := 50", или "Canvas.PenPos := Point(20,50);".
По умолчанию, точка начала рисования установлена в (0,0), то есть, если сразу вызвать "Canvas.LineTo(100,100);" то будет нарисована линия из точки (0,0) в точку (100, 100). Точка начала рисования автоматически переместится в (100, 100), то есть, если выполнить команду "Canvas.LineTo(200, 100);", то следующая линия будет нарисована из точки (100, 100) в (200, 100). Поэтому, если мы хотим рисовать линии не соединённые друг с другом, то придётся воспользоваться методом MoveTo.
Линия, нарисованная при помощи LineTo использует текущее перо канваса (типа TPen). Основные свойства пера, это ширина - "Canvas.Pen.Width := 4;" (при помощи которого можно задавать различную ширину линий), и цвет "Canvas.Pen.Color := clLime;".
2.2 Обработка событий проложения
Объекты из библиотеки визуальных компонент (VCL) Delphi, равнокак и объекты реального мира, имеют свой набор свойств и свое поведение - набор откликов на события, происходящие с ними. Список событий для данного объекта, на которые он реагирует, можно посмотреть, например, в Инспекторе Объектов на странице событий. (На самом деле, на этой странице представлен список свойств, которые имеют тип вроде TMouseMoveEvent и представляют из себя процедуры-обработчики событий. Существует соглашение по названиям данных свойств. Например, OnDblClick соответствует двойному щелчку мыши, а OnKeyUp - событию, когда нажатая клавиша была отпущена.) Среди набора событий для различных объектов из VCL есть как события, портируемые из Windows (MouseMove, KeyDown), так и события, порождаемые непосредственно в программе (DataChange для TDataSource).
Поведение объекта определяется тем, какие обработчики и для каких событий он имеет. Создание приложения в Delphiсостоитиз настройки свойств используемых объектов и создания обработчиков событий.
Простейшие события, на которые иногда нужно реагировать - это, например, события, связанные с мышкой (они есть практически у всех видимых объектов) или событие Click для кнопки TButton. Предположим, что вы хотите перехватить щелчок левой кнопки мыши на форме. Чтобы сделать это - создайте новый проект, в Инспекторе Объектов выберите страницу событий и сделайте двойной щелчок на правой части для свойства OnClick. Вы получите заготовку для обработчика данного события:
Использование событий можно посмотреть в коде программы в приложении А.
2.3 Использование специальных компонент
Главное меню (MainMenu) -использовали для создания главного меню приложения
Меткя (Label) - использовали для простого отображения текстовой информации, которую пользователь не может редактировать вовремя работы приложения (отображение названий в программе)
Кнопка (Button) - обычная кнопка предназначена для выполнения какого-либо кода по наступлению события нажатия на кнопку пользователем
Флажок (CheckBox) - представляет опцию, благодаря которой пользователь может переключать положение (вкл./выкл.) . Использовали для контроля выхода за поле редактирования
Список (ListBox) - Предназначен для вывода нескольких строк текста. Пользователь может выбрать любую из этих строк простым нажатием на ней. Использовали
Выпадающий список (ComboBox ) - Является как бы комбинацией списка и поля для ввода. Пользователь может ввести самостоятельно текст в поле, либо выбрать нужный из предоставленного списка
Панель (Panel) - Используется для созданий строк состояния или панелей инструментов. На панели могут размещаться другие компоненты. Использовали для групировки компонент редактирования в приложении.
2.4 Описание сохранения состояния
Состояние приложения представляется как набор состояния объектов. Состояние объекта - это запись языка Delphi. Для сохранения состояния приложения в файл использовались следующие процедуры языка программирования :
Procedure Assign File (var F; FileName: String);Связывает файловую переменную F с именем файла FileName. Тестирует маркер конца строки и возвращает True, если компонент строки достигнут.
Procedure Read (var F: TextFile; V1 [, 72,...,Vn ]); Читает из текстового файла последовательность символьных представлений переменных Vi типа Char, String, а также любого целого или вещественного типа, игнорируя признаки EOLN.
Procedure Read Ln (var F: TextFile; [VI [, V2, .. .,Vn] ] ) ;Читает из текстового файла последовательность символьных представлений переменных F, типа Char, String, а также любого целого или вещественного типа с учетом границ строк.
Function Seek Eof (varF: Text): Boolean;
Пропускает все пробелы, знаки табуляции и маркеры конца стро-ки EOLN до маркера конца файла EOF или до первого значащего символа и возвращает True, если маркер EOF обнаружен.
Procedure Write (var F: Text; PI [, P2, ..., Pn]) ;
Записывает символьные представления параметров Р, в тексто-вый файл.
Procedure WriteLn (var F: Text; [PI I, P2, ..., Pn]]);
Записывает символьные представления параметров Р, и признак конца строки EOLN в текстовый файл.
язык delphi программа файл
Заключение
Анализ выполненных заданий позволяет судить о том, что использование программных средств, для решения разнообразных задач весьма эффективно, будь то задача математического или экономического содержания. Единожды написанная программа осуществляет расчеты в зависимости от введенных данных, которые можно изменять.
Таким образом, появляется возможность:
- анализировать данные и выбирать наиболее оптимальные решения
- автоматизировать выполнение частых и трудоемких операций
- повысить наглядность представляемых данных
Эти возможности являются весьма весомым аргументом в пользу применения компьютера для решения широкого круга задач, а круг этот постоянно растет.
В процессе выполнения данного курсового проекта была изучена литература на заданную тему. Далее составлен алгоритм, по которому и написана данная программа и разработана книга, содержащая математические и экономические расчеты. Затем осуществлялась отладка и тестирование программ. В результате выполнения были получены оптимальные результаты.
Список используемой литературы
1. Власов В.К., Королёв Л.Н., Сотников А.Н. Элементы информатики. М., 1999.-320 с.
2. Ларионова В.Н. Информатика и вычислительная техника М.,1998-287с.
3. Леонтьев В.П. Новейшая энциклопедия персонального компьютера 2003. - М.: ОЛМА-ПРЕСС, 2003. - 920 с.: ил.
4. Фаронов В. В. TurboPascal, М.: ”Нолидж”, 2001. - 420 с.
5. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. Издание 7-е, переработанное. - М.: Издательство ООО ОМД «Групп», 2002. - 576 с., ил.
6. А. Архангельский,В.Ильин,М.Тагин Русская справка (HELP) по Delphi 5 и ObjectPascal (32 стр.сCD-ROM) Бином, ISBN 5-7989-0168-8
Приложение А
Текст программы
unitUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Menus, ComCtrls, Unit2;
type
TForm1 = class(TForm)
Image1: TImage;
ComboBox1: TComboBox;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
procedureDraw;
procedureImage1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedureImage1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedureImage1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedureComboBox1Change(Sender: TObject);
procedureComboBox2Change(Sender: TObject);
procedureComboBox3Change(Sender: TObject);
procedureN2Click(Sender: TObject);
procedureButton1Click(Sender: TObject);
procedureButton2Click(Sender: TObject);
procedureN7Click(Sender: TObject);
procedureN8Click(Sender: TObject);
procedureN3Click(Sender: TObject);
procedureN4Click(Sender: TObject);
procedureFormKeyDown(Sender: TObject; varKey: Word;
Shift: TShiftState);
procedureButton3Click(Sender: TObject);
procedureButton5Click(Sender: TObject);
procedureButton4Click(Sender: TObject);
procedureButton6Click(Sender: TObject);
procedureFormCreate(Sender: TObject);
procedureN9Click(Sender: TObject);
procedureN10Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Flag: BOOL;
masx, masy: array [1..100] of integer;
x,y,Key,x0,y0,i1,i,xx,yy: integer;
vsego,cur: integer;
ax,ay,koef:real;
implementation
{$R *.dfm}
procedureTForm1.Draw;
begin
Image1.Canvas.Rectangle(-650-xx,-650-yy, Width+xx, Width+yy);
masx[i]:=xx+5;
masy[i]:=yy+5;
fori:= 1 to vsegodo begin
Image1.Canvas.MoveTo(masx[i]+round(koef*(100+xx)),masy[i]+round(koef*(50+yy)));
Image1.Canvas.LineTo(masx[i]+round(koef*(100+xx)),masy[i]+round(koef*(140+yy)));
Image1.Canvas.MoveTo(masx[i]+round(koef*(70+xx)),masy[i]+round(koef*(120+yy)));
Image1.Canvas.LineTo(masx[i]+round(koef*(130+xx)),masy[i]+round(koef*(120+yy)));
Image1.Canvas.MoveTo(masx[i]+round(koef*(70+xx)),masy[i]+round(koef*(90+yy)));
Image1.Canvas.LineTo(masx[i]+round(koef*(130+xx)),masy[i]+round(koef*(90+yy)));
Image1.Canvas.MoveTo(masx[i]+round(koef*(100+xx)),masy[i]+round(koef*(90+yy)));
Image1.Canvas.LineTo(masx[i]+round(koef*(70+xx)),masy[i]+round(koef*(120+yy)));
Image1.Canvas.MoveTo(masx[i]+round(koef*(100+xx)),masy[i]+round(koef*(90+yy)));
Image1.Canvas.LineTo(masx[i]+round(koef*(130+xx)),masy[i]+round(koef*(120+yy)));
Image1.Canvas.MoveTo(masx[i]+round(koef*(130+xx)),masy[i]+round(koef*(90+yy)));
Image1.Canvas.LineTo(masx[i]+round(koef*(160+xx)),masy[i]+round(koef*(70+yy)));
Image1.Canvas.MoveTo(masx[i]+round(koef*(160+xx)),masy[i]+round(koef*(70+yy)));
Image1.Canvas.LineTo(masx[i]+round(koef*(190+xx)),masy[i]+round(koef*(70+yy)));
end;
end;
procedureTForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If button<>mbLeftThen
flag:=false
Else begin
flag:=true;
x0:=x;
y0:=y
end
end;
procedureTForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
flag:=false
end;
procedureTForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
If flagThen begin
x0:=200;
xx:=x-x0;
yy:=y-y0;
Draw;
end;
end;
procedureTForm1.ComboBox1Change(Sender: TObject);
begin
Image1.Canvas.Rectangle(-650-xx,-650-yy, Width+xx, Width+yy);
ifComboBox1.Itemindex=0 then
Image1.Canvas.Pen.Color:=clRed;
Draw;
ifComboBox1.Itemindex=1 then
Image1.Canvas.Pen.Color:=clblue;
Draw;
ifComboBox1.Itemindex=2 then
Image1.Canvas.Pen.Color:=clgreen;
Draw;
end;
procedureTForm1.ComboBox2Change(Sender: TObject);
begin
Image1.Canvas.Rectangle(-650-xx,-650-yy, Width+xx, Width+yy);
ifComboBox2.Itemindex=0 then
Image1.Canvas.Pen.Width:=2;
Draw;
ifComboBox2.Itemindex=1 then
Image1.Canvas.Pen.Width:=3;
Draw;
ifComboBox2.Itemindex=2 then
Image1.Canvas.Pen.Width:=5;
Draw;
end;
procedureTForm1.ComboBox3Change(Sender: TObject);
begin
ifComboBox3.Itemindex=0 then
Image1.Canvas.Brush.Color := clYellow;
ifComboBox3.Itemindex=1 then
Image1.Canvas.Brush.Color := clGray;
ifComboBox3.Itemindex=2 then
Image1.Canvas.Brush.Color := clMaroon;
end;
procedureTForm1.N2Click(Sender: TObject);
begin
koef:= 1;
Draw;
end;
procedureTForm1.Button1Click(Sender: TObject);
begin
koef:=1.5;
Draw;
end;
procedureTForm1.Button2Click(Sender: TObject);
begin
koef:= 2;
Draw;
end;
procedureTForm1.N7Click(Sender: TObject);
begin
Form2.Show;
end;
procedureTForm1.N8Click(Sender: TObject);
begin
close;
end;
procedureTForm1.N3Click(Sender: TObject);
varf:TextFile; s:string;
i,j,n,m:integer;
begin
ifSaveDialog1.Execute then
begin
s:=SaveDialog1.FileName;
AssignFile(f,s);
Rewrite(f);
writeln(f,'n=', ' m=');
writeln(f);
writeln(f,' ');
fori:=1 to ndo
begin
forj:=1 to m do
write(f,' ');
writeln(f)
end;
CloseFile(f);
end
end;
procedureTForm1.N4Click(Sender: TObject);
Varf:TextFile; s:string;
begin
ifOpenDialog1.Execute then
begin
s:= OpenDialog1.FileName;
AssignFile(f,s);
Reset(f);
Readln(f);
begin
Read(f);
end;
CloseFile(f);
end
end;
procedureTForm1.FormKeyDown(Sender: TObject; varKey: Word;
Shift: TShiftState);
begin
begin
ifkey=39 then
xx:=xx+5;
yy:=yy;
draw;
ifkey=37 then
xx:=xx-5;
yy:=yy;
draw;
end;
end;
procedureTForm1.Button3Click(Sender: TObject);
begin
xx:=xx+10;
yy:=yy;
draw;
end;
procedureTForm1.Button5Click(Sender: TObject);
begin
xx:=xx-10;
yy:=yy;
draw;
end;
procedureTForm1.Button4Click(Sender: TObject);
begin
xx:=xx;
yy:=yy+10;
draw;
end;
procedureTForm1.Button6Click(Sender: TObject);
begin
xx:=xx;
yy:=yy-10;
draw;
end;
procedureTForm1.FormCreate(Sender: TObject);
begin
vsego:=1;
cur:=1;
masx[cur]:=50;
masy[cur]:=50;
end;
procedureTForm1.N9Click(Sender: TObject);
begin
vsego:=vsego+1;
cur:=cur+1;
masx[cur]:=50;
masy[cur]:=50;
end;
procedureTForm1.N10Click(Sender: TObject);
begin
ifvsego=1 then exit else vsego:=vsego-1;
end;
end.
Приложение B
Скриншоты выполнения программы
Размещено на Allbest.ru
Подобные документы
Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.
курсовая работа [880,1 K], добавлен 21.04.2015Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Класс программы, инструкция по использованию программы.
курсовая работа [1,0 M], добавлен 26.12.2013Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.
контрольная работа [1,3 M], добавлен 19.06.2012Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.
курсовая работа [1,2 M], добавлен 04.08.2014Использование скриптового языка программирования для разработки web-приложений (сценариев). Изучение основ объектно-ориентированного программирования в языке PHP. Ознакомление со специальными методами для работы с классами. Назначение интерфейсов.
контрольная работа [25,1 K], добавлен 14.03.2015Приемы и правила объектно-ориентированного программирования с использованием языка С++. Общие принципы разработки объектно-ориентированных программ. Основные конструкции языка С++. Разработка различных программ для Windows с использованием WIN32 API.
учебное пособие [1,6 M], добавлен 28.12.2013Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.
контрольная работа [60,1 K], добавлен 17.01.2011Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.
курсовая работа [355,7 K], добавлен 21.09.2010Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.
курсовая работа [261,1 K], добавлен 25.03.2015Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.
дипломная работа [1,8 M], добавлен 14.09.2011