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

Страницы работы

5 страниц (Word-файл)

Содержание работы

7.160101.1381.02

Зм.

Лист

№ Докум

Підпис

Дата

Багнюк В.В.

Лабораторная работа №2

Объектная декомпозиция.

Лim

Лисm

Лисmiв

Студент

Белов А. С.

13.05

1

5

Билый Т.В

НУК

Викладач

Покровский

Лабораторная работа №2

          Тема:  Построение диаграммы классов в нотации Буча.

          Цель: изучить основные принципы построения диаграммы классов в нотации Буча на языке Object Pascal.

Теоретические сведения

Главным моментом  объектно-ориентированного анализа и  объектно-ориентированного проектирования является определение и формализация связей между классами.

        Классификация связей между классами:

    1. Ассоциация – показывает существование связи неопределённого на данный момент характера.

    2. Агрегация – связь типа “целое/часть”, “part of” (“Двигатель” является частью “автомобиль”, а “линия” является частью “Прямоугольник”), т. е. один класс содержит в себе другой, так  прямоугольник содержит 4 линии.

    3. Использование – связь типа “клиент – сервер” (“Программа” использует “Драйвер последовательного порта”), т. е. “клиент” – заказывает действия, а “сервер” – выполняет действия. Необходимое и достаточное условие этого типа связи является то, что бы “сервер” был видим для “клиента”.

    4. Наследования – связь типа “предок/потомок” (общее и конкретное), “i-sa” (“Генератор” является частью “Электрическая машина”, Класс TList в TObject, Класс Библиотека в книга), т. е. принцип наследования заключается в использовании готовых классов в качестве шаблонов для разработки новых, при этом класс дополняется необходимыми свойствами и методами, а также уточняются существующие методы.

    Связь характеризуется мощностью. Мощность указывает на количество объектов каждого класса, которые применяют участие в формировании связей. На практики важно различать 3 случая мощности связей:

        “один-к-одному” (“Автомобиль” – “Двигатель”);

        “один-к-многим” (“Фигура” – “Линия”);

        “много-к-многим ” (“Двигающиеся объекты” – “Препятствия”).

    Понятие классу-клиента и классу-сервера

    Передача информации от класса к классу называется передачей сообщения. Программно передача сообщения может реализовываться за счёт вызова объектом одного класса метода объекта другого класса, или считывание или изменения значений свойств другого объекта. При этом один из классов “инициирует” связь, а другой “исполняет его заказ”. Объект (и класс) – инициатор называется клиентом, объект, который исполняет заказ – сервером. Для обеспечения видимости существует 4 способа:

        сервер глобальный относительно клиента;

        сервер (или ссылка на него) переданный клиентом как параметр метода;

        сервер является частью клиента;

        сервер  локально  порождается  клиентом в ходе  выполнения  какой-нибудь операции;

Лист

2

Зм.

Лист

№ Докум

Підпис

Дата

Задание 1

    Написать код для  абстрактной диаграммы классов:

Код

unit PMG_1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

Type

  TClass1=class(TObject)

  end;

  TClass3=class(TClass1)

  end;

  TClass5=class(TClass1)

  end;

  TClass4=class(TList)

  end;

  TClass2=class(TObject)

  Class3:Array(.1..10.)of TClass3;

  Class5:Array(.1..10.)of TClass5;

  Procedure Put (Parametr:TClass4);

  end;

  TProgram=class(TApplication)

  Class2:TClass2;

  Class4:TClass4;

  end;

implementation

{$R *.dfm}

End.

Лист

3

Зм.

Лист

№ Докум

Підпис

Дата

Задание 2

    Написать код, который реализует данный рис. и нити для передачи в процессах “Сохранение фигуры на диск” и “Выведение на экран изображения”.

Код

unit PMG_2

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

Type

  TKontrStr=record

    Kontrol:word;

    Stroka:String;

  end;

  TPoint=class(TObject)

  end;

  TGrahpPimitive=class(TObject)

    Function Fax_To_Spring:TKontrStr; virtual;abstract;

    Procedure Draw; virtual;abstract;

  end;

  TLine=class(TGrahpPimitive)

    P1:TPoint;

    P2:TPoint;

    Function Fax_To_Spring:TKontrStr; override;

    Procedure Draw; Virtual;Abstract; override;

  end;

Лист

4

Зм.

Лист

№ Докум

Підпис

Дата

  TArc=class(TGrahpPimitive)

    P:TPoint;

    Function Fax_To_Spring:TKontrStr; override;

    Procedure Draw; Virtual;Abstract; override;

  end;

  Turve=class(TGrahpPimitive)

    Array(.1..11.):TPoint;

    Function Fax_To_Spring:TKontrStr; override;

    Procedure Draw; Virtual;Abstract; override;

  end;

  TFigure=class(TLine)

    Figure:Array(.1..21.)Of TGraphPrimitive;

    Procedure Safe(Safe_file:File);

    Procedure Draw;

  end;

  TPikher=class(TApplication)

    List:TList;

    Figure:TFigure;

    Procedure Safe(Name_File:string(.32.));

    Procedure Draw;

  end;

implementation

{$R *.dfm}

End.

Вывод

            При написании кода  на языке Object Pascal в Borland Delphi для  абстрактных диаграмм классов программного продукта, я использовал нотацию Буча с использованием линий передачи сообщений, благодаря которым можно составлять сложные системы.

Лист

5

Зм.

Лист

№ Докум

Підпис

Дата

 

Похожие материалы

Информация о работе