Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Интерпретатор языкаPythonвсегда может сказать,к какому типу относится объект.ОднакоСодержание книги
Поиск на нашем сайте # определения методов
Класс определяет тип объекта,то есть его возможные состояния и набор операций.
Абстракция и декомпозиция
Абстракция в ООП позволяет составить из данных и алгоритмов обработки этих данных объекты,отвлекаясь от несущественных(на некотором уровне)с точки зрения составленной информационной модели деталей.Таким образом,программа подвергается декомпозиции на части"дозированной"сложности.Отдельный объект,даже вместе с совокупностью его связей с другими объектами,человеком воспринимается легче(именно так он привык оперировать в реальном мире),чем что-то неструктурированное и монотонное.
Перед тем как начать написание даже самой простенькой объектно-ориентированной программы,необходимо провести анализ предметной области,для того чтобы выявить в ней классы объектов.
При выделении объектов необходимо абстрагироваться(отвлечься)от большинства присущих им свойств и сконцентрироваться на свойствах,значимых для задачи..
Выделяемые объекты необязательно должны походить на физические объекты-ведь это абстракции,за которыми скрываются процессы,взаимодействия,отношения.
Удачная декомпозиция стоит многого.От нее зависят не только количественные характеристики кода(быстродействие,занимаемая память),но и трудоемкость дальнейшего развития и сопровождения.При отсутствии соответствующего опыта лучше не загадывать будущих путей развития программы,а делать ее как можно проще,под конкретную задачу.
Даже если просто перечислить все существительные,встретившиеся в описании задачи(явно или неявно), получится неплохой список кандидатов в классы.
При процедурном подходе тоже используется декомпозиция,но при объектно-
ориентированном подходе производится декомпозиция не самого алгоритма на более мелкие части,а предметной области на классы объектов.
Объекты
До этой лекции объектыPythonвстречались много раз:ведь каждое число,строка,функция,модуль и т.п. -это объекты.Некоторые встроенные объекты имеют вPythonсинтаксическую поддержку(для задания литералов).Таковы числа,строки,списки,кортежи и некоторые другие типы.
Теперь следует посмотреть на них в свете только что приведенных определений.Пример:
a = 3 b = 4.0
c = a + b
Здесь происходит следующее.Сначала имя"a"связывается в локальном пространстве имен с объектом-числом3 (целое число).Затем"b"связывается с объектом-числом4.0 (число с плавающей точкой).После этого над объектами3и4.0выполняется операция сложения,и имя"c"связывается с получившимся объектом.Кстати,операциями,в основном,будут называться методы,которые имеют вPythonсинтаксическую поддержку,в данном случае-инфиксную запись.То же самое можно записать как:
c = a.__add__(b)
Здесь __add__()-метод объекта a,который реализует операцию + между этим объектом и другим объектом.
Узнать набор методов некоторого объекта можно с помощью встроенной функции dir():
>>> dir(a)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__',
'__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']
Здесь стоит указать на еще одну особенностьPython.Не только инфиксные операции,но и встроенные функции ожидают наличия некоторых методов у объекта.Например,можно записать:
abs(c)
А функция abs() на самом деле использует метод переданного ей объекта:
c.__abs__()
Объекты появляются в результате вызова функций-фабрик или конструкторов классов(об этом ниже),а заканчивают свое существование при удалении последней ссылки на объект.Оператор del удаляет имя(а значит,и одну ссылку на объект)из пространства имен:
a = 1
# ... del a # имени a больше нет
Типы и классы
Тип определяет область допустимых значений объекта и набор операций над ним.В ООП тип тесно связан с поведением-действиями объекта,состоящими в изменении внутреннего состояния и вызовами методов других объектов.
Ранее в языкеPythonвстроенные типы данных не являлись экземплярами класса,поэтому считалось,что это были просто объекты определенного типа.Теперь ситуация изменилась,и объекты встроенных типов имеют классы,к которым они принадлежат.Таким образом,тип и класс вPythonстановятся синонимами.
с точки зрения применимости объекта в операции его принадлежность к классу не играет решающей роли:гораздо важнее,какие методы поддерживает объект.
Примечание:
|
||
|
Последнее изменение этой страницы: 2024-06-27; просмотров: 60; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.007 с.) |