Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 53

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 53 страницаОсновы программирования (947332) страница 532013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 53)

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

Например, интерфейсные классы уже реализо­ваны, а структура классов предметной области еще только уточняется. Обыч­но проектирование начинается, когда какой-либо фрагмент предметной обла­сти достаточно полно описан в процессе анализа.31310. КЛАССЫ И ОБЪЕКТЫ В BORLAND PASCALОбъектная модель, реализованная в Borland Pascal, по современным меркам явля­ется упрощенной, но она позволяет изучить основные приемы объектно-ориентирован­ного программирования и оценить его достоинства и недостатки.В настоящей главе рассмотрены средства, используемые для объявления классов иобъектов, и принципы создания «универсальных» классов.ЮЛ.

Объявление класса. Поля и методыС точки зрения синтаксиса класс представляет собой структурный типданных, в котором помимо полей разрешается описывать прототипы (заго­ловки) процедур и функций, работающих с этими полями данных. По формеописание класса напоминает запись.Как уже упоминалось ранее, процедуры и функции, заголовки которыхописаны в классе, получили иазваиио методов.Описание типа класс выполняется следующим образом:Туре <имя класса> = object<описание полей класса><прототипы методов>end;...Тела методов класса описываются после объявления класса.

Причем взаголовке метода можно не повторять списка параметров, но перед именемметода необходимо указать имя класса, отделив его от имени метода точкой:Procedure <имя класса>.<имя метода>;<локальные ресурсы процедуры>Begin<тело процедуры>End;...или31410.

Классы и объекты в Borland PascalПлощадь?КомнатаaTRoomlength, widthSquare()бРис. 10.1. Объект Комната {а) и реапизующий класс (б)Function <имя класса>. <имя метода>;<;покальные ресурсы функции>Begin<тело процедуры>End;...Пример 10.1.

Разработать класс для реализации объекта Комната, кото­рый должен хранить длину и ширину комнаты и отвечать на запрос о площа­ди комнаты (рис. 10.1, а).Объект Комната характеризуется двумя параметрами: длиной и шири­ной, значит соответствующий класс должен включать два поля, в которыхэти значения будут храниться (рис.

10.1, б). Единственное сообщение, на ко­торое должен реагировать объект, - запрос о площади комнаты, следователь­но, класс должен включать метод-функцию, которая должна возвращать зна­чение площади комнаты.Туре TRoom = objectlength, width:real;{попя: длина и ширина комнаты}function Square .real; {метод определения площади}end;Function TRoom.Square; {тело метода определения площади}BeginSquare:= length"^ width;End;...Поскольку поля и методы описаны в одном классе, все поля класса до­ступны методам класса без дополнительного указания.Физически это реализуется следующим образом. Каждая переменная объект данного класса - при объявлении получает свой набор полей класса.Эти поля собраны в запись, внешнее имя которой совпадает с именем объек­та.

Любой метод класса, вызванный для конкретного объекта, неявно получа­ет специальный параметр Self значением которого является адрес записи,объединяющей все поля этого объекта. Этот параметр иногда называют обоб­щенным внутренним именем объекта. Реально обращение к полям конкрет­ного объекта происходит через это обобщенное имя:315Часть 2. Объектно-ориентированное программированиеFunction TRoom.Square; {тело метода определения площади}BeginSquare: = Self, length * Self, width;End;...При необходимости имя Self можно указывать явно, например @Selfадрес записи, содержащей поля объекта (естественно, такое обращение воз­можно только из методов, вызываемых для конкретного объекта, так как внеобъекта это имя не определено).10.2. Объявление объекта.

Инициализация полейОписав класс, мы можем объявить любое количество объектов этогокласса, причем можно объявить отдельные объекты, массивы объектов и ука­затели на объекты данного класса.Например:Var A.'TRoom;{объект А класса TRoom}B:array[1..5] of TRoom; {массив объектов типа TRoom}Type pTRoom=^TRoom; {тип указателя на объекты класса TRoom}Var рС: pTRoom;{указатель на объекты класса TRoom}Как и для любой другой динамической переменной, для динамическогообъекта необходимо выделить память, а после его использования -- освобо­дить память.Выделение памяти осуществляют процедурой New или функцией New.Например:New(pC);илиpC:=New(pTRoom);...Для освобождения памяти используют процедуру Dispose.

Например:Dispose(рС);...Работа с динамическими объектами классов, построенных с использова­нием наследования со сложным полиморфизмом, имеет свои особенности, имы вернемся к их рассмотрению в параграфе 11.7.Обращение к полям и методам объекта. Обращение к полям и мето­дам объекта выполняется так же, как к полям записей:• с использованием точечной нотации:<имя объекта>.<имя поля> или <имя объекта>.<имя метода>;• с использованием оператора with:31610.

Классы и объекты в Borland Pascalwith <имя объекта> dobegin...<имя поля>......<имя метода>...end; ...Например:а) v:=A. length;б) s:= A.Square;в) s:=s+В[i],Square;T)pC4ength:=3;...Инициализация полей объекта. Поля объекта должны инициализиро­ваться. Инициализация полей объекта может осуществляться тремя способа­ми:• прямым занесением в поле, например:Program ex;Type TRoom = objectlength, width:real;{поля: длина и ширина комнаты}function Square;real;{мотод определения площади}end;Function TRoom.Square; {тело метода определения площади}BeginSquare:^ length"^ width;End;Var A:TRoom; {объявляем объект-переменную}BeginAJength:-3.5;{инициализируем поля объекта}У4. width:-5J;1¥гИе1п(*Площадъ комнаты равна \A.Square);End• с использованием типизированных констант - синтаксис описаниясовпадает с синтаксисом типизированных констант типа «запись»:Program ex;Type TRoom = objectlength, width:real;{nonH: длина и ширина комнаты}function Square;real;{MQTOJX определения площади}end;317Часть 2.

Объектно-ориентированное программированиеFunction TRoom.Square; {тело метода определения площади}BeginSquare:^ length"^ width;End;ConstA:TRoom = (length:3.5; width:5.1); {объявляем константу}BeginWriteLn('Площадь комнаты равна \A.Square);End• посредством специального метода - очень часто в качестве такого ме­тода используют специальную инициализирующую процедуру, которую ре­комендуется называть Init:Program ex;Type TRoom = objectlength, width.real;{пояя: длина и ширина комнаты}function Square:real;{MQTOJX определения площади}procedure //i//(7,H';/'^aO;{инициализирующий метод}end;{метод определения площади}Function TRoom.Square;BeginSquare: = length* width;End;{инициализирующий метод}Procedure TRoontlnit;Beginlength:=l; width:-w;End;Var A:TRoom; {объявляем объект-переменную}{основная программа}BeginAJnit(3.5y5.1); {инициализируем поля объекта}WriteLn('Площадь комнаты равна \A.Square);End,Операция присваивания объектов.

Над объектами одного класса оп­ределена операция присваивания. Физически при этом происходит копирова­ние полей одного объекта в другой методом «поле за полем»:Const A:TRoom=(length:3.7;:5,2);Var B:TRoom;..,В:=А; {теперь B.length=3.7, а B.width=5.2}31810. Классы и объекты в Borland PascalСуществуют некоторые особенности выполнения операции присваива­ния для объектов родственных классов и полиморфных объектов. Они опи­саны в параграфах 11.1 и 11.5.10.3. Библиотеки классов. Ограничение доступак полям и методамОдним из достоинств ООП является возможность создания библиотекклассов, на базе которых затем конструируют классы для реализации объек­тов реальной задачи.

Библиотечные классы при этом описывают в интер­фейсной части модуля, а тела методов - в разделе реализации.Например:Unit Room;InterfaceType TRoom = objectlength, width:real; {поля: длина и ширина комнаты}function Square:real; {метод определения площади}procedure /w/Y(7,w.Te(2/j;{инициализирующий метод}end;ImplementationFunction TRoom.Square; {метод определения площади}BeginSquare:= length"^ width;End;Procedure TRoom.Init;{инициализирующий метод}Beginlength: =1;width: =w;End;End.В этом случае основная программа будет подключать соответствующиймодуль и работать с классом, его полями и методами, как с рес> рсами библи­отеки:Program ex;Uses /loom;{подключаем модуль с описанием класса TRoom}Var A:TRoom; {объявляем объект-переменную}BeginAJnit(3.5y5.1); {инициализируем поля объекта}WriteLnCКомната: длина= ', AJength,V ширииа= \ A.width);319Часть 2. Объектно-ориентированное программированиеWriteLnCПлощадь комнаты = \A.Square);End.В Borland Pascal можно ограничить доступ к полям и методам класса впределах модуля.

Для этого описание класса делится на специальные секции:public-секция, содержащая описание общих или общедоступных полейи методов класса;private - секция, содержащая описание внутренних или скрытых полейи методов класса.В описании класса эти секции могут чередоваться, причем, если секциикомпонент не указаны, то по умолчанию принимается, что эти компонентыдоступны как общие:Unit <имя модуля>;InterfaceТуре <имя класса>= object<описание общих полей и методов>private<описание внутренних полей и методов>public<описание общих полей и методов>private<описание внутренних полей и методов>end;...Например, в нашем случае, если объекты класса TRoom используютсятолько для получения информации о площади комнаты, то можно поля опи­сать в секции private, но тогда доступ к этим полям из программы станет не­возможным:Unit RoomHiden;InterfaceType TRoom = objectprivate {скрытые компоненты класса}length, width:real; {поля: длина и ширина комнаты}public{общие компоненты класса}function Square.real;{метод определения площади}procedure Init(l,w:real);{инициализирующий метод}end;ImplementationFunction TRoom.Square; {метод определения площади}BeginSquare:= length"^ width;End;32010, Классы и объекты в Borland PascalProcedure TRoomJnit;{инициализирующий метод}Beginlength: =1; width: =w;End;End.Сокрытие некоторых полей и методов класса упрощает интерфейс клас­са, т.

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

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

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