Страницы

Поиск по вопросам

Показаны сообщения с ярлыком оод. Показать все сообщения
Показаны сообщения с ярлыком оод. Показать все сообщения

среда, 12 июня 2019 г.

Что такое диаграмма потоков данных действий?

Готовлюсь к экзамену, там вопрос о диаграмме потоков данных действий. Читаю книгу Салли Шлеер, Стефан Меллор - Объектно-ориентированный анализ: моделирование мира в состояниях, чтобы разобраться в этом вопросе. Но там все так написано, что, вообще, не понятно.
Может кто-нибудь, пожалуйста, нормальным языком объяснить, что такое процесс и диаграмма потоков данных действий?
Из книги:
Процесс - фундаментальный модуль операции. Диаграмма потоков данных действий обеспечивает графическое представление модулей процесса в пределах действий и взаимодействия между ними.
P.S. Это не относится непосредственно к написанию кода, но я не знаю, где еще спросить.


Ответ

Читать желательно внимательнее. Там все есть.
... в ООА задача разбивается сначала на объекты, затем на действия, и наконец, на процессы внутри действия, выдавая в нижней части этой иерархии одну однообразную диаграмму потоков данных для каждого действия. Это отличается от традиционных методик , которые предписывают последовательную декомпозицию функции (единственной) и производят многоуровневый набор диаграмм потоков данных
и
Управление представляется на диаграммах потоков данных действий: явно через потоки управления, и неявно через определенные потоки данных
и
читаем про DFD, IDEF0 (пригодиться и IDEF1)

понедельник, 29 октября 2018 г.

Множественное наследование через интерфейсы, работа с общими полями и свойствами

Планирую разделить один большой класс на 5 частей следующей стратегией.
Imports ConsoleApplication1
Module Module1
Interface IA Function AFunc() As Integer End Interface
Class A Implements IA
Public Function AFunc() As Integer Implements IA.AFunc
Return 1 End Function
End Class
Interface IB Function BFunc() As Integer End Interface
Class B Implements IB
Public Function BFunc() As Integer Implements IB.BFunc
Return 2 End Function
End Class
Class AB Implements IA, IB
Protected _a As New A Protected _b As New B
Protected _somePropertyOne As String = "value1"
Private _somePropertyTwo As String = "value2" Public Property SomePropertyTwo() As String Get Return _somePropertyTwo End Get Set(ByVal value As String) _somePropertyTwo = value End Set End Property
Public Function AFunc() As Integer Implements IA.AFunc Return _a.AFunc() End Function
Public Function BFunc() As Integer Implements IB.BFunc Return _b.BFunc() End Function
End Class
Sub Main()
Dim ab As New AB
Console.WriteLine(ab.AFunc) Console.WriteLine(ab.BFunc) Console.ReadLine()
End Sub
End Module
Возможно это и неправильно, но задача, требует на данном этапе реализовать разделение таким образом, чтобы все методы из набора подклассов, имели доступ к набору общих свойств (в данном случае _somePropertyOne и SomePropertyTwo)
Как это правильнее реализовать?
Куда перенести _somePropertyOne и SomePropertyTwo?
В моем случае идеально подошли Partial Class


Ответ

Используй методы-расширения.
Imports System Imports System.Runtime.CompilerServices
Public Interface ICommon Property Value As Integer End Interface
Public Module IAExts Public Function FuncA(ByVal Obj As ICommon) As Integer Return 1 + Obj.Value End Function End Module
Public Module IBExts Public Function FuncB(ByVal Obj As ICommon) As Integer Return 2 + Obj.Value End Function End Module
Public Class Smth Implements ICommon Public Property Value As Integer Implements ICommon.Value End Class
Public Module Module1 Public Sub Main() Dim X As New Smth() With {.Value = 77} Console.WriteLine(x.FuncA()) Console.WriteLine(x.FuncB()) End Sub End Module