Kievuz

Введение в объектно-ориентированное программирование

Уроки 53 – 54§4.3. Введение в объектно-ориентированное программирование

Введение в объектно-ориентированное программирование

| Информатика и информационно-коммуникационные технологии | Планирование уроков и материалы к урокам | 10 классы | Планирование уроков на учебный год (по учебнику Н.Д. Угриновича, 2017 г.) | Введение в объектно-ориентированное программирование

§4.3.3. Проекты и приложения

§4.3.1. Объекты: свойства и методы

§4.3.2. События

§4.3.3. Проекты и приложения

Проекты и приложения

Проект (Project).

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

С другой стороны, система объектно-ориентированного визуального программирования является средой проектирования, так как позволяет осуществлять визуальное конструирование графического интерфейса.

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

В объектно-ориентированном программировании проект может включать несколько форм, причём каждой форме, с помощью которой реализуется графический интерфейс проекта, соответствует свой программный модуль формы. Подробно о графическом интерфейсе проекта рассказано в параграфе 4.7.

Кроме того, в состав проекта могут входить отдельные самостоятельные программные модули.

Проект включает в себя программные модули форм и самостоятельные программные модули в виде отдельных файлов.

Проект может быть запущен на выполнение только из системы объектно-ориентированного программирования.

Решения (Solution). В системах объектно-ориентированного программирования Visual Basic .NET и Visual C# проекты объединяются в решения, а в системе Lazarus — в группы. Решение (группа) включает один или несколько проектов, которые в упорядоченном виде в системах Visual Basic .

NET и Visual C# отображаются в Обозревателе решений, а системе Lazarus — в окне Обозреватель кода. Решение (группа) создаётся автоматически при создании нового проекта, а при необходимости к решению можно добавлять новые проекты.

Решения (группы) позволяют работать с несколькими проектами в пределах одного экземпляра системы объектно-ориентированного программирования.

Интерпретаторы и компиляторы. Чтобы процессор мог выполнить программу, эта программа и данные, с которыми она работает, должны быть загружены в оперативную память.

Итак, мы создали программу на языке программирования (некоторый текст) и загрузили её в оперативную память. Теперь мы хотим, чтобы процессор её выполнил, однако процессор «понимает» команды на машинном языке, а наша программа написана на языке программирования.

Как быть?

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

Трансляторы языков программирования бывают двух типов: интерпретаторы и компиляторы.

Интерпретатор — это программа, которая обеспечивает последовательный «перевод» инструкций программы на машинный язык с одновременным их выполнением.

Поэтому при каждом запуске программы на выполнение эта процедура повторяется.

Достоинством интерпретаторов является удобство отладки программы (поиска в ней ошибок), так как возможно пошаговое её исполнение, а недостатком — сравнительно малая скорость выполнения.

Компилятор действует иначе. Он переводит весь текст программы на машинный язык и сохраняет его в исполняемом файле (обычно с расширением ехе).

Затем этот уже готовый к исполнению файл, записанный на машинном языке, можно запускать на исполнение многократно.

Достоинством компиляторов является большая скорость выполнения программы, а недостатком — трудоёмкость отладки, так как невозможно пошаговое выполнение программы.

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

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

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

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

1. Создание графического интерфейса проекта. На форму помещаются элементы управления, которые должны обеспечить взаимодействие проекта с пользователем.

2. Установка значений свойств объектов графического интерфейса. В режиме конструирования задаются значения свойств формы и элементов управления, помещённых ранее на форму.

3. Создание и редактирование программного кода. Создаются заготовки обработчиков событий (двойной щелчок мышью по элементу управления вызывает заготовку обработчика события, которое для данного элемента управления используется наиболее часто). Затем в редакторе программного кода производится ввод и редактирование программного кода обработчиков событий.

4. Сохранение проекта. Так как проекты включают в себя несколько файлов, рекомендуется для каждого проекта создать отдельную папку на диске. Сохранение проекта производится с помощью пунктов меню Файл.

5. Компиляция проекта в приложение. Создаётся приложение — исполняемый файл (ехе).

Вопросы и задания

1. В чём состоит различие между интерпретаторами и компиляторами?

2. В чём состоит различие между проектом и приложением?

Cкачать материалы урока

Источник: https://xn----7sbbfb7a7aej.xn--p1ai/informatika_10_ugr/informatika_materialy_zanytii_10_53_ugr_3.html

15. ВВЕДЕНИЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Введение в объектно-ориентированное программирование

Мы живем в мире объектов. Стол, автомобиль, ручка, классная доска – все это объекты. Наряду с физическими существуют так же абстрактные объекты, типичными представителями которых являются числа.

Таким образом, объект – это любая физическая или абстрактная четко идентифицируемая сущность.

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

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

Помимо атрибутов объекты обладают некоторыми функциональными возможностями, которые в объектно-ориентированном программировании (ООП) называют операциями или методами. Так автомобиль может ездить, корабль – плавать, компьютер – производить вычисления.

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

Нам совершенно не обязательно знать, что происходит в пульте дистанционного управления и телевизоре, нам лишь достаточно знать, что телевизор обладает такой возможностью (методом) и как ее можно активировать. Инкапсуляция или сокрытие реализации является базовым свойством ООП.

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

Объект – это экземпляр некоторого класса объектов или просто класса. Так автомобиль Audi 6 является экземпляром класса автомобилей данной модели, приемник Sony SW-7600G так же будет представителем класса одноименных приемников. Таким образом, класс – это абстрактное понятие.

Отношение класса и объекта примерно такое же, как платоновские идеи и объекты реального мира. На UML – унифицированном языке моделирования – класс отображается в виде прямоугольника, разделенного на три части. В первой содержится имя класса, во второй – атрибуты, в третьей – методы (рис.

1, а).

Рис. 1. Изображения класса и отношений генерализации в UML: а – изображение класса; б – одиночное наследование; с – множественное наследование

Классы могут быть связаны друг с другом различными отношениями. Одним из основных таких отношений является отношение класс – подкласс, известный в объектно-ориентированном программировании как наследование.

Например, класс автомобилей Audi 6 является подклассом легковых автомобилей, который в свою очередь входит в более крупный класс автомобилей, а последний является подклассом класса транспортных средств, который помимо автомобилей включает в себя самолеты, корабли поезда и т. д.

Примером подобных отношений, являются системы классификации в ботанике и зоологии. Отношением, обратным наследованию, является обобщение или генерализация. Она указывает, что некий класс, является более общим (обобщенным) классом другого класса. Класс транспортных средств, к примеру, является генерализацией классов автомобилей, самолетов и кораблей.

В UML принято пользоваться именно понятием генерализация, что отразилось и в символе, представляющем это отношение: большая не закрашенная стрелка, направленная на класс, являющимся обобщением некоторых классов (рис. 1, б).

При наследовании все атрибуты и методы родительского класса наследуются классом-потомком.

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

Класс B унаследует атрибуты и методы класса A и, следовательно, будет обладать атрибутами A, B, C и D и методами A, B, C и D, а класс C – атрибутами A, B, C, E, F и методами A, B и E.

Помимо единичного, существует и множественное наследование, когда класс наследует сразу нескольким классам (рис. 1, с). При этом он унаследует свойства всех классов, потомком которых он является. При использовании множественного наследования необходимо быть особенно внимательным, так как возможны коллизии, когда класс-потомок может унаследовать одноименные свойства, с различным содержанием.

Такая проблема известна как «Алмаз Никсона». Ее суть состоит в том, как должен повести себя Никсон, который является квакером и в то же время принадлежит к республиканской партии. А известно, что квакеры – пацифисты, в то время как республиканцы – сторонники военного решения проблем. На лицо явная коллизия.

В разных языках, поддерживающих парадигму ООП и допускающих множественное наследование (а оно допустимо не во всех языках и, например, язык Java, широко распространенный в сфере интернет-приложений, не поддерживает множественного наследования), она преодолевается по-разному, но в любом случае необходимо быть предельно осторожным при возникновении таких ситуаций.

