НОЧУ ДПО "Национальный открытый университет "ИНТУИТ"
Опубликован: 24.01.2021 | Доступ: свободный | Студентов: 1229 / 21 | Длительность: 03:57:00
Лекция 21:

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

< Лекция 1 || Лекция 21: 123

Проектирование класса. Поля и конструктор

Смотреть на youtube

Проект для лекции Lecture8.rar.

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

Не менее важна и вторая роль класса. Будучи типом данных, класс описывает некоторое множество элементов, задавая их свойства и поведение. Элементы этого множества принято называть объектами. Тип данных, определяемый классом, может быть моделью реального типа данных некоторой проблемной области, для решения задач которой и создается программный проект. Но класс может задавать некоторый абстрактный тип данных, проектируемый программистом в интересах эффективной реализации алгоритмов проекта. Важно, что такой класс обладает определенной семантикой. Обычно имена классов дают подсказку о семантике класса: Person, Student, Car, Engine.

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

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

Язык Python, поддерживая наряду с другими стилями программирования и стиль ООП, позволяет создавать классы и модули, придавая этим понятиям специфику, характерную для этого языка.

Модули и классы в Python

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

Мы знаем, - что модуль может содержать данные, методы и выполняемый код, представляющий по сути метод main, с которого начинается работа проекта, если модуль назначается главным модулем проекта. На данные и методы формально никакие ограничения не накладываются. В этом случае модуль играет одну роль - архитектурную роль, являясь той строительной единицей из сочетания которых строится проект. Фактически, модуль всегда играет и вторую роль - семантическую. Модуль math предоставляет математические сервисы, модуль os - сервисы, связанные с операционной системой, random - дает возможность генерировать случайные числа. Даже для самых простых проектов рекомендуется создавать как минимум два модуля: один отвечает за интерфейс с пользователем, другой - предоставляет сервисы бизнес-логики, позволяя решать поставленную задачу. Так что в реальном хорошем программировании модули всегда играют не только архитектурную, но и семантическую роль. Но семантика семантике рознь. Вышеупомянутые модули: math, os, random - это сервисные модули. Они предоставляют сервисы, доступные при импортировании другим модулям. Однако зачастую требуется семантика другого рода - модуль должен описывать некоторое множество объектов - их свойства и поведение. Модули, которые реализуют такую семантику, являются классами. Класс - это модуль, задающий тип данных. Экземпляры этого типа называются объектами. Встроенные типы данных - числа, строки, списки, множества - задаются модулями, представляющими классы. Но, конечно же, моделируя конкретную проблемную область, программист создает собственные классы, определяющие типы данных, характерные для этой проблемной области.

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

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

< Лекция 1 || Лекция 21: 123
Елена Лаптева
Елена Лаптева

Думаю. что не смогу его закончить. Хотелось предупредить других - не тратьте зря время, ищите другой курс.

Михаил Сидоров
Михаил Сидоров

Если S - последовательность, то срез задается как S(i : j) и содержит j - i элементов,

а в примере используютс другие скобки - 

NL[1:3] = ["решили", "не", "искать"]

или это не срез, тогда, что это?