Опубликован: 22.12.2005 | Доступ: свободный | Студентов: 16667 / 511 | Оценка: 4.18 / 3.71 | Длительность: 16:16:00
ISBN: 978-5-9556-0109-0
Лекция 4:

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

Аннотация: Язык Python имеет достаточно мощную, но, вместе с тем, самобытную поддержку объектно-ориентированного программирования. В этой лекции ООП представляется без лишних формальностей. Работа с Python убеждает, что писать программы в объектно-ориентированном стиле не только просто, но и приятно.
Ключевые слова: python, язык программирования, ПО, объектно-ориентированное проектирование, процедурное программирование, программа, предметной области, объект, атрибут, класс, ООП, анализ предметной области, декомпозиция, быстродействие, память, список, функция, модуль, встроенный объект, целое число, запись, операции, встроенные типы данных, интерпретатор, определение, конструктор, связанный объект , формальный аргумент, методология программирования, encapsulation, слово, сокрытие информации, public, интерфейс, полиморфизм, переопределение метода, фактический аргумент, иерархия наследования, аргумент, индекс, семантика, истинностное значение, суперкласс, multiple inheritance, надкласс, представление дерева, descriptor, CLS, natural language, метод экземпляра, метакласс, класс эквивалентности, pickling, отладочные операторы, сериализация, механизмы, dump, HTTP, SOAP, объектно-ориентированный подход, моделирование, тип объекта, тип данных, представление, инкапсуляция, наследование, устойчивость, Object, Persistence

Python проектировался как объектно-ориентированный язык программирования. Это означает (по Алану Кэю, автору объектно-ориентированного языка Smalltalk), что он построен с учетом следующих принципов:

  1. Все данные в нем представляются объектами.
  2. Программу можно составить как набор взаимодействующих объектов, посылающих друг другу сообщения.
  3. Каждый объект имеет собственную часть памяти и может состоять из других объектов.
  4. Каждый объект имеет тип.
  5. Все объекты одного типа могут принимать одни и те же сообщения (и выполнять одни и те же действия).

Примечание:

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

Примечание:

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

Основные понятия

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

При объектно-ориентированном программировании программа строится как совокупность взаимодействующих объектов.

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

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

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

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

В языке Python для определения класса используется оператор class:

class имя_класса(класс1, класс2, ...):
  # определения методов

Класс определяет тип объекта, то есть его возможные состояния и набор операций.

Андрей Егоров
Андрей Егоров

def bin(n):

"""Цифры двоичного представления натурального числа """

if n == 0:

   return []

n, d = divmod(n, 2)

return bin(n) + [d]

print bin(69)

Что значит здесь return[] ? Возвращает список? Непонятно какой список? Откуда он? 

 

 

Асмик Гаряка
Асмик Гаряка

Почему при вычислении рейтинга не учитывается уровень, как описано? Для всех курсов У=1, хотя для Специалист должно быть 2.

Игорь Горчаков
Игорь Горчаков
Россия, г. Москва