При наследовании одни методы класса могут замещаться другими. Так, класс транспортных средств будет обладать обобщенным методом движения. В классах-потомках этот метод будет конкретизирован: автомобиль будет ездить, самолет – летать, корабль – плавать. Такое изменение семантики метода называется полиморфизмом.

Полиморфизм – это выполнение методом с одним и тем же именем различных действий в зависимости от контекста, в частности, от принадлежности тому или другому классу. В разных языках программирования полиморфизм реализуется различными способами. Например, в C++ он реализован с помощью механизма виртуальных функций.

Другим основным видом отношений между классами и объектами является агрегация. Она означает, что один класс содержит в себе в качестве агрегатов (составных частей, подсистем) другие классы. Так автомобиль состоит из кузова, двигателя, трансмиссии и т.п.

, а в состав приемопередающего устройства входят передатчик, приемник и антенно-фидерное устройство. В UML агрегации обозначаются в виде линии с закрашенным ромбом на конце. Агрегация имеет кратность. Так автомобиль обычно содержит один двигатель, который в свою очередь может принадлежать только одному автомобилю.

Автомобиль может обычно содержать от двух до пяти дверей. В свою очередь каждая дверь может принадлежать лишь одному автомобилю.

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

Пусть объект D имеет методы f1() и f2() (рис. 2). Чтобы воспользоваться ими, надо сначала получить указатель на корневой объект А, затем на объект С, что в объектно-ориентированном программировании обычно записывается следующим образом:

A.C

Далее получаем указатель на D, так как он является агрегатом C, и, наконец, вызываем требуемые методы f1() и f2():

A.C.D.f1()
A.C.D.f2()

Рис. 2. Иерархическое представление вложенных объектов

Композиция является еще одним отношением, родственным агрегации. Но если в агрегации агрегаты принадлежат классу или объекту, то в композиции существует более слабая связь. Так, студенты с вузом находятся в отношении композиции, тогда как факультеты, которые входят в состав вуза (т. е.

являются его неотъемлемой частью или агрегатами), связаны с ним отношением агрегации. На UML композиция обозначается с помощью незакрашенных ромбов. Как и в случае агрегации, отношение композиции имеет кратность. Агрегация и композиция являются подклассами класса отношений ассоциации.

Ассоциация обозначается в виде линии без стрелок и ромбиков и может принимать вид как агрегации, так и композиции.

На ранних этапах объектно-ориентированного анализа и проектирования часто задаются отношения ассоциаций, а свою конкретизацию в виде агрегаций и композиций они получают на более поздних этапах.

Существует заблуждение, что объектно-ориентированное программирование является чем-то сложным и непонятным. Но объектная декомпозиция является ничуть не менее естественной и интуитивно понятной, чем алгоритмическая, которая безраздельно властвовала до появления ООП.

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

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

Объектно-ориентированные, объектные и объектно-базированные языки программирования

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

  1. Объектно-ориентированные
  2. Объектные
  3. Объектно-базированные

Объектно-ориентированные языки в полной мере поддерживают парадигму ООП, а именно, инкапсуляцию, наследование и полиморфизм. Типичными представителями таких языков являются C++, Java, C#.

К объектным языкам относят языки как минимум поддерживающие инкапсуляцию. Они позволяют создавать пользовательские объекты, но, обычно не поддерживают наследование или полиморфизм, или же поддерживают, но не в полной мере. Типичными представителем объектных языков являются Visual Basic до шестой версии включительно и Ada.

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

JavaScript относится именно к объектно-базированным языкам программирования.

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

Избранная библиография по объектно-ориентрованному программированию

  1. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Пер. с англ. М.: Бином, СПб.: Невский диалект, 1998.
  2. Буч Грейди, Рамбо Джеймс, Джекобсон Айвар. Язык UML. Руководство пользователя. Пер. с англ. М.: ДМК, 2000.
  3. Гамма Э., Хелм Р., Джексон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Пер. с англ. СПб.: Питер, 2001.
  4. Ларман К. Применение UML и шаблонов проектирования / Пер. с англ. М.: Виль-ямс, 2002.
< предыдущая оглавление следующая >

Источник: http://structuralist.narod.ru/it/internet/oop.htm

ovdmitjb

Add comment