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

Автор работы: Пользователь скрыл имя, 26 Сентября 2013 в 21:40, курсовая работа

Краткое описание

В работе рассматриваются три вопроса. В первом мы анализируем устройства ввода звуковой информации, их виды и назначение. При ответе на второй вопрос мы узнаем об организации файловой системы, как обслуживается файловая структура . В третьем вопросе мы рассматриваем объектно-ориентированное программирование в языках С++, Object Pascal, Java, узнаём о предназначении и структуре.
Современный период развития общества характеризуется сильным влиянием на него компьютерных технологий. Средства ввода звуковой информации на компьютер совершенствуются. Объектно-ориентированное программирование – это новый способ подхода к программированию

Содержание

Введение……………..……………………….…………….……………………….…...…..4
1. Устройства ввода звуковой информации.…………………………………………....5
1.1 Микрофон……...…………..………………………..………………………………..5
1.2 Цифровой диктофон.…………………………………………………………….…7
1.3 Модем…………………………………………………………………………………..7
2. Организация файловой системы. Обслуживание файловой структуры…………......10
2.1 Организация файловой системы.…………………………….…………….… ... 10
2.2 Обслуживание файловой структуры…………………………….….…….…….21
3. Объектно-ориентированное программирование…….……………………………..…....24
3.1 Контроль во время компиляции и во время выполнения………………….……25
3.2 Чисто объектно-ориентированные и гибридные языки……………………..25
3.3 Простая объектная модель и ссылочно-объектная модель…………………26
3.4 Классы, объекты и ссылки………………………………………………………….26
3.5 Мусорная корзина…………………………………………………………………….27
3.6 Определение новых классов…………………………………………………………29
3.7 Создание и уничтожение объектов ……………………………………………..30
3.8 Инкапсуляция (Private и Public)……………………………………………………30
3.9 Файлы, юниты и пакеты……………………………………………………………30
3.10 Методы/данные класса и объекта класса……………………………………..31
3.11 Классы и наследование……………………………………………………………..31
3.12 Предок всех классов…………………………………………………………………32
3.13 Доступ к методам базового класса……………………………………………..32
3.14 Совместимость подтипов………………………………………………………..33
3.15 Позднее связывание (и полиморфизм)…………………………………………..33
3.16 Абстрактные методы и классы…………………………………………………33
3.17 Множественное наследование и интерфейсы…………..……………………34
3.18 Другие свойства…………………………………………………………….………35
3.19 Стандарты…………………………………………………………………….……37
3.20 Языки и программное окружение……………………………………………...37
4. Практическая часть ……………………….…………………………...……………38
4.1 Условие задачи…………………………………………………………….…………38
4.2 Блок-схема………………………………………………….…………………………39
4.3 Листинг программы…………………………………………………………………40
Заключение ……………….……….………………………………………………………42
Список использованной литературы…………………………………………………… 43

Вложенные файлы: 1 файл

курсяк.docx

— 942.17 Кб (Скачать файл)

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

 

Навигация по файловой структуре

 

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

Как и операционные системы, файловые оболочки бывают неграфическими и графическими. Наиболее известная неграфическая  файловая оболочка для MS-DOS — диспетчер  файлов Norton Commander, а роль графической  файловой оболочки для MS-DOS в свое время  исполняли программы Windows1.0 и Windows2.0, которые постепенно развились до понятия операционной среды (в версиях Windows З.х) и далее до самостоятельной  операционной системы (Windows95/98).

 

 

 

Управление атрибутами файлов

 

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

Основных  атрибутов четыре:

  1. Только для чтения (Read only);
  2. Скрытый (Hidden);
  3. Системный (System);
  4. Архивный (Archive).

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

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.Объектно-ориентированное  программирование

 

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

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

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

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

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

ООП стало популярным во второй половине 80-х в таких различных языках, как Си-плюс-плюс, Objective C, Object и Турбо  Паскаль (Turbo Pascal), CLOS (ОО-расширение Лиспа), Eiffel, Ада (в её последних воплощениях) и недавно — в Джаве (Java). Эта  работа сосредоточена на Си-плюс-плюс (C++), Обджект Паскале (Object Pascal) и Джава (Java), иногда упоминая и другие языки.

 

Ключевые черты ООП:

 

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

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

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

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

Алан  Кей в свое время вывел пять основных черт языка Smalltalk — первого  удачного ОО языка:

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

Программа — совокупность объектов, указывающих  друг другу что делать. Для обращения  к одному объекту другой объект «посылает  ему сообщение». Как вариант возможно и «ответное сообщение». Программу  можно представить себе как совокупность к примеру 3 объектов: писателя, ручки  и листа бумаги. Писатель «посылает  сообщение» ручке, которая в свою очередь «посылает сообщение» листу  бумаги — в результате мы видим  текст (посыл сообщения от листа  к писателю).

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

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

Все объекты одного типа могут получать одинаковые сообщения. К примеру  у нас есть 2 объекта: синяя и  красная кружки. Обе разные по форме  и материалу. Но из обеих мы можем  пить (или не пить, если они пустые). В данном случае кружка — это  тип объекта.

Самое лаконичное описание объекта предложил  Буч: «Объект обладает состоянием, поведением и индивидуальностью».

 

3.1 Контроль во время компиляции и во время выполнения

 

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

C++, Java, Python, и Object Pascal предпочитают более  или менее тщательный контроль  типов во время компиляции. С++, возможно, наименее точен в этом  отношении (на что указывает,  к примеру, возможность присвоения double к float), тогда как Java использует  проверку типов наиболее широко. Это оттого, что C++ обеспечивает  совместимость с Си, который не  очень строго проверяет типы  во время компиляции. Например, C и C++ считают, что все арифметические  типы совместимы (хотя присвоение float целой переменной вызовет  предупреждение компилятора). В Object Pascal и Java логическое значение  не целое, а символ - еще один  отличный и несовместимый тип.

Тот факт, что виртуальная машина Java интерпретирует байтовый код во время  выполнения, не означает, что этот язык отказывается от проверки типов во время компиляции. Наоборот, в этом языке проверка наиболее тщательна. Другие ОО языки, такие как Smalltalk и CLOS, наоборот, склонны большинство проверок типов (если не все) осуществлять во время  исполнения.

 

3.2 Чисто объектно-ориентированные и гибридные языки

 

Различаются чистые и гибридные объектно-ориентированные  языки. Чистые — это те, которые  позволяют использовать только одну модель программирования — объектно-ориентированную. Вы можете объявлять классы и методы, но не можете завести глобальные переменные и обычные функции и процедуры  старого типа.

Среди трех наших языков, только Java и C являются чистыми ОО языками (как Eiffel и Smalltalk). На первый взгляд это кажется положительной  идеей. Однако она ведет к тому, что вы используете кучу статических  методов и статических данных, что не так уж отличается от использования  глобальных функций и данных, за исключением более сложного синтаксиса. Чистые ОО языки дают преимущество новичкам в ООП, потому что программист вынужден использовать (и учить) модель ООП. C++ и Object Pascal, наоборот, - типичные примеры гибридных языков, которые позволяют программистам использовать при необходимости традиционный подход C или Pascal.

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

 

3.3 Простая объектная модель и ссылочно-объектная модель

 

Третий  элемент, по которому различаются языки  ООП - их объектная модель. Некоторые  традиционные языки ООП позволяют  программистам создавать объекты  в стеке, в куче (в хипе - heap) или  в статической памяти. В этих языках переменная типа класс соответствует  объекту в памяти. Так работает C++.

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

 

3.4 Классы, объекты и ссылки

 

Класс - это тип данных, а объект - экземпляр  типа класс.

C++: если у нас есть класс MyClass с методом MyMethod, мы можем написать:

MyClass Obj;

Obj.MyMethod();

и получить объект класса MyClass с именем Obj. Память для этого объекта обычно выделяется в стеке, и вы можете сразу  начать использовать объект, как это  сделано во второй строке.

Java: подобная инструкция выделяет только место для хэндла объекта, а не для самого объекта:

MyClass Obj;

Obj = new MyClass();

Obj.MyMethod();

Прежде  чем использовать объект, вы должны вызвать "new" для выделения под  него памяти. Конечно, вы можете объявить и проинициализировать объект в  одном предложении, избегая использования  неинициализированных объектных хэндлов:

MyClass Obj = new MyClass();

Obj.MyMethod();

Object Pascal: использует подобный подход, но (к сожалению) требует отдельных предложений для объявления и инициализации:

var

Obj: MyClass;

begin

Obj := MyClass.Create;

Obj.MyMethod;

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

Информация о работе Объектно-ориентированное программирование