Автор: Айрат Хайруллин, 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);