Проектирование диаграммы классов
Практическая работа, 23 Ноября 2010, автор: Айрат Хайруллин
Описание работы
Создание программы, которая будет выполнять следующие действия:
-рисование фигур (треугольник, линия, круг);
-сохранение данных о фигурах в определенном формате.
Содержание
1. Цель работы ……………………………………………….……………3
2. Структура работы ...……………………………………….……………3
3. Ход работы …..…………………………………………….……………3
4. Диаграмма классов …..………...………………………….……………6
5. Диаграмма объектов и связей …..……………..………….……………7
6. Основные понятия и определения……………..………….……………8
Приложение 1………………………………………………………………10
Список использованной литературы………………………………….…..16
Работа содержит 1 файл
готовый РГР ООП.doc
— 210.00 Кб (Скачать)begin
x:=DX;
y:=DY;
end;
{ TLine }
constructor TLine.Create(ACanvas: TCanvas);
begin
Inherited Create(ACanvas);
dx:=250;
dy:=400;
end;
constructor TLine.CreateParams(ACanvas: TCanvas; X1, Y1, X2, Y2: integer);
begin
Inherited Create(ACanvas);
X:=x1;
Y:=y1;
dX:=x2-x1;
dY:=y2-y1;
end;
procedure TLine.Draw;
begin
Canvas.MoveTo(x,y);
Canvas.LineTo(x+dx,y+dy);
end;
constructor TCircle.Create(ACanvas: TCanvas);
begin
Inherited Create(ACanvas);
r :=45;
end;
constructor TTriangle.Create(ACanvas: TCanvas);
begin
Inherited Create(ACanvas);
dx:=150;
dy:=200;
dx2:=-150;
dy2:=-100;
end;
procedure TTriangle.Draw;
begin
Canvas.MoveTo(x,y);
Canvas.LineTo(x+dx,y+dy);
Canvas.LineTo(x+dx+dx2,y+dy+
Canvas.LineTo(x,y);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
F:TFigure;
begin
F:=TTriangle.Create(PaintBox1.
F.Move(Random(300), Random(300));
F.Draw;
Shapes.Add(F);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Shapes:=TList.Create;
drawing := false;
end;
procedure TCircle.Draw;
begin
canvas.Ellipse(x-r,y-r,x+r,y+
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: integer;
begin
if Shapes.Count > 0 then
for i:=0 to Shapes.count-1 do
TFigure(Shapes[i]).Free;
Shapes.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
F:TFigure;
begin
F:=TLine.Create(PaintBox1.
F.Move(Random(200), Random(200));
F.Draw;
Shapes.Add(F);
end;
procedure TForm1.PaintBox1MouseDown(
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
begin
Drawing:=true;
StartX:=X;
StartY:=Y;
FinishX:=X;
FinishY:=Y;
PaintBox1.Canvas.Pen.Color := clWhite;
PaintBox1.Canvas.Pen.Mode:= pmXOR;
PaintBox1.Canvas.MoveTo(
PaintBox1.Canvas.LineTo(
end;
end;
procedure TForm1.PaintBox1MouseMove(
Y: Integer);
begin
if drawing then
begin
PaintBox1.Canvas.MoveTo(
PaintBox1.Canvas.LineTo(
FinishX:=X;
FinishY:=Y;
PaintBox1.Canvas.MoveTo(
PaintBox1.Canvas.LineTo(
end;
end;
procedure TForm1.PaintBox1MouseUp(
Shift: TShiftState; X, Y: Integer);
var F: TFigure;
begin
if drawing then
begin
PaintBox1.Canvas.Pen.Color := clBlack;
PaintBox1.Canvas.Pen.Mode:= pmCopy;
FinishX:=X;
FinishY:=Y;
F:=TLine.CreateParams(
F.Draw;
Shapes.Add(F);
drawing:= false;
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
PaintBox1.Canvas.Brush.Color := clWhite;
PaintBox1.Canvas.Brush.Style := bsSolid;
PaintBox1.Canvas.FillRect(
end;
function TLine.ToString: String;
begin
Result:=Format('L %d,%d,%d,%d',[X,Y,dx,dy]);
end;
function TCircle.ToString: String;
begin
Result:=Format('C %d,%d,%d',[X,Y,R]);
end;
function TTriangle.ToString: String;
begin
Result:=Format('T %d,%d,%d,%d,%d,%d',[X,Y,dx,dy,
end;
procedure TForm1.Button3Click(Sender: TObject);
var
SL: tstringlist;
i: integer;
F: TFigure;
s: String;
begin
if SaveDialog1.Execute then
begin
sl:=TStringList.Create;
for i:=0 to Shapes.Count-1 do begin
F:=TFigure(Shapes[i]);
s:=F.ToString;
sl.add(s);
end;
SL.SaveToFile(SaveDialog1.
SL.Free;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
F:TFigure;
begin
F:=TCircle.Create(PaintBox1.
F.Move(Random(400), Random(400));
F.Draw;
Shapes.Add(F);
end;
end.
Список
использованной литературы:
- Макконнел
С. «Совершенный код» – Спб 2005 г. http://reslib.com/book/
Sovershennij_kod
- Тимоти Бадд «Объектно-ориентированное программирование в действии» ― Издательство: Питер, 1997г.
- Гради Буч «Объектно-ориентированный анализ и проектирование с примерами приложений на С++» ― Издательство: Бином, Невский Диалект, 1998г.
- Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.- "Приемы объектно-ориентированного проектирования. Паттерны проектирования" ― Издательство: Питер, 2002г.
- http://www.k-press.ru/cs/2004/
1/OOP/OOP.asp
- http://www.rsdn.ru/article/
Delphi/Delphi_7_03.xml
- http://www.firststeps.ru/
theory/oop/r.php?3