Практикум для изучения дисциплины «Основы программирования»



Pdf көрінісі
бет71/81
Дата08.07.2020
өлшемі1,55 Mb.
#74978
түріПрактикум
1   ...   67   68   69   70   71   72   73   74   ...   81
Байланысты:
А.А. Тюгашев

ЗАМЕЧАНИЕ 
Существуют и бесклассовые объектно-ориентированные языки, например Self, 
Lua. 
ООП является довольно молодой областью исследований. В связи с этим в 


143 
 
ней  до  сих  пор  не  существует  общепринятой  терминологии.  Существует 
целый  набор  синонимов,  означающих  одно  и  то  же  и  характерных, 
например,  для  программистов  на  С++  или  Java.  Читателю  предлагается 
запомнить,  что  класс  и  тип;  родительский  класс,  базовый  класс  и 
суперкласс;  функция-член,  метод  класса  и  сообщение;  переменная-член
свойство и атрибутподклассунаследованный класснаследуемый класс
дочерний (сыновний) класс — суть одно и то же. 
Весьма важно выделить именно значимые и отличающие данный класс от 
других  наборы  свойств  объекта.  Этот  процесс  называется  абстракцией
Абстракция, или абстрагирование, лежит в основе ООП. 
Из  книги  в  книгу  кочует  утверждение,  что  базовыми  принципами,  тремя 
китами, на которых покоится ООП, являются инкапсуляциянаследование и 
полиморфизм, которые будут рассмотрены далее. Однако с этим не вполне 
можно  согласиться.  Нам  представляется,  что  наряду  с  абстракцией 
важнейшим  принципом  ООП  является  интеграция  данных  и  функций 
обработки этих данных, или придание им «активности». 
Если  традиционно  программист  должен  был  описать,  с  одной  стороны, 
набор пассивных структур данных, подлежащих обработке, а с другой — 
набор функций для обработки этих данных (причем эти определения были 
в некотором смысле ортогональны, или независимы — вплоть до хранения 
в  разных  модулях  программы),  то  в  ООП  все  иначе.  Определяя  класс, 
программист  должен  сразу  задать  методы  обработки  объектов  этого 
класса —  внутри  него.  На  самом  деле  данный  подход  был  разработан  в 
рамках концепции абстрактного типа данных, предшествовавшей ООП. 
В языках программирования существует набор встроенных базовых типов 
данных — целое число, логический тип, символ и т. д. Что произойдет при 
попытке  применить,  например,  умножение  к  строкам?  Или  операцию 
взятия остатка от деления — к числам с плавающей точкой? Как правило, 
ошибка, причем в зависимости от того, относится язык программирования 
к  языкам  со  строгой  статической  или  с  нестрогой  динамической 
типизацией,  или  на  этапе  компиляции,  или,  что  хуже,  ошибка  времени 
выполнения  с  выдачей  в  процессе  исполнения  программы  системного 
сообщения и аварийным остановом. 
Концепция  абстрактных  типов  данных  позволяет  избежать  подобных 
коллизий. Предписывается четко задавать набор операций, применимых к 
каждому типу данных. Возможность конструирования (добавления в язык) 
новых  типов  появилась  еще  в  Паскале  и  Си.  Довольно  широкие 
возможности  подобного  вида были  введены  в  языки  Ада  83,  Модула-2 и 
Модула-3. Однако до своего логического завершения она была доведена в 
Клу  (Clu,  название  происходит  от  слова  «кластер» —  cluster,  которым  в 
нем  обозначался  абстрактный  тип  данных),  созданном  в  1974  году 


144 
 
Барбарой Лисков в МИТ. 


Достарыңызбен бөлісу:
1   ...   67   68   69   70   71   72   73   74   ...   81




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет