Автор работы: Пользователь скрыл имя, 16 Сентября 2014 в 11:37, шпаргалка
Работа содержит ответы на вопросы для экзамена по дисциплине "Информатика".
Как уже говорилось выше, в современных объектно-ориентированных языках программирования каждый объект является значением, относящимся к определённому классу. Класс представляет собой объявленный программистом составной тип данных, имеющий в составе:
Поля данных
Параметры объекта (конечно, не все, а только необходимые в программе), задающие его состояние (свойства объекта предметной области). Иногда поля данных объекта называют свойствами объекта, из-за чего возможна путаница. Физически поля представляют собой значения (переменные, константы), объявленные как принадлежащие классу.
Методы
Процедуры и функции, связанные с классом. Они определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять.
Классы могут наследоваться друг от друга. Класс-потомок получает все поля и методы класса-родителя, но может дополнять их собственными либо переопределять уже имеющиеся. Большинство языков программирования поддерживает только единичное наследование (класс может иметь только один класс-родитель), лишь в некоторых допускается множественное наследование — порождение класса от двух или более классов-родителей. Множественное наследование создаёт целый ряд проблем, как логических, так и чисто реализационных, поэтому в полном объёме его поддержка не распространена. Вместо этого в 1990-е годы появилось и стало активно вводиться в объектно-ориентированные языки понятие интерфейса. Интерфейс — это класс без полей и без реализации, включающий только заголовки методов. Если некий класс наследует (или, как говорят, реализует) интерфейс, он должен реализовать все входящие в него методы. Использование интерфейсов предоставляет относительно дешёвую альтернативу множественному наследованию.
Взаимодействие объектов в абсолютном большинстве случаев обеспечивается вызовом ими методов друг друга.
Инкапсуляция обеспечивается следующими средствами
Контроль доступа
Поскольку методы класса могут быть как чисто внутренними, обеспечивающими логику функционирования объекта, так и внешними, с помощью которых взаимодействуют объекты, необходимо обеспечить скрытость первых при доступности извне вторых. Для этого в языки вводятся специальные синтаксические конструкции, явно задающие область видимости каждого члена класса. Традиционно это модификаторы public, protected и private, обозначающие, соответственно, открытые члены класса, члены класса, доступные только из классов-потомков, и скрытые, доступные только внутри класса. Конкретная номенклатура модификаторов и их точный смысл различаются в разных языках.
Методы доступа
Поля класса в общем
случае не должны быть доступны извне,
поскольку такой доступ позволил бы произвольным
образом менять внутреннее состояние
объектов. Поэтому поля обычно объявляются
скрытыми (либо язык в принципе не позволяет
обращаться к полям класса извне), а для
доступа к находящимся в полях данным
используются специальные методы, называемые
методами доступа. Такие методы либо возвращают
значение того или иного поля, либо производят
запись в это поле нового значения. При
записи метод доступа может проконтролировать
допустимость записываемого значения
и, при необходимости, произвести другие
манипуляции с данными объекта, чтобы
они остались корректными (внутренне согласованными).
Методы доступа называют ещё аксессорами
(от англ. access — доступ), а по отдельности — геттерами (англ.
Свойства объекта
Псевдополя, доступные для чтения и/или записи. Свойства внешне выглядят как поля и используются аналогично доступным полям (с некоторыми исключениями), однако фактически при обращении к ним происходит вызов методов доступа. Таким образом, свойства можно рассматривать как «умные» поля данных, сопровождающие доступ к внутренним данным объекта какими-либо дополнительными действиями (например, когда изменение координаты объекта сопровождается его перерисовкой на новом месте). Свойства, по сути, не более чем синтаксический сахар, поскольку никаких новых возможностей они не добавляют, а лишь скрывают вызов методов доступа. Конкретная языковая реализация свойств может быть разной. Например, в C# объявление свойства непосредственно содержит код методов доступа, который вызывается только при работе со свойствами, то есть не требует отдельных методов доступа, доступных для непосредственного вызова. В Delphi объявление свойства содержит лишь имена методов доступа, которые должны вызываться при обращении к полю. Сами методы доступа представляют собой обычные методы с некоторыми дополнительными требованиями к сигнатуре.
Полиморфизм реализуется путём введения в язык правил, согласно которым переменной типа «класс» может быть присвоен объект любого класса-потомка её класса.
Подходы к проектированию программ в целом[править | править вики-текст]
ООП ориентировано на разработку крупных программных комплексов, разрабатываемых командой программистов (возможно, достаточно большой). Проектирование системы в целом, создание отдельных компонентов и их объединение в конечный продукт при этом часто выполняется разными людьми, и нет ни одного специалиста, который знал бы о проекте всё.
Объектно-ориентированное проектирование состоит в описании структуры и поведения проектируемой системы, то есть, фактически, в ответе на два основных вопроса:
Из каких частей состоит система.
В чём состоит ответственность каждой из частей.
Выделение частей производится таким образом, чтобы каждая имела минимальный по объёму и точно определённый набор выполняемых функций (обязанностей), и при этом взаимодействовала с другими частями как можно меньше.
Дальнейшее уточнение приводит к выделению более мелких фрагментов описания. По мере детализации описания и определения ответственности выявляются данные, которые необходимо хранить, наличие близких по поведению агентов, которые становятся кандидатами на реализацию в виде классов с общими предками. После выделения компонентов и определения интерфейсов между ними реализация каждого компонента может проводиться практически независимо от остальных (разумеется, при соблюдении соответствующей технологической дисциплины).
Большое значение имеет правильное построение иерархии классов. Одна из известных проблем больших систем, построенных по ООП-технологии — так называемая проблема хрупкости базового класса. Она состоит в том, что на поздних этапах разработки, когда иерархия классов построена и на её основе разработано большое количество кода, оказывается трудно или даже невозможно внести какие-либо изменения в код базовых классов иерархии (от которых порождены все или многие работающие в системе классы). Даже если вносимые изменения не затронут интерфейс базового класса, изменение его поведения может непредсказуемым образом отразиться на классах-потомках. В случае крупной системы разработчик базового класса просто не в состоянии предугадать последствия изменений, он даже не знает о том, как именно базовый класс используется и от каких особенностей его поведения зависит корректность работы классов-потомков.
Родственные методологии[править | править вики-текст]
Компонентное программирование — следующий этап развития ООП; прототип- и класс-ориентированное программирование — разные подходы к созданию программы, которые могут комбинироваться, имеющие свои преимущества и недостатки.
10.
Информационное моделирование
Табличные модели. Одним из наиболее часто используемых типов информационных моделей является таблица, которая состоит из строк и столбцов.
Построим, например, табличную информационную модель, отражающую стоимость отдельных устройств компьютера. Пусть в первом столбце таблицы содержится перечень объектов (устройств), входящих в состав компьютера, а во втором – их цена.
Рисунок 9.2. Информационная табличная модель
С помощью таблиц создаются информационные модели в различных предметных областях. Широко известно табличное представление математических функций, статистических данных, расписаний поездов и самолетов, уроков и т. д.
Табличные информационные модели проще всего формировать и исследовать на компьютере посредством электронных таблиц и систем управления базами данных.
Иерархические модели
Нас окружает множество различных объектов, каждый из которых обладает определенными свойствами. Однако некоторые группы объектов имеют одинаковые общие свойства, которые отличают их от объектов других групп.
Группа объектов, обладающих одинаковыми общими свойствами, называется классом объектов. Внутри класса могут быть выделены подклассы, объекты которых обладают некоторыми особенными свойствами, в свою очередь, подклассы можно делить на еще более мелкие группы и т. д. Такой процесс называется процессом классификации.
При классификации объектов часто применяются информационные модели, которые имеют иерархическую (древовидную) структуру. В иерархической информационной модели объекты распределены по уровням, причем элементы нижнего уровня – входят в состав одного из элементов более высокого уровня. Например, весь животный мир рассматривается как иерархическая система (тип, класс, отряд, семейство, род, вид), для информатики характерна иерархическая файловая система и т. д.
Рисунок 9.3. Информационная иерархическая модель
На рисунке 9.3 изображена информационная модель, которая позволяет классифицировать современные компьютеры. Полученная информационная структура напоминает дерево, которое растет сверху вниз (именно поэтому такие информационные модели называют иногда древовидными). В структуре четко просматриваются три уровня: от первого, верхнего, имеющего один элемент Компьютеры, мы спускаемся до третьего, нижнего, имеющего три элемента Настольные, Портативные, Карманные.
11. «Компьютерное моделирование и его особенности»
Моделирование – процесс построения и использования модели. Под моделью понимают такой материальный или абстрактный объект, который в процессе изучения заменяет объект-оригинал, сохраняя его свойства, важные для данного исследования. Представление о компьютерном моделировании
Компьютерное моделирование
является одним из эффективных методов
изучения сложных систем. Компьютерные
модели проще и удобнее исследовать в
силу их возможности проводить вычислительные
эксперименты, в тех случаях, когда реальные
эксперименты затруднены из-за финансовых
или физических препятствий или могут
дать непредсказуемый результат. Логичность
компьютерных моделей позволяет выявить
основные факторы, определяющие свойства
изучаемого объекта-оригинала (или целого
класса объектов), в частности, исследовать
отклик моделируемой физической системы
на изменения ее параметров и начальных
условий.
Компьютерное моделирование
как новый метод научных исследований
основывается на:
1. Построении
математических моделей для описания
изучаемых процессов;
2. Использовании
новейших вычислительных машин, обладающих
высоким быстродействием (миллионы операций
в секунду) и способных вести диалог с
человеком.
Различают аналитическое и имит
Построение компьютерной модели
базируется на абстрагировании от конкретной
природы явлений или изучаемого объекта-оригинала
и состоит из двух этапов – сначала создание
качественной, а затем и количественной
модели. Компьютерное же моделирование
заключается в проведении серии вычислительных
экспериментов на компьютере, целью которых
является анализ, интерпретация и сопоставление
результатов моделирования с реальным
поведением изучаемого объекта и, при
необходимости, последующее уточнение
модели и т. д.
Итак, к основным этапам
компьютерного моделирования относятся:
1. Постановка
задачи, определение объекта моделирования:
на данном этапе происходит сбор информации,
формулировка вопроса, определение целей,
формы представления результатов, описание
данных.
2. Анализ и исследование
системы:
анализ системы, содержательное описание
объекта, разработка информационной модели,
анализ технических и программных средств,
разработка структур данных, разработка
математической модели.
3. Формализация,
то есть переход к математической модели,
создание алгоритма:
выбор метода проектирования алгоритма,
выбор формы записи алгоритма, выбор метода
тестирования, проектирование алгоритма.
4. Программирование:
выбор языка программирования или прикладной
среды для моделирования, уточнение способов
организации данных, запись алгоритма
на выбранном языке программирования
(или в прикладной среде).
5. Проведение
серии вычислительных экспериментов:
отладка синтаксиса, семантики и логической
структуры, тестовые расчеты и анализ
результатов тестирования, доработка
программы.
6. Анализ и интерпретация
результатов:
доработка программы или модели в случае
необходимости.
Существует множество программных комплексов
и сред, которые позволяют проводить построение
и исследование моделей:
§ Графические среды § Текстовые
редакторы § Среды
программирования
§ Электронные таблицы § Математические пакеты § HTML-редакторы § СУБД и др.
2.4. Вычислительный эксперимент
Эксперимент – это опыт, который
производится с объектом или моделью.
Он заключается в выполнении некоторых
действий, чтобы определить, как реагирует
экспериментальный образец на эти действия.
Вычислительный эксперимент предполагает
проведение расчетов с использованием
формализованный модели.
Использование компьютерной модели, реализующей
математическую, аналогично проведению
экспериментов с реальным объектом, только
вместо реального эксперимента с объектом
проводится вычислительный эксперимент
с его моделью. Задавая конкретный набор
значений исходных параметров модели,
в результате вычислительного эксперимента
получают конкретный набор значений искомых
параметров, исследуют свойства объектов
или процессов, находят их оптимальные
параметры и режимы работы, уточняют модель.
Например, располагая уравнением, описывающим
протекание того или иного процесса, можно,
изменяя его коэффициенты, начальные и
граничные условия, исследовать, как при
этом будет вести себя объект. Математическое моделирование 1. Что такое математическое
моделирование?