Возможно ли нарисовать блок-схему, описывающую программу структуры ООП?
Я учусь в колледже, у нас есть предмет "Алгоритмика". На нём мы проходим базовые алгоритмы и их написание на языке C#. Сейчас у нас началась тема, связанная с блок-схемами, и мы должны строить их по нашему код на языке C# (именно коду, а не по самому алгоритму, как говорит наш преподаватель) и придерживаться ГОСТУ 19.701-90. У меня возник вопрос, на который мне не смог дать внятного ответить преподаватель, в гугле не нашёл ответ. Всё, что мне ответила преподаватель, — это то что можно написать комментарий к блок-схеме.
Итак, сам вопрос: возможно ли вообще строить блок-схемы по объектно-ориентированному коду, например, как мне обозначить, что в этом месте будет исключение и там будет две ветки развития событий?
По коду бс можно строить. Сам грешил, когда нужно было сдавать проект с отчетом(в котором нужно показать бс), ибо влом было строить бс для "очередной" лабы. Гуглите что-то наподобие: реверс инжиниринг с#, блок-схема по коду с#
Исключение, это крайний случай, зачем они на блок схеме. Используйте блоки условий. Например если это деление на 0, то ветка уходит в другую сторону где и будут ветки развития событий.
Исключение должно выдаваться в случаях когда вы не смогли предотвратить ошибку условиями.
Мне не влом строить блок-схемы, просто вопрос возможно ли это вообще, я понимаю что через реверс-инжиниринг это можно, например если взять ту же IDA, которая умеет строить блок-схемы и графы вызовов. Но всё равно, там же не ООП стиль будет, всё сводиться к процедурному программированию в итоге.
byreoil, любой современный код в итоге транслируется в бинарный, там уже нет парадигм вообще. при этом построение блок схем ветвления вполне возможно. но повторюсь, оно не предназначено (и ни когда не было предназначено) для отражения ООП концепций
Возможно ли вообще строить блок-схемы по объектно ориентированному коду
ООП концепции адекватнее отображать с помощью uml, но не ГОСТ 19.701-90. вы можете отобразить алгоритм исполнения по госту для консольных программ. для форм или wpf в общем то тоже, но вам придется уже углубиться в механизм обработки событий для того что бы такая блок схема была корректной
как мне обозначит что в этом месте будет исключение и там будет две ветки развития событий?
тут ключевое слово ветвление, если вы понимаете куда реально произойдет передача управления в случае выброса исключения - нет проблем это отобразить
ps сам механизм исключений не привязан к конкретной парадигме. и уж точно не имеет отношения к ООП
Спасибо за ответ!
Да я понимаю что исключения не относиться к концепции ООП, я тоже думал делать их через ветвление, но это же может потерять весь их смысл, например если у меня может быть вызвано исключение внутри или в условии цикла. Я не понимаю конкретно этого момента.
если вы понимаете куда реально произойдет передача управления в случае выброса исключения - нет проблем это отобразить
когда то раньше вообще был оператор goto практически во всех языках. даже сейчас есть. просто не рекомендуется применять. а еще в Си подобных языках широко применяются его культурные заменители типа break и continue, или return из цикла по условию. не поверите, но все это рисуется и очень просто - тупо стрелками. если что - стрелки могут пересекать друг друга
Да я понимаю что исключения не относиться к концепции ООП
и фраза
Возможно ли вообще строить блок-схемы по объектно ориентированному коду, например, как мне обозначит что в этом месте будет исключение и там будет две ветки развития событий?
не стыкуется
я тоже думал делать их через ветвление, но это же может потерять весь их смысл
с какого бодуна? это ветвление чистой воды. частный случай, названый умным словом. надо только понимать куда происходит передача управления, когда вы перехватываете исключение, где перехватываете, и когда не перехватываете вообще (в этом случае стрелку тупо замыкаем на "конец программы")
byreoil, скажем так, я бы согласился что у вашего преподавателя каша в голове, по тому он и провоцирует кашу в голове у своих подопечных. блок-схема исполнения кода является более низким уровнем, чем абстракции ООП, и не способна их отразить. тем не менее любая реальная программа может быть отображена с той или иной степень подробности, в виде блок схемы. это может быть откровением по началу, но ни какого парадокса тут нет
ps а может это сознательное упражнение предложенное учащимся
именно коду, а не по самому алгоритму, как говорит наш преподаватель
в целом, не совсем правильно: попытка убить сразу 3-х! зайцев:
проверить, что вы понимаете свой код,
проверить, что вы выучили гост
проверить, что вы понимаете алгоритм
Сначала - составляется блок-схема по известному алгоритму, затем - кодируется, и тестируется работа кода на соответствие заранее известным эталонным результатам.
2. В блок-схемах есть обозначения блока-функции и обозначение ссылок.
3. Все события и исключения - оформляем как самостоятельные функции-обработчики.