Автор работы: Пользователь скрыл имя, 16 Сентября 2014 в 11:37, шпаргалка
Работа содержит ответы на вопросы для экзамена по дисциплине "Информатика".
8.
Паскаль (англ. Pascal) — язык программирования общего назначения. Один из наиболее известных языков программирования[4], используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда других языков.
Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык, автор указывал в качестве цели его создания — построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.
Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию[5]. Результат этой работы — язык Модула-2.
Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Вирта, язык должен способствовать дисциплинированному программированию, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.
Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования»[9] (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.
Однако многие недостатки
языка не проявляются или даже становятся
достоинствами при обучении программированию.
Кроме того, по сравнению с основным языком
программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо
более существенными недостатками), Паскаль
представлял собой значительный шаг вперёд.
К 1980-м годам Паскаль стал основой для
многочисленных учебных программ, в отдельных
случаях на его основе были созданы специализированные
обучающие языки программирования, так,
в начале 1980-х годов в СССР для обучения
школьников основам информатики и вычислительной
техники Андрей Ершов разработа
Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.
Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.
Объе́ктно-ориенти́рованное
программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов иклассов. В случае языков с прототипирован
ООП возникло в результате
развития идеологии процедурного программирования, где данные и подпрограммы
(процедуры, функции) их обработки формально
не связаны. Для дальнейшего развития
объектно-ориентированного программирования
часто большое значение имеют понятия
события (так называемоесобытийно-
Взаимодействие объектов происходит посредством сообщений. Результатом дальнейшего развития ООП, по-видимому, будет агентно-ориентированое программирование, где агенты — независимые части кода на уровне выполнения. Взаимодействие агентов происходит посредством изменения среды, в которой они находятся.
Языковые конструкции,
конструктивно не относящиеся непосредственно
к объектам, но сопутствующие им для их
безопасной (исключительные ситуации, проверки) и эффективной
работы, инкапсулируются от них в аспекты
(в аспектно-ориентированном
программировании). Субъектно-
Первым языком программирования,
в котором были предложены принципы объектной
ориентированности, была Симула. В момент его появления
в 1967 году в нём были предложены
революционные идеи: объекты, классы, виртуальные методы и др., однако это всё
не было воспринято современниками как
нечто грандиозное. Тем не менее, большинство
концепций были развиты Аланом Кэем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым
широко распространённым объектно-
В настоящее время количество прикладных языков программирования (список языков), реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. В области системного программирования до сих пор применяется парадигма процедурного программирования, и общепринятым языком программирования является Cи. При взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования. Например, одной из наиболее распространённых библиотек мультиплатформенного программирования является объектно-ориентированная библиотека Qt, написанная на языке C++.
Определение ООП и его основные концепции[править | править вики-текст]
В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения и которая может на них реагировать, используя свои данные. Объект — это экземпляр класса. Данные объекта скрыты от остальной программы. Скрытие данных называется инкапсуляцией.
Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.
Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм — возможность объектов с одинаковой спецификацией иметь различную реализацию.
Особенности реализации[править | править вики-текст]
Как уже говорилось выше, в современных объектно-ориентированных языках программирования каждый объект является значением, относящимся к определённому классу. Класс представляет собой объявленный программистом составной тип данных, имеющий в составе:
Поля данных
Параметры объекта (конечно, не все, а только необходимые в программе), задающие его состояние (свойства объекта предметной области). Иногда поля данных объекта называют свойствами объекта, из-за чего возможна путаница. Физически поля представляют собой значения (переменные, константы), объявленные как принадлежащие классу.
Методы
Процедуры и функции, связанные с классом. Они определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять.
Классы могут наследоваться друг от друга. Класс-потомок получает все поля и методы класса-родителя, но может дополнять их собственными либо переопределять уже имеющиеся. Большинство языков программирования поддерживает только единичное наследование (класс может иметь только один класс-родитель), лишь в некоторых допускается множественное наследование — порождение класса от двух или более классов-родителей. Множественное наследование создаёт целый ряд проблем, как логических, так и чисто реализационных, поэтому в полном объёме его поддержка не распространена. Вместо этого в 1990-е годы появилось и стало активно вводиться в объектно-ориентированные языки понятие интерфейса. Интерфейс — это класс без полей и без реализации, включающий только заголовки методов. Если некий класс наследует (или, как говорят, реализует) интерфейс, он должен реализовать все входящие в него методы. Использование интерфейсов предоставляет относительно дешёвую альтернативу множественному наследованию.
Взаимодействие объектов в абсолютном большинстве случаев обеспечивается вызовом ими методов друг друга.
Инкапсуляция обеспечивается следующими средствами
Контроль доступа
Поскольку методы класса могут быть как чисто внутренними, обеспечивающими логику функционирования объекта, так и внешними, с помощью которых взаимодействуют объекты, необходимо обеспечить скрытость первых при доступности извне вторых. Для этого в языки вводятся специальные синтаксические конструкции, явно задающие область видимости каждого члена класса. Традиционно это модификаторы public, protected и private, обозначающие, соответственно, открытые члены класса, члены класса, доступные только из классов-потомков, и скрытые, доступные только внутри класса. Конкретная номенклатура модификаторов и их точный смысл различаются в разных языках.
Методы доступа
Поля класса в общем
случае не должны быть доступны извне,
поскольку такой доступ позволил бы произвольным
образом менять внутреннее состояние
объектов. Поэтому поля обычно объявляются
скрытыми (либо язык в принципе не позволяет
обращаться к полям класса извне), а для
доступа к находящимся в полях данным
используются специальные методы, называемые
методами доступа. Такие методы либо возвращают
значение того или иного поля, либо производят
запись в это поле нового значения. При
записи метод доступа может проконтролировать
допустимость записываемого значения
и, при необходимости, произвести другие
манипуляции с данными объекта, чтобы
они остались корректными (внутренне согласованными).
Методы доступа называют ещё аксессорами
(от англ. access — доступ), а по отдельности — геттерами (англ.
9.
Объе́ктно-ориенти́рованное
программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов иклассов. В случае языков с прототипирован
ООП возникло в результате
развития идеологии процедурного программирования, где данные и подпрограммы
(процедуры, функции) их обработки формально
не связаны. Для дальнейшего развития
объектно-ориентированного программирования
часто большое значение имеют понятия
события (так называемоесобытийно-
Взаимодействие объектов происходит посредством сообщений. Результатом дальнейшего развития ООП, по-видимому, будет агентно-ориентированое программирование, где агенты — независимые части кода на уровне выполнения. Взаимодействие агентов происходит посредством изменения среды, в которой они находятся.
Языковые конструкции,
конструктивно не относящиеся непосредственно
к объектам, но сопутствующие им для их
безопасной (исключительные ситуации, проверки) и эффективной
работы, инкапсулируются от них в аспекты
(в аспектно-ориентированном
программировании). Субъектно-
Первым языком программирования,
в котором были предложены принципы объектной
ориентированности, была Симула. В момент его появления
в 1967 году в нём были предложены
революционные идеи: объекты, классы, виртуальные методы и др., однако это всё
не было воспринято современниками как
нечто грандиозное. Тем не менее, большинство
концепций были развиты Аланом Кэем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым
широко распространённым объектно-
В настоящее время количество прикладных языков программирования (список языков), реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. В области системного программирования до сих пор применяется парадигма процедурного программирования, и общепринятым языком программирования является Cи. При взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования. Например, одной из наиболее распространённых библиотек мультиплатформенного программирования является объектно-ориентированная библиотека Qt, написанная на языке C++.
Определение ООП и его основные концепции[править | править вики-текст]
В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения и которая может на них реагировать, используя свои данные. Объект — это экземпляр класса. Данные объекта скрыты от остальной программы. Скрытие данных называется инкапсуляцией.
Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.
Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм — возможность объектов с одинаковой спецификацией иметь различную реализацию.
Особенности реализации[править | править вики-текст]