Проектирование диаграммы классов

Автор: Айрат Хайруллин, 23 Ноября 2010 в 11:23, практическая работа

Описание работы

Создание программы, которая будет выполнять следующие действия:
-рисование фигур (треугольник, линия, круг);
-сохранение данных о фигурах в определенном формате.

Содержание

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+dy2);

  Canvas.LineTo(x,y);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

  F:TFigure;

begin

  F:=TTriangle.Create(PaintBox1.Canvas);

  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+r);

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.Canvas);

  F.Move(Random(200), Random(200));

  F.Draw;

  Shapes.Add(F);

end;

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;

  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(StartX,StartY);

    PaintBox1.Canvas.LineTo(FinishX,FinishY);

  end;

end;

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

begin

  if drawing then

  begin

    PaintBox1.Canvas.MoveTo(StartX,StartY);

    PaintBox1.Canvas.LineTo(FinishX,FinishY);

    FinishX:=X;

    FinishY:=Y;

    PaintBox1.Canvas.MoveTo(StartX,StartY);

    PaintBox1.Canvas.LineTo(FinishX,FinishY);

  end;

end;

procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;

  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(PaintBox1.Canvas, StartX, StartY, FinishX, FinishY);

    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(PaintBox1.ClientRect);

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,dx2,dy2]);

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.FileName);

    SL.Free;

  end;

end;

procedure TForm1.Button4Click(Sender: TObject);

var

  F:TFigure;

  begin

    F:=TCircle.Create(PaintBox1.Canvas);

    F.Move(Random(400), Random(400));

    F.Draw;

    Shapes.Add(F);

  end;

end. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Список  использованной литературы: 

  1. Макконнел С. «Совершенный код» – Спб 2005 г. http://reslib.com/book/Sovershennij_kod
 
  1. Тимоти  Бадд  «Объектно-ориентированное программирование в действии» ― Издательство: Питер, 1997г.
 
  1. Гради Буч  «Объектно-ориентированный анализ и проектирование с примерами приложений на С++» ― Издательство: Бином, Невский Диалект, 1998г.
 
  1. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.- "Приемы объектно-ориентированного проектирования. Паттерны проектирования" ― Издательство: Питер, 2002г.
 
  1. http://www.k-press.ru/cs/2004/1/OOP/OOP.asp
 
  1. http://www.rsdn.ru/article/Delphi/Delphi_7_03.xml
 
  1. http://www.firststeps.ru/theory/oop/r.php?3

Информация о работе Проектирование диаграммы классов