Слайд 1Структурное программирование
и объектно-ориентированное программирование
Слайд 2Структурное программирование
Структу́рное программи́рование — методология разработки программного обеспечения, в основе
которой лежит представление программы в виде иерархической структуры блоков. Предложена
в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.
Методология структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственного усложнения программного обеспечения. В 70-е годы XX века объёмы и сложность программ достигли такого уровня, что «интуитивная» (неструктурированная, или «рефлекторная») разработка программ, которая была нормой в более раннее время, перестала удовлетворять потребностям практики. Программы становились слишком сложными, чтобы их можно было нормально сопровождать, поэтому потребовалась какая-то систематизация процесса разработки и структуры программ.
Слайд 3В соответствии с данной методологией
Любая программа представляет собой структуру, построенную
из трёх типов базовых конструкций:
последовательное исполнение — однократное выполнение
операций в том порядке, в котором они записаны в тексте программы;
ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
Слайд 4Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически
целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм
(процедур или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.
Слайд 5Разработка программы ведётся пошагово, методом «сверху вниз».
Сначала пишется текст основной
программы, в котором, вместо каждого связного логического фрагмента текста, вставляется
вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы. Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена.
Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.
Слайд 6Наиболее сильной критике со стороны разработчиков структурного подхода к программирования
подвергся оператор GOTO (оператор безусловного перехода), имевшийся тогда почти во
всех языках программирования. Неправильное и необдуманное использование произвольных переходов в тексте программы приводит к получению запутанных, плохо структурированных программ, по тексту которых практически невозможно понять порядок исполнения и взаимозависимость фрагментов.
Слайд 7 некоторые достоинства структурного программирования:
1. Структурное программирование позволяет значительно сократить
число вариантов построения программы, что значительно снижает сложность программы и,
что ещё важнее, облегчает понимание её другими разработчиками.
2. В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
3. Сильно упрощается процесс тестирования и отладки структурированных программ.
Слайд 8Объектно-ориентированное программирование
Объе́ктно-ориенти́рованное программи́рование (ООП) — стиль программирования, в котором основными
концепциями являются понятия объектов и классов (либо, в менее известном
варианте языков с прототипированием — прототипов).
Класс — это тип, описывающий устройство объектов — экземпляров. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.
Прототип — это образцовый объект, по образу и подобию которого создаются другие объекты.
Слайд 9Языки ООП
Языки объектного программирования принято делить на объектные, в которых
существуют классы и объекты, и объектно-ориентированные, в которых программист может
не только пользоваться предопределёнными классами, но и задавать собственные пользовательские классы (либо создавать объекты, устройство которых отличается от устройства прототипов — в языках прототипного программирования).
Слайд 10Объектное и объектно-ориентированное программирование возникло в результате развития идеологии процедурного
программирования, где данные и подпрограммы (процедуры, функции) их обработки формально
не связаны. Кроме того, в современном объектно-ориентированном программировании часто большое значение имеют понятия события (так называемое событийно-ориентированное программирование) и компонента (компонентное программирование).
Объектно-ориентированное программирование в настоящее время является абсолютным лидером в области прикладного программирования (языки Java, C#, C++, JavaScript, ActionScript и др.).
Слайд 11Основные понятия
Абстракция данных
Объекты представляют собою упрощенное, идеализированное описание реальных
сущностей предметной области. Если соответствующие модели адекватны решаемой задаче, то
работать с ними оказывается намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта.
Инкапсуляция
Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых свойств и методов класса) и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Слайд 12Основные понятия
Наследование
Наследованием называется возможность порождать один класс от другого
с сохранением всех свойств и методов класса-предка (прародителя, иногда его
называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Полиморфизм
Полиморфизмом называют явление, при котором один и тот же программный код (полиморфный код) выполняется по-разному в зависимости от того, объект какого класса используется при вызове данного кода.
Слайд 13Основные концепции
Система состоит из объектов
Объекты некоторым образом взаимодействуют между собой
Каждый
объект характеризуется своим состоянием и поведением
Состояние объекта задаётся значением полей
данных
Поведение объекта задаётся методами
Слайд 14Традиционный подход
Данный подход реализован в огромном количестве языков программирования; из
промышленно используемых языков программирования на развитие идей объектного программирования наибольшее
влияние оказали языки C++ и Java. Очень часто под объектно-ориентированным подходом понимаются именно модели, реализованные в этих языках.
Слайд 15Перевод числа из шестнадцатеричной системы счисления в двоичную
Для перевода многозначного
двоичного числа в шестнадцатеричную систему нужно разбить его на тетрады
справа налево и заменить каждую тетраду соответствующей шестнадцатеричной цифрой.
Например:
101101000112=0101 1010 0011=5A316
Перевод числа из восьмеричной системы счисления в двоичную
Для перевода многозначного двоичного числа в восьмеричную систему нужно разбить его на триады справа налево и заменить каждую триаду соответствующей шестнадцатеричной цифрой.
08 = 0002
18 = 0012
28 = 0102
38 = 0112
48 = 1002
58 = 1012
68 = 1102
78 = 1112