OBJECTS (Методичка С++)

2013-09-07СтудИзба

Описание файла

Файл "OBJECTS" внутри архива находится в папке "METODY". Документ из архива "Методичка С++", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика" в общих файлах.

Онлайн просмотр документа "OBJECTS"

Текст из документа "OBJECTS"

28


Московский государственный технический университет им. Н.Э. Баумана

Г. С. Иванова, Т.Н. Ничушкина, Е.К. Пугачев

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В СРЕДЕ BORLAND PASCAL 7.0

Учебное пособие

по курсу “Алгоритмические языки и программирование”

Под редакцией Г.С. Ивановой

МОСКВА 1997

Аннотация.

Учебное пособие предназначено для студентов 1 курса кафедры ИУ6, изучающих программирование в среде Borland Pascal 7.0.

Предлагаемый материал разбит на две части.

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

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

Введение.

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

Попытаемся дать определения указанным понятиям.

Абстракция - использование обобщенных представлений данных и процедурных частей программы. До появления концепции ООП языки программирования, как правило, поддерживали невысокий уровень абстракции (на уровне описания простейших абстрактных структур данных, таких как массив или запись, и использования подпрограмм в качестве абстрактных операций, которые использовались при разработке программ). Уровень абстракции современных языков программирования существенно вырос. В частности Borland Pascal (начиная с версии 5.5) и С++ позволяют создавать сложнейшие структуры данных и практически полностью абстрагироваться от деталей их реализации, оперируя с ними как некоторыми объектами, правила поведения которых также описаны внутри структуры.

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

Наследование - создание более сложных объектов из более простых посредством добавления параметров и определения новых свойств, что позволяет повторно не определять уже описанные параметры и свойства объектов, которые новый объект “наследует”.

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

Язык Borland Pascal поддерживает эти свойства наряду со средствами процедурного, структурного и модульного программирования, которыми обладали предыдущие версии языка.

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

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

1Средства объектно-ориентированного программирования.

1.1. Определение объекта. Компоненты: поля и методы.

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

Type

<имя объектного типа> = Object

<описание полей объекта>

<заголовки методов объекта>

end;

Например:

Type TRoom=Object

length,wight:real;

Function Square:real;

end;

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

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

Например:

Function TRoom.Square;

Begin Square:=length*wight; end;

1.2. Определение экземпляров объектов. Операция присваивания над объектами. Обращение к компонентам объекта из программы и методов. Неявный параметр Self.

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

Например:

Var A,B:TRoom; {экземпляры объекта}

pS:^TRoom; { указатель на объект}

C:array[1..10] of TRoom; { массив объектов}

Для экземпляров одного объекта разрешена операция присваивания, при этом выполняется копирование полей одного экземпляра объекта в другой, например: a:=b; {поля a копируются в b}

Доступ к полям и методам объектов из программы осуществляется с указанием конкретного экземпляра объекта, для чего используется точечная нотация или оператор with(аналогично доступу к полям записей). Например:

а) Ss:=A.Square; {вызов функции-метода объекта TRoom}

б) ReadLn(A.length); {обращение к полю объекта}

в) with A do begin ReadLn(length); Ss:=Square; end; { использование оператора with }

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

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

Self.length Self.wight

В некоторых случаях параметр Self используется внутри методов явно.

Пример 1. Использование параметра Self.

{ Программа определения части адреса - смещения экземпляра объекта в памяти}

Program ex;

Type TRoom=Object

length:real;

wight:real;

Function getAddr:Word;

end;

Function TRoom.getAddr;

Begin

getAddr:=ofs(Self); {в данном случае без Self обойтись нельзя}

end;

Var a:Troom;

Begin writeln('Смещение = ',a.getAddr); end.

1.3. Инициализация полей объектов.

Для записи исходной информации в поля объекта можно использовать три способа:

а) занести необходимую информацию, используя оператор присваивания в основной программе;

б) написать специальную подпрограмму (метод), которая будет инициализировать поля объекта;

с) использовать типизированные константы.

Продемонстрируем вышесказанное на примере.

Пример 2. Доступ к полям данных из основной программы.

{ Программа определения суммарной площади заданных комнат. Вариант 1.}

Program ex;

Type TRoom=Object

length, wight:real;

function square:real;

end;

function TRoom.square:real;

begin

square:=length*wight;

end;

Var l,w,s:real;

n,i:integer;

rooms:array[1..10] of TRoom;

Begin

writeln('Введите количество комнат не более 10:');

readln(n);

s:=0;

for i:=1 to n do

Begin writeln('Введите параметры ',i,'-ой комнаты:');

readln(l,w);

rooms[i].length:=l; {присвоение значения полю объекта}

rooms[i].wight:=w; {присвоение значения полю объекта}

s:=s+rooms[i].square;

end;

writeln('Площадь=',s:8:2);

end.

Пример 3. Инициализация полей объекта специальным методом.

{ Программа определения суммарной площади заданных комнат. Вариант 2.}

program ex;

Type TRoom=Object

length:real;

wight:real;

function square:real;

procedure Create(l,w:real);

end;

function TRoom.square:real;

begin

square:=length*wight;

end;

procedure TRoom.Create;{метод, инициализирующий поля объекта}

begin length:=l;

wight:=w;

end;

Var l,w,s:real;

n,i:integer;

rooms:array[1..10] of TRoom;

Begin

writeln('Введите количество комнат не более 10:');

readln(n);

s:=0;

for i:=1 to n do

Begin writeln('Введите параметры ',i,'-ой комнаты:');

readln(l,w);

rooms[i].Create(l,w); {вызов метода}

s:=s+rooms[i].square;

end;

writeln('Площадь=',s:8:2);

end.

Пример 4. Использование типизированных констант (аналог записи) для инициализации полей объекта.

{ Программа определения суммарной площади заданных комнат. Вариант 3.}

program ex;

Type TRoom=Object

length:real;

wight:real;

function square:real;

end;

function TRoom.square:real;

begin

square:=length*wight;

end;

Var l,w,s:real;

n,i:integer;

Const rooms:array[1..3] of TRoom=((length:2.5;wight:3.2),

(length:4.15;wight:2.2),

(length:3.1;wight:3.6));

Begin

s:=0;

for i:=1 to 3 do

begin s:=s+rooms[i].square; end;

writeln('Площадь=',s:8:2);

end.

1.4. Наследование.

Любой объект м.б. объявлен потомком ранее описанного объекта. В этом случае он наследует все поля и методы объекта-родителя и может дополнять их своими полями и методами.

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

Определение объекта-потомка выполняется следующим образом:

Type <имя объекта-потомка>=Object(<имя объекта-родителя>)

<дополнительные поля данных>

<дополнительные методы>

end;

Например:

Type TName=Object {объект-родитель}

family,name:string[22];

procedure Print;

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее