Обьектно-ориентированное программирование

Использование объектно-ориентированных технологий языка 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.