Автор: Айрат Хайруллин, 23 Ноября 2010 в 11:23, практическая работа
Создание программы, которая будет выполнять следующие действия:
-рисование фигур (треугольник, линия, круг);
-сохранение данных о фигурах в определенном формате.
1. Цель работы ……………………………………………….……………3
2. Структура работы ...……………………………………….……………3
3. Ход работы …..…………………………………………….……………3
4. Диаграмма классов …..………...………………………….……………6
5. Диаграмма объектов и связей …..……………..………….……………7
6. Основные понятия и определения……………..………….……………8
Приложение 1………………………………………………………………10
Список использованной литературы………………………………….…..16
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
«УФИМСКИЙ
ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ
Расчетно-графическая работа
по объектно-ориентированному программированию
на тему:
«Проектирование
диаграммы классов»
Выполнил:
Студент гр.МИЭ 310з
Хайруллин А.Н
Проверил
Преподаватель
Бажин Д.Н.
УФА – 2010
Содержание.
1. Цель работы ……………………………………………….……………3
2. Структура работы ...……………………………………….……………3
3. Ход работы …..…………………………………………….……………3
4. Диаграмма классов …..………...………………………….……………6
5. Диаграмма объектов и связей …..……………..………….……………7
6. Основные понятия и определения……………..………….……………8
Приложение 1………………………………………………………………10
Список
использованной литературы………………………………….…..16
1. Цель работы
1) Создать программу на языке ООП, которая будет выполнять следующие действия:
-рисование
фигур (треугольник, линия,
-сохранение
данных о фигурах в
2)
Для создания программы
2. Структура работы
Для создания программы
был выбран объектно-ориентированный
язык Object Pascal в среде программирования
Delphi 7.
3. Ход работы
Программа состоит
из одной формы (Form1), на которой находятся
элементы управления:
-поле рисования PaintBox1:TPaintBox;
-кнопка «Линия» (Button1:TButton) по нажатию которой рисуется в поле рисования линия;
- кнопка «Треугольник» (Button2:TButton) по нажатию которой рисуется в поле рисования ;
- кнопка «Линия» (Button3:TButton) по нажатию которой рисуется в поле рисования линия;
- кнопка «Сохранить»
(Button4:TButton) по нажатию которой рисуется
в поле рисования линия.
При нажатии
кнопки «Сохранить» появляется меню сохранения
данных о фигурах в файл:
Текст программы см. в Приложении 1.
4. Диаграмма
классов:
TFigure |
- x: integer
- y: integer |
+ Draw()
+ move (integer,integer) + ToString() : String |
TCircle |
- r: integer |
+ Draw()
+ move (integer,integer) + ToString() : String |
TLine |
- dx: integer
- dy: integer |
+ Draw()
+ move (integer,integer) + ToString() : String |
TTriangle |
- dx: integer
- dy: integer - dx2: integer - dy2: integer |
+ Draw()
+ move (integer,integer) + ToString() : String |
5. Диаграмма объектов и связей между ними:
наследование
агрегация
включение
6.
Основные понятия
и определения.
Класс (class) - это группа данных и методов (функций) для работы с этими данными. Это шаблон. Объекты с одинаковыми свойствами, то есть с одинаковыми наборами переменных состояния и методов, образуют класс.
Классы объектов определяются в секции type глобального блока. Описание класса начинается с ключевого слова class и заканчивается ключевым словом end. Класс обычно описывает сущность, моделируемую в программе.
Обычно у класса
бывают три раздела: private, public,
protected. Указание на начало раздела
private часто опускается и, если не объявлено
начало ни одного из других разделов описания
класса, считается, что данные относятся
к разделу private.
type
TForm1 = class(TForm)
Button1: TButton;
PaintBox1: TPaintBox;
Button2: TButton;
Button3: TButton;
OpenDialog1: TOpenDialog;
Button4: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormPaint(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
Shapes:TList;
drawing: boolean;
StartX,StartY,FinishX,FinishY: integer;
{ Private declarations }
public
{ Public declarations }
end;
Объект (object)- это конкретная реализация, экземпляр класса. В программировании отношения объекта и класса можно сравнить с описанием переменной, где сама переменная(объект) является экземпляром какого-либо типа данных(класса).
Обычно, если объекты соответствуют конкретным сущностям реального мира, то классы являются некими абстракциями, выступающими в роли понятий. Класс можно воспринимать как шаблон объекта. Для формирования какого-либо реального объекта необходимо иметь шаблон, на основании которого и строится создаваемый объект. При рассмотрении основ ООП часто смешивается понятие объекта и класса. Дело в том, что класс - это некоторое абстрактное понятие. Для проведения аналогий или приведения примеров оно не очень подходит. На много проще приводить примеры, основываясь на объектах из реального мира, а не на абстрактных понятиях. Поэтому, говоря, к примеру, про наследование мы прежде всего имеем ввиду наследование классов(шаблонов), а не объектов, хотя часто и применяем слово объект. Скажем так: объект - это физическая реализация класса(шаблона).
Методы (methods)- это функции(процедуры), принадлежащие классу.
Наследование - это процесс, посредством которого, один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него.
Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Полиморфизм — явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода.
Агрегация –
это включение объекта (объектов) одного
класса в состав объекта другого класса.
Данный подход широко применяется в интерфейсном
подходе к проектированию программ.
Приложение 1.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
PaintBox1: TPaintBox;
Button2: TButton;
Button3: TButton;
OpenDialog1: TOpenDialog;
Button4: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormPaint(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
Shapes:TList;
drawing: boolean;
StartX,StartY,FinishX,FinishY: integer;
{ Private declarations }
public
{ Public declarations }
end;
TFigure=class
x,y: Integer;
canvas: TCanvas;
procedure Draw; virtual; abstract;
procedure Move (DX,DY: integer);
constructor Create (ACanvas:TCanvas);
function ToString:String; virtual; abstract;
end;
TLine=class(TFigure)
dx,dy: integer;
procedure Draw; override;
constructor Create (ACanvas:TCanvas);
constructor CreateParams(ACanvas:TCanvas; X1,Y1,X2,Y2: integer);
function ToString:String; override;
end;
TCircle=class(TFigure)
r: integer;
procedure Draw; override;
constructor Create (ACanvas:TCanvas);
function ToString:String; override;
end;
TTriangle=class(TFigure)
dx,dy: integer;
dx2,dy2: integer;
procedure Draw; override;
constructor Create (ACanvas:TCanvas);
function ToString:String; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TFigure }
constructor TFigure.Create(ACanvas: TCanvas);
begin
Canvas := ACanvas;
x:=50;
y:=100;
end;
procedure TFigure.Move(DX,DY: integer);