КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Технологии программирования7.2.1. Объектно-ориентированное программирование Рассмотрим сначала, как появилось объектно-ориентированное программирование. Ключевое понятие, помогающее при программировании, — это абстракция. Она позволяет лучше понять сущность программированного объекта или среду. Пусть нужно совершить поездку в Мурманск. Возникают вопросы: «Каким образом это сделать? какой транспорт использовать? сколько это будет стоить?» и т. д. Нужно выделить главное и отбросить лишнее. Тут главным будет вид транспорта. Эту абстракцию и проще всего назвать классом при программировании. У транспорта есть данные (скорость, количество двигателей и др.) и методы (взлет, посадка для самолета). Класс группирует данные и методы в единую сущность. Данные обычно закрыты, и их изменение, как правило, производится посредством методов, т. е. они защищены корректной работой методов. Первое использование классов как объектов произошло в 1967 г.: Бьерн Страуструп применил язык Simula в своей диссертации для программы, моделирующей компьютерные системы. Этот язык очень выразителен и позволяет работать с высоким уровнем абстракций. Однако при запуске программы оказалось, что у нее очень низкая производительность и выполнить работу в срок не удастся, поэтому пришлось переписать программу на языке Си. В Си классов нет. Страуструп их добавил, и появился язык C++ [40] Несколько лет назад в журнале Byte появилась статья «Объектно-ориентированное программирование умерло?». В ней говорилось о том, что объекты не оправдали возложенные на них надежды. Достичь главной цели — повторного использования кода — с помощью объектов сложно, хотя сам процесс программирования они упростили. В этот же период Microsoft создает Visual Basic. Главным нововведением в нем является возможность вставки управляющих элементов (кнопок, полей ввода) на форму. К каждому элементу можно добавить кусок кода для описания его деятельности. Оказалось очень удобно, и вскоре были созданы тысячи новых элементов — появилось расширение VBX (Visual Basic Extention). Статья Byte описала управляющие элементы VBX как наиболее успешную реализацию мечты о повторном использовании кода. У многих поклонников ООП статья вызвала недовольство. Элементы VBX не являются объектно-ориентированными. В них нет даже концепции метода, нет наследования и полиморфизма. Тем не менее VBX может рассматриваться как пример программного компонента. Это часть бинарного кода, который может быть легко вставлен в различные приложения. VBX — это любопытная, но тупиковая ветвь эволюции технологии программирования. Однако она сыграла свою роль. Как же развивалась эволюция программирования? Первоначально существовали статические библиотеки. Такие библиотеки компоновались в выполняемый файл, т. е. каждая программа содержала код библиотеки. Их легко представить в виде перфокарт, которые вставляли программисты в свои программы в «далекие времена». Для того чтобы снизить затраты памяти, были созданы динамически компонуемые библиотеки DLL. При их применении несколькими приложениями в память загружалась только одна копия библиотеки, и все приложения использовали эту копию. Другое полезное свойство DLL — компоновка в процессе выполнения, т. е. новая версия DLL может быть использована без перестройки приложения. Если новая версия библиотеки совместима со старой, то код может оказаться эффективнее (если улучшены алгоритмы в библиотеки или исправлены ошибки), если нет, приложение может оказаться неработоспособным. Второй случай называется DLL HELL. Распределение памяти при использовании статических библиотек показано на рис. 7.1.
7.2.2. Платформа JAVA и .NET На данный момент наиболее активно развиваются две конкурирующие линии технологий создания ПО на основе компонентов — технологии Java и .NET. Рассмотрим несколько элементов этих технологий, являющихся ключевыми в создании широко востребованного в настоящее время и достаточно сложного вида приложений. Это Web-приложения, т. е. распределенное программное обеспечение, использующее базовую инфраструктуру Интернета для связи между различными своими компонентами, а стандартные инструменты для навигации по Web-браузеры — как основу для своего пользовательского интерфейса. Технологии Java представляют собой набор стандартов, инструментов и библиотек, предназначенных для разработки приложений разных типов и связанных друг с другом использованием языка программирования Java. Торговая марка Java принадлежит компании Sun Microsystems, и эта компания во многом определяет развитие технологий Java, но в нем активно участвуют и другие игроки — IBM, Intel, Oracle, Hewlett-Packard, SAP, Bea и пр. В этот набор входят следующие основные элементы: • платформа Java Platform Standard Edition (J2SE) [1]. Предназначена для разработки обычных, в основном однопользовательских приложений; • платформа Java Platform Enterprise Edition (J2EE) [2]. Предназначена для разработки распределенных веб-приложений уровня предприятия; • платформа Java Platform Micro Edition (J2ME) [3]. Предназначена для разработки встроенных приложений, работающих на ограниченных ресурсах, в основном в мобильных телефонах и компьютеризированных бытовых устройствах; • платформа Java Card [5]. Предназначена для разработки ПО, управляющего функционированием цифровых карт. Ресурсы, имеющиеся в распоряжении такого ПО, ограничены в наибольшей степени. С некоторыми оговорками можно считать, что J2ME является подмножеством J2SE, а та, в свою очередь, — подмножеством J2EE. Java Card представляет собой, по существу, особый набор средств разработки, связанный с остальными платформами только поддержкой (в сильно урезанном виде) языка Java. Язык Java — это объектно-ориентированный язык программирования, который транслируется не непосредственно в машинно-зависимый код, а в так называемый байт-код, исполняемый специальным интерпретатором, виртуальной Java-машиной (Java Virtual Machine — JVM). Такая организация работы Java-программ позволяет им быть переносимыми без изменений и одинаково работать на разных платформах, если на этих платформах есть реализация JVM, соответствующая опубликованным спецификациям виртуальной машины. Кроме того, интерпретация кода позволяет реализовывать различные политики безопасности для одних и тех же приложений, выполняемых в разных средах, — к каким ресурсам (файлам, устройствам и пр.) приложение может иметь доступ, а к каким нет, можно определять при запуске виртуальной машины. Таким способом можно обеспечить запускаемое пользователем вручную приложение (за вред, причиненный которым, будет отвечать этот пользователь) большими правами, чем аплет, загруженный автоматически с какого-то сайта в Интернете. Режим интерпретации приводит обычно к более низкой производительности программ по сравнению с программами, оттранслированными в машинно-специфический код. Для преодоления этой проблемы JVM может работать в режиме динамической компиляции (just-in-time-compilation — JIT), в котором байт-код на лету компилируется в машинно-зависимый, а часто исполняемые участки кода подвергаются дополнительной оптимизации. .NET представляет собой похожий набор стандартов, инструментов и библиотек, но разработка приложений в рамках .NET возможна с использованием различных языков программирования. Основой .NET являются виртуальная машина для промежуточного языка (Intermediate Language — IL, иногда встречается сокращение Microsoft IL — MSIL), в который транслируются все .NET-программы, также называемая общей средой выполнения (Common Language Runtime — CLR), и общая библиотека классов (.NET Framework class library), доступная из всех .NET-приложений. Промежуточный язык является полноценным языком программирования, но он не предназначен для использования людьми. Разработка в рамках .NET ведется на одном из языков, для которых имеется транслятор, в промежуточный язык —Visual Basic.NET, C++, С#, Java (транслятор Java в .NET называется J#, и он не обеспечивает одинаковой работы программ на Java, оттранслированных в .NET и выполняемых на JVM) и пр. Однако разные языки достаточно сильно отличаются друг от друга, и чтобы гарантировать возможность из одного языка работать с компонентами, написанными на другом языке, необходимо при разработке этих компонентов придерживаться общих правил (Common Language Specifications — CLS), определяющих, какими конструкциями можно пользоваться во всех .NET-языках без потери возможности взаимодействия между результатами. Наиболее близок к промежуточному языку С# — этот язык был специально разработан вместе с платформой .NET. Некоторым отличием от Java является то, что код на промежуточном языке в .NET не интерпретируется, а всегда выполняется в режиме динамической компиляции (ЛТ). Компания Microsoft инициировала разработку платформы .NET и принятие стандартов, описывающих ее отдельные элементы (к сожалению, пока не все), и она же является основным поставщиком реализаций этой платформы и инструментов разработки. Благодаря наличию стандартов возможна независимая реализация .NET (например, такая реализация разработана в рамках проекта Mono), но, в силу молодости платформы и опасений по поводу монопольного влияния Microsoft на ее дальнейшее развитие, реализации .NET не от Microsoft используются достаточно редко. Для Java-технологий базовым языком является Java, а для изучения правил построения компонентов для .NET используется язык С#. Он наиболее удобен при работе в этой среде и наиболее похож на Java. Оба языка имеют мощные выразительные возможности объектно-ориентированных языков последнего поколения, поддерживающих автоматическое управление памятью и работу в многопоточном режиме. Они весьма похожи, но имеют большое число мелких отличий в деталях. Наиболее существенны для построения программ различия, касающиеся наличия в С# невиртуальных методов, возможности объявления и использования пользовательских типов значений и делегатных типов в С# и возможности передачи значений параметров в С# по ссылке.
Урок 22. Предмет: Технология разработки программных продуктов. Тема :Определение спецификаций при структурном подходе.
Цели: Образовательная Ознакомление с процессами формирования спецификаций. Развивающая: Развивать умение слушать других, делать выводы и обобщать полученные знания Воспитательная: Воспитывать чувство значимости предмета в профессиональной деятельности, аккуратности в работе Межпредметные связи: - Английский язык - Операционные системы - Информационные технологии - Основы алгоритмизации и программирования Оборудование: доска, мел, письменные принадлежности, проектор, ПК Тип урока: комбинированный Метод обучения: Объяснительно иллюстративный Ход урока: 1.Организационный момент - Проверка готовности кабинета - Объявление темы 2. Постановка цели урока 3.Повторение пройденного материала Методы разработки при модульном программировании Метод восходящей разработки Метод нисходящей разработки Конструктивный подход Архитектурный подход Нисходящая реализация Целенаправленная конструктивная реализация Технологии программирования 4.Сообщение новых знаний Спецификации процессов Диаграммы переходов состояний (SDT) Функциональные диаграммы Диаграммы потоков данных (DFD)
5. Восприятие и осознание учащимися нового материала 6. Осмысление обобщение и систематизация знаний 7. Подведение итогов урока и постановка домашнего задания Выучить содержимое темы Гагарина Л.Г. стр. С.101-107 Ответить на вопросы:
|