Software Design Lecture Outline

Слайд 2

Design, Coding, Testing

Design, Coding, Testing

Слайд 3

Design Process

Design Process

Слайд 4

Architecture Patterns

Architecture Patterns

Слайд 5

Control Patterns

Control Patterns

Слайд 6

Control Patterns

Модель «Вызов-возврат»

Control Patterns Модель «Вызов-возврат»

Слайд 7

Control Patterns

Модель диспетчера

Control Patterns Модель диспетчера

Слайд 8

Control Patterns

Широковещательная модель

Control Patterns Широковещательная модель

Слайд 9

Control Patterns

Прерывания

Control Patterns Прерывания

Слайд 10

Module Decomposition

связность

сцепление

Module Decomposition связность сцепление

Слайд 11

Module Cohesion

Module Cohesion

Слайд 12

Module Coupling

Module Coupling

Слайд 13

SDD (Software Design Document)

Введение
1.1. Цель
1.2. Описание проекта
1.3. Определения, сокращения, термины
Ссылки
Описание декомпозиции
3.1. Модульная

SDD (Software Design Document) Введение 1.1. Цель 1.2. Описание проекта 1.3. Определения,
декомпозиция
3.1.1. Описание модуля 1
3.1.2. Описание модуля 2
3.2. Декомпозиция на параллельные процессы
3.2.1. Описание процесса 1
3.2.2. Описание процесса 2
3.3. Декомпозиция данных
3.3.1. Описание блока данных 1
3.3.2. Описание блока данных 2
Описание зависимостей
3.1. Межмодульные зависимости
3.2. Межпроцессные зависимости
3.3. Зависимости внутри данных

IEEE 1016.1-1993
Описание интерфейса
5.1. Модульный интерфейс
5.1.1. Описание модуля 1
5.1.2. Описание модуля 2
5.2. Интерфейс процесса
5.2.1. Описание процесса 1
5.2.2. Описание процесса 2
Детальное проектирование
6.1. Детальное проектирование модулей
6.1.1. Модуль 1: детали
6.1.2. Модуль 2: детали
6.2. Детальное проектирование данных
6.2.1. Блок данных 1: детали
6.2.2. Блок данных 2: детали

Слайд 14

Fundamental Patterns

Паттерн делегирования

Неизменяемый объект

Интерфейс

MVC , MVP, MVVM

S.O.L.I.D.

Fundamental Patterns Паттерн делегирования Неизменяемый объект Интерфейс MVC , MVP, MVVM S.O.L.I.D.

Слайд 15

Aggregation

Факультет

Студент

Студент

Студент

void main()
{
CStudent * pStudent = new CStudent("Bob");
{
CFaculty cFaculty;

Aggregation Факультет Студент Студент Студент void main() { CStudent * pStudent =
cFaculty.AddStudent( pStudent );
cFaculty.PrintStudentName( 0 );
} // Факультета уже нет, но Студент еще есть
delete pStudent;
}

class CFaculty // Класс Факультет
{
private:
vector m_Students;
public:
void AddStudent( CStudent* pStud )
{
m_Students.push_back( pStud );
}
// делегирование действия Студенту
void PrintStudentName( int nStud )
{
m_Students[ nStud ]->PrintName();
}
}

Слайд 16

Composition

сектор

стадион

void main()
{
CStadium cStadium;
{
CSector cSector;
cStadium.AddSector( cSector );
}

Composition сектор стадион void main() { CStadium cStadium; { CSector cSector; cStadium.AddSector(
// Сектора уже нет, но у Стадиона своя копия
cStadium.PrintSectorInfo( 0 );
}

class CStadium // класс Стадион
{
private:
vector m_Sectors;
public:
void AddSector( CSector cSector )
{
m_Sectors.push_back( cSector );
}
// делегирование действия Сектору
void PrintSectorInfo( int nSector )
{
m_Sectors[ nSector ].PrintInfo();
}
}

Слайд 17

OOP Basics Once Again

class CAnimal
{
private:
int nColor;
protected:
int nSize;
public:
void

OOP Basics Once Again class CAnimal { private: int nColor; protected: int
Sound( )
{
cout << “Aaarrghh!!!” << endl;
}
}

class CDog : public CAnimal
{
public:
void Bring() { … }
void Sound()
{
cout << “Bow Wow!!!” << endl;
}
}

void main()
{
CDog d;
d.Sound();
d.CAnimal::Sound();
CAnimal* a = &d;
a->Sound();
}

// Напечатает “Bow Wow!!!”
// можно вызвать родительский Sound() (если он public); напечатает «Aaarrghh!!!»
// статическое связывание! Будет вызываться метод CAnimal
// Напечатает “Aaarrghh!!!”

Демонстрация раннего (статического) связывания

Класс «Животное»

Класс «Собака» (наследуется от Жив.)

Слайд 18

OOP Basics Once Again

class CAnimal
{
private:
int nColor;
protected:
int nSize;
public:
virtual

OOP Basics Once Again class CAnimal { private: int nColor; protected: int
void Sound( )
{
cout << “Aaarrghh!!!” << endl;
}
}

class CDog : public CAnimal
{
public:
void Bring() { … }
void Sound()
{
cout << “Bow Wow!!!” << endl;
}
}

void main()
{
CDog d;
CAnimal a;
CAnimal* m[2] = { &d, &a };
m[0]->Sound();
m[1]->Sound();
}

// позднее связывание! Будет вызываться соотв. виртуальный метод
// Напечатает “Bow Wow!!!”
// Напечатает “Aaarrghh!!!”

Демонстрация позднего (динамического) связывания

Класс «Животное»

Класс «Собака» (наследуется от Жив.)

Слайд 19

OOP Basics Once Again

class CAnimal
{
private:
int nColor;
protected:
int nSize;
public:
virtual

OOP Basics Once Again class CAnimal { private: int nColor; protected: int
void Move( ) =0;
virtual void Sound( )
{
cout << “Aaarrghh!!!” << endl;
}
}

class IMovable
{
public:
virtual void Move()=0;
virtual void Stop()=0;
}

Пример абстрактного класса

Пример интерфейса (ООП)

Имя файла: Software-Design-Lecture-Outline-.pptx
Количество просмотров: 202
Количество скачиваний: 0