Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_Kara-Ushanova.doc
Скачиваний:
12
Добавлен:
22.02.2015
Размер:
326.14 Кб
Скачать

15.Принцип системного подхода к проектированию алгоритмов и программ

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

В основе лежат универсальные методы системного проектирования:

- нисходящее проектирование с модульной структурой

- метод пошаговой детализации

- принцип структурного программирования

Нисходящее проектирование и принцип модульности:

Определение цели, определение знака, выполнение которых ведет к достижению цели.

Задача рассматривается как сложная система.

Модуль – самостоятельный, логически законченный фрагмент алгоритма или программы, выполняющий определенную функцию, как правило одну.

  • Модуль должен быть небольшим

  • должен выполнять функцию

  • должен иметь имя и может быть вызван другими модулями

  • должен иметь один вход и один выход

  • работа модуля не должна зависеть от истории его вызовов

Результат:

- возможность поручить разработку программы нескольким программистам

- возможность создавать библиотеки

Пошаговая детализация

Основная идея: разбиение алгоритма реализации функции на составные части подфункции или шаги алгоритма.

Структурное программирование

Использование базовых управляющих структур при проектировании алгоритмов и программ.

Структуры:

  1. Следование

  2. Ветвление

  3. Цикл

Объектно-ориентированное программирование (ООП)

Это методология создания программ, учитывающих естественные связи между объектами и явлениями реального мира.

Программа состоит из программного кода, обрабатывающего какие-либо данные.

Процедурно-ориентированные подход отдает предпочтение коду.

Но успешность проекта в большинстве случаев зависит не качества кода, а от качества модели данных.

Современные языки – объектно-ориентированные.

Базовые принципы:

  1. Концентрация внимания на взаимодействиях между объектами

Объект – это абстрактная сущность, наделенная характеристиками объектов окружающего мира.

Каждый объект имеет соответственный набор атрибутов (структура объекта) и набор методов (реакция на внешние воздействия)

  1. Инкапсуляция – сокрытие внутренней структуры данных и реализации методов объекта от остальной программы. Другим объектам доступен только интерфейс объекта, через который осуществляется все взаимодействие с ним.

  2. Класс – объединение объектов, имеющих одинаковую структуру и поведение.

  3. Наследование – свойство объектов порождать своих потомков. Потомок наследует данные и методы родителя, но может дополнять их и изменять.

  4. Полиморфизм (с греч. "множественность форм") – свойство родственных объектов вести себя по разному в зависимости от ситуации.

16.Концепция объектно-ориентированного программирования.

Объе́ктно-ориенти́рованное программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

Класс — это тип, описывающий устройство объектов. Понятие «класс» подразумевает некоторое поведение и способ представления. Понятие «объект» подразумевает нечто, что обладает определённым поведением и способом представления. Говорят, что объект — это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности, т.н. объекта.

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

Прототип — это объект-образец, по образу и подобию которого создаются другие объекты.

Объект — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеет заданные значения свойств (атрибутов) и операций над ними (методов)[1]. Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые в свою очередь определяют поведение (являются моделью) объекта. Время с момента создания объекта (конструкция) до его уничтожения (деструкция) называется временем жизни объекта. Объект наряду с понятием «класс», является важным понятием объектно-ориентированного подхода в программировании. Объекты обладают свойствами наследования, инкапсуляции и полиморфизма.

Инстанцирование (англ. instantiation) — создание экземпляра класса. В отличие от слова «создание», применяется не к объекту, а к классу. То есть, говорят «(в виртуальной среде) создать экземпляр класса или инстанцировать класс». Порождающие шаблоны используют полиморфное инстанцирование.

Экземпляр класса (англ. instance) — это описание конкретного объекта в памяти. Класс описывает свойства и методы, которые будут доступны у объекта, построенного по описанию, заложенному в класс. Экземпляры используют для представления (моделирования) конкретных сущностей реального мира. Например объектом может быть ваша стиральная машина, и иметь следующие атрибуты: компания-производитель «Вятка», наименование модели «Вятка-автомат», серийный номер изделия ВЯТ454647, емкость 20 л.

Имя объекта начинается обычно со строчной буквы.

Анонимный объект (англ. anonymous object) — это объект который принадлежит некоторому классу, но не имеет имени.

В большинстве объектно ориентированных языков программирования (таких как Java, C++ или С#), объекты являются экземплярами некоторого заранее описанного класса (однако например в таком языке как JavaScript понятие класс не используется вовсе). Объекты в таких языках создаются с помощью конструктора класса, и уничтожаются либо с помощью деструктора класса (например, в C++), либо автоматически с использованием сборщика мусора (в Java, C#). Объект хранится в виде данных всех его полей и ссылок на таблицу виртуальных методов и RTTI своего класса. Класс определяет набор функций и служебной информации для построения объекта, в том числе необходимый объем памяти для хранения объекта. В языке Питон (эталонной реализацией Питона является интерпретатор CPython) все значения являются объектами, даже классы. В этом языке можно построить класс, экземплярами которого будут классы. Такие классы называются метаклассами.

Инициализация (англ. initialization) — присвоение начальных значений полям объекта.

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

Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).

Предостережение: Одна из наиболее распространенных ошибок — делать сокрытие реализации только ради сокрытия. Целями, достойными усилий, являются:

предельная локализация изменений при необходимости таких изменений,

прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

Образ в пример: ложка опущенная в стакан, не меняет его свойств и не становится частью стакана, хотя и помогает пить из него чай; в то же время, сахар, растворенный в чае с помощью ложки, делает его сладким.

Часто инкапсуляция может быть достигнута простейшими организационными мерами: знание того, что «вот так-то делать нельзя» иногда является самым эффективным средством инкапсуляции.

Полиморфи́зм (в языках программирования) — взаимозаменяемость объектов с одинаковым интерфейсом.

Полиморфизм — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, инкапсуляцией и наследованием).

Насле́дование — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]