Разделы презентаций


Основы объектно-ориентированного моделирования

Содержание

Принципы объектно-ориентированного подходаОбъектно-ориентированный анализ – это методология системного анализа, направленная на создание моделей, близких к реальным явлениям. Требования к проектируемой системе формируются на основе понятий (классов и объектов), составляющих словарь предметной

Слайды и текст этой презентации

Слайд 1Технология программирования
Основы объектно-ориентированного моделирования

Технология программированияОсновы объектно-ориентированного моделирования

Слайд 2Принципы объектно-ориентированного подхода
Объектно-ориентированный анализ – это методология системного анализа, направленная

на создание моделей, близких к реальным явлениям. Требования к проектируемой

системе формируются на основе понятий (классов и объектов), составляющих словарь предметной области (термины предметной области, необходимые для рассматриваемой задачи)
Принципы объектно-ориентированного подходаОбъектно-ориентированный анализ – это методология системного анализа, направленная на создание моделей, близких к реальным явлениям.

Слайд 3Принципы объектно-ориентированного подхода
Объектно-ориентированное проектирование – это методология проектирования на основе

объектной декомпозиции и объектного синтеза логической модели, физической модели, статической

модели и динамической модели проектируемой системы

Логическая модель: структуры классов и структуры объектов

Физическая модель: архитектура модулей и архитектура процессов

Модели объектно-ориентированного проектирования

Принципы объектно-ориентированного подходаОбъектно-ориентированное проектирование – это методология проектирования на основе объектной декомпозиции и объектного синтеза логической модели,

Слайд 4Принципы объектно-ориентированного подхода
Объектно-ориентированное программирование – методология программирования, которая основана на

представлении программы в виде совокупности объектов, каждый из которых является

реализацией определенного класса, а классы образуют иерархию наследования
Принципы объектно-ориентированного подходаОбъектно-ориентированное программирование – методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый

Слайд 5Принципы объектно-ориентированного подхода
Объектно- ориентированный анализ
Объектно- ориентированное проектирование
Объектно- ориентированное программирование

Модели реального мира
Модели проектируемой системы
Программная система
Взаимосвязь анализа, проектирования и программирования

Принципы объектно-ориентированного подходаОбъектно- ориентированный анализОбъектно- ориентированное проектированиеОбъектно- ориентированное программированиеМодели реального мираМодели проектируемой системыПрограммная системаВзаимосвязь анализа, проектирования и

Слайд 6Основные понятия объектного моделирования
1. Абстрагирование
struct Point {int x, int y};
class

Figure
{
private:
Point _center;
public:
Figure();
void SetCenter(Point center);
virtual void Draw();

virtual void Hide();
Point GetCenter();
}
Основные понятия объектного моделирования1. Абстрагированиеstruct Point {int x, int y};class Figure{private: Point _center;public: Figure(); void SetCenter(Point center);

Слайд 7Основные понятия объектного моделирования
2. Инкапсуляция (ограничение доступа)
Point point = {1,3};
Figure

figure;
figure.SetCenter(point);
figure.Draw();
figure._center = point; // Ошибка, т.к. ограничение доступа

Основные понятия объектного моделирования2. Инкапсуляция (ограничение доступа)Point point = {1,3};Figure figure;figure.SetCenter(point);figure.Draw();figure._center = point; // Ошибка, т.к. ограничение

Слайд 8Основные понятия объектного моделирования
3. Модульность
















Физические модули: компонент, пакет (физическая группировка) Логические

модули: класс, подсистема (логическая группировка)
Головная процедура
Раздел интерфейса
Раздел реализации
int g();
class X { public: int f() }
#include”x.h”

const int c=3; int g() { return c; }
int X::f() {
return c*f(); }

#include “x.h” void main() { int i=g();
X x; i = x.f(); }

x.h

x.cpp

main.cpp


main.exe


x.obj

Характеристики: связность модуля, сцепление модулей

Основные понятия объектного моделирования3. МодульностьФизические модули: компонент, пакет (физическая группировка) Логические модули: класс, подсистема (логическая группировка)Головная процедураРаздел

Слайд 9Основные понятия объектного моделирования
4. Иерархия
Иерархия классов
Иерархия объектов

Основные понятия объектного моделирования4. Иерархия Иерархия классовИерархия объектов

Слайд 10Основные понятия объектного моделирования
class Engine {float power;}
class PetrolEngine : public

Engine {}
class DieselEngine : public Engine {}

class Person {}

class MotorCar
{

double velocity;
Engine engine;
public:
void Drive() {}
}
class PassengerCar : public MotorCar
{
Person passengers[];
}
class Truck : public MotorCar
{
double weight;
double bodyCapacity;
}


Основные понятия объектного моделированияclass Engine {float power;}class PetrolEngine : public Engine {}class DieselEngine : public Engine {}class

Слайд 11Объекты
Объект – это сущность, обладающая индивидуальностью, состоянием и поведением
Изменение состояния

объекта
Поведение объекта
class Stack {
private: int top;
int *s;
int size;
public:
void

Push(int i);
int Pop();
int IsEmpty();
int IsFull();
void Copy(Stack *other);
Stack(int sz);
~Stack();
}
ОбъектыОбъект – это сущность, обладающая индивидуальностью, состоянием и поведениемИзменение состояния объектаПоведение объектаclass Stack {private:  int top;

Слайд 12Объекты
Индивидуальность объекта
Stack r(100); Stack q(300);
// … q = r;

ОбъектыИндивидуальность объектаStack r(100); Stack q(300);// … q = r;

Слайд 13Объекты
Отношения:
Связь – взаимодействие между экземплярами сущностей
Агрегация (агрегация по ссылке, разделяемая

агрегация) - отношение «часть-целое»
Композиция (агрегация по значению) – строгая форма

агрегации, агрегируемый объект принадлежит только одному агрегату. Связаны жизненные циклы.

Связь

Агрегация

ОбъектыОтношения:Связь – взаимодействие между экземплярами сущностейАгрегация (агрегация по ссылке, разделяемая агрегация) - отношение «часть-целое»Композиция (агрегация по значению)

Слайд 14Классы
Класс – это описание структуры и поведения объектов, имеющих одинаковые

свойства, поведение и семантику

КлассыКласс – это описание структуры и поведения объектов, имеющих одинаковые свойства, поведение и семантику

Слайд 15Классы
Отношения (relationship) между классами:
Наследование (inheritance, generalization) – отношение при котором

один класс разделяет структуру и поведение другого класса
Ассоциация (association) –

описание связей между экземплярами классов
Реализация (implementation) – отношение между интерфейсом и классом, его реализующим
Зависимость (dependency) – отношение между классами, при котором изменения в одном классе приводят к изменениям в другом классе (наследование, ассоциация и реализация – частные случаи отношения зависимости, имеющие особое назначение и специальную нотацию)
КлассыОтношения (relationship) между классами:Наследование (inheritance, generalization) – отношение при котором один класс разделяет структуру и поведение другого

Слайд 16Наследование
При наследовании подкласс может :
добавлять поля
добавлять методы
переопределять методы
замещать методы
уточнять методы

НаследованиеПри наследовании подкласс может :добавлять полядобавлять методыпереопределять методызамещать методыуточнять методы

Слайд 17Наследование
class Figure
{
int _x, _y;
public:
virtual void

Show() = 0;
virtual void Hide() {/*…*/ };
void

Move(int x, int y) {
Hide();
_x=x; _y=y;
Show();
}
};
class Circle: public Figure
{
// добавление поля
int _radius;
public:
// замещение метода (реализация)
virtual void Show() {/*…*/ };
};

class Face: public Circle
{
int _eyeColor;
public:
// замещение метода
void Show();
// переопределение метода
void Move(int x, int y) {/*…*/}
// добавление метода
virtual void CloseEyes();
};

Наследованиеclass Figure {  int _x, _y; public: virtual void Show() = 0;  virtual void Hide()

Слайд 18Наследование
int main()
{
Circle *cPtr;
cPtr=new Face; // фактический объект класса

Face
cPtr->Show(); // вызывается метод Face::Show()
cPtr->Move(10,20); // вызывается Figure::Move(),

так как невиртуальное
// замещение, а в нем методы Face::show() и
// Face::hide() в соответствии с фактическим
// классом объекта *cPtr.
// cPtr->closeEyes(); // ошибка компиляции
delete cPtr;

// ...

}
Наследованиеint main(){ Circle *cPtr; cPtr=new Face; // фактический объект класса Face cPtr->Show(); // вызывается метод Face::Show() cPtr->Move(10,20);

Слайд 19Наследование
Уточнение метода
class Circle: public Figure
{
virtual void Show()
{/*рисование

окружности*/ };
};
class Face : public Circle
{
virtual void Show()
{

/* рисование глаз */
Circle::Show();
/* рисование рта и ушей */
};
};

int main()
{
Face face;
face.Show(); // вызывается также
// Circle::Show()
}

В С++ уточнение реализовано для конструкторов и деструкторов

НаследованиеУточнение методаclass Circle: public Figure {virtual void Show()  {/*рисование окружности*/ };};class Face : public Circle{virtual void

Слайд 20Наследование
Принцип подстановки: экземпляр класса, порожденного от некоторого класса X, может

использоваться без нарушения семантики объявления X везде, где используется экземпляр

класса X.

Различие понятий класс и тип: класс описывает структуру объектов, тип описывает протокол объектов. Класс может соответствовать нескольким типам (реализовать различные интерфейсы). Различные классы могут иметь один и тот же тип (реализовать один и тот же интерфейс).
НаследованиеПринцип подстановки: экземпляр класса, порожденного от некоторого класса X, может использоваться без нарушения семантики объявления X везде,

Слайд 21Наследование
Формы наследования:
Порождение класса для спецификации. Родительский класс – абстрактный класс,

т.е. содержит абстрактные методы. Подкласс должен реализовать поведение (т.е. обеспечить

реализацию для абстрактных методов).
Порождение подкласса для специализации. Подкласс имеет такой же протокол, как и родительский класс, но специальным образом реализует некоторые методы.
Порождение класса для расширения. Подкласс добавляет к протоколу базового класса дополнительные методы.
Порождение класса для варьирования. Дочерний и родительский классы имеют одинаковые протоколы и могут занимать место в иерархии классов в произвольном порядке.
Порождение для конструирования. Подкласс использует структуру и поведение базового класса в своих методах, но при этом подкласс не является подтипом базового класса. Нарушается принцип подстановки.
Порождение классов для комбинирования. В классе комбинируются свойства двух и более классов (множественное наследование).
Порождение класса для обобщения. Подкласс является более общим, чем базовый класс. Целесообразно использовать только в особых случаях.
Порождение класса для ограничения. Подкласс ограничивает использование некоторых методов родительского класса. Нарушается принцип подстановки. Целесообразно использовать только в особых случаях.

НаследованиеФормы наследования:Порождение класса для спецификации. Родительский класс – абстрактный класс, т.е. содержит абстрактные методы. Подкласс должен реализовать

Слайд 22Наследование

Наследование

Слайд 23Наследование

Наследование

Слайд 24Наследование


Лучше так:

НаследованиеЛучше так:

Слайд 25Конструирование
Stack s1, s2;
s1.Merge(s2); // Нельзя, для стека не имеет смысла,
//

но в реализации Stack использует Array::Merge()

top
В C++ закрытое наследование

class

Stack : private Array
{
public:
void Push(char value) { /* Set(top) */ }
int Pop() { /* Get(top) */}
void Resize(int newSize) { /* Merge(newArray) */ }
}
КонструированиеStack s1, s2;s1.Merge(s2); // Нельзя, для стека не имеет смысла,// но в реализации Stack использует Array::Merge() topВ

Слайд 26Наследование

Наследование

Слайд 27Наследование

Наследование

Слайд 28Ассоциация
class Controller
{
private:
Sensor* _sensor[];
}

class Sensor
{
// нет ссылки на Controller
}
class

Job
{
public:
Company* company;
Person* person;
double

salary;
}
Ассоциацияclass Controller{private:  Sensor* _sensor[];}class Sensor{// нет ссылки на Controller}class Job{ public:  Company* company;  Person*

Слайд 29Агрегация

Агрегация

Слайд 30Реализация (realization/implementation)
class IList
{
public:
virtual void add(string& item) = 0;
virtual

void remove(string& item) = 0;
virtual void insertAt(int index, string&

item) = 0;
}

class LinkedList : public IList
{
private:
Element* _head;
public:
void add(string& item) {… Element * p = new Element(item) … }
void remove(string& item) {… delete p; …}
void insertAt(int index, string& item) { … }
}

спецификация

реализация

class LinkedList : public IList
{
private:
Element* _head;
public:
void add(string& item) {… Element * p = new Element(item) … }
void remove(string& item) {… delete p; …}
void insertAt(int index, string& item) { … }
}

Реализация  (realization/implementation)class IList{public: virtual void add(string& item) = 0; virtual void remove(string& item) = 0; virtual

Слайд 31Зависимость
Стереотипы отношения зависимости:
– назначение параметров шаблонному классу для получения

нового конкретного класса
– метод одного класса вызывает операцию другого

класса
<> – один класс создает экземпляр другого класса
<> или <> – разрешение одному классу использовать реализацию другого класса
<> - общее обозначение
ЗависимостьСтереотипы отношения зависимости: – назначение параметров шаблонному классу для получения нового конкретного класса – метод одного класса

Слайд 32Зависимость
class List;

class Element
{
friend class List;
}

class List
{
Element* _head;
}
template

T> class Array
{
public:
T operator[](int i) {…}
}

void main()
{
Array intArray;

Array floatArray;
// …
}

class Product
{
public:
Product() {}
}

class Factory
{
public:
Product Create()
{
return Product();
}
}

Зависимостьclass List;class Element{ friend class List;}class List{  Element* _head;}template  class Array{public: T operator[](int i) {…}}void

Слайд 33Пакеты
Пакет – механизм общего назначения для распределения программных элементов по

группам с установлением владельца, а также средства для предотвращения конфликтов

имен

namespace P1
{
class С1 {}

namespace P2
{
class C1 {}
}
}

int main()
{
P1::C1 x1;
P1::P2::C1 x2;
}

ПакетыПакет – механизм общего назначения для распределения программных элементов по группам с установлением владельца, а также средства

Слайд 34Диаграммы UML
Представление (View) – это подмножество конструкций UML, отражающих один

аспект системы.
Описание статической структуры (Static View)
Описание вариантов использования (Use Case

View)
Описание дискретных автоматов (State Machine View)
Описание активности (Activity View)
Описание взаимодействия (Interaction View)
Описание размещения (Deployment View)
Описание проектных решений (Design View)

Рисунки из Rumbaugh J., Jacobson I., Booch G. The Unified Modeling Language Reference Manual. – 2nd ed. Addison-Wesley. 2005

Диаграммы UMLПредставление (View) – это подмножество конструкций UML, отражающих один аспект системы.Описание статической структуры (Static View)Описание вариантов

Слайд 35Описание статической структуры
Диаграммы классов

Описание статической структурыДиаграммы классов

Слайд 36Описание статической структуры
Диаграмма объектов

Описание статической структурыДиаграмма объектов

Слайд 37Описание вариантов использования

Описание вариантов использования

Слайд 38Описание дискретных автоматов
Диаграмма переходов состояний
[amount

Описание дискретных автоматовДиаграмма переходов состояний[amount

Слайд 39Описание активности

Описание активности

Слайд 40Описание взаимодействия
Классификатор – модельный элемент, который описывает поведенческие свойства (в

виде операций) и структурные свойства (в виде атрибутов). Классификаторами являются:

класс, интерфейс, компонент, вариант использования, подсистема, узел размещения и т.д.



Figure 9-2. Classifiers



Описание взаимодействияКлассификатор – модельный элемент, который описывает поведенческие свойства (в виде операций) и структурные свойства (в виде

Слайд 41Описание взаимодействия
Диаграмма последовательности

Описание взаимодействияДиаграмма последовательности

Слайд 42Описание взаимодействия
Диаграмма последовательности с детализацией выполнения



Описание взаимодействияДиаграмма последовательности с детализацией выполнения

Слайд 43Описание взаимодействия
Коммуникационная диаграмма

Описание взаимодействияКоммуникационная диаграмма

Слайд 44Описание размещения
Диаграмма размещения

Описание размещенияДиаграмма размещения

Слайд 45Описание проектных решений
Структурированный класс
Структурированный класс с портами

Описание проектных решенийСтруктурированный классСтруктурированный класс с портами

Слайд 46Описание проектных решений
Описание сотрудничества объектов
Использование шаблона

Описание проектных решенийОписание сотрудничества объектовИспользование шаблона

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика