Привет, %username%.
Были времена, когда я преподавал курс ООП в вузе. На каждую лекцию старался писать план или конспект. В основном оно всё было достаточно кратко и не представляет какого-либо интереса. Наиболее подробно прорабатывал вводное занятие
"Лекция 1. Объекты и типы". Цель лекции объяснить студентам, знающим только функциональное программирование (да и то не все), что такое объекты, классы, абстракции.
Не стоит этот материал рассматривать как законченную лекцию, это просто тезисы, кое-где с примерами. Каждый пункт - это просто повод для разговора с аудиторией.
Итак, далее тезисы для лекции 1: "Объекты и типы"
Лекция 1. Объекты и их типы
Объекты реального мира
Объектно-ориентированное программирование (ООП) - это парадигма программирования, которая в настоящее время стала стандартом разработки программного обеспечения.Что же это за объекты и почему мы должны на них ориентироваться?
Прежде всего стоит ответить себе на вопрос:
- что мы понимаем под объектами реального мира?
- То есть - что есть объект?
Рассмотрим на примерах:
Пример 1: Объект - это стул, стол, а так же любая другая вещь.
Пример 2: А философия является объектом? Вообще, да. Потому что о ней можно говорить, она имеет четкое определение и характеристики.
Пример 3: Цифра - это объект? ДА. 1 бит - это тоже объект!
Пример 4: Представим себе голодного студента. Студент - это объект? ДА!
А о чем он думает?
О том, чтобы поесть. Заметьте, он думает не об объекте еде, а об действии над этим объектом. О нем можно думать, говорить, оно может иметь конкретные характеристики. Можно сказать ел ложкой, или ел вилкой, или вообще пил чай.
Объект - это: предмет материального или не материального мира, а так же действие над другими объектами. Другими словами:
ВСЁ ЕСТЬ ОБЪЕКТ!
Модели в программах
Из математики или физики мы знаем о существовании математических или физических моделей. Их цель описать процессы реального мира, чтобы решить какую-нибудь задачу.Любая модель обладает следующими свойствами:
- она упрощенное представление реального мира
- она направленна на решение конкретного круга задач
- точность представления зависит от решаемой задачи
Так или иначе, каждая программа содержит внутри себя модель реального мира, которая сочетает в себе свойства математических и физических моделей.
Глобальная цель любой программы - упрощение жизни пользователя, автоматизация.
Задача языка программирования - предоставить средство для качественного описания модели программы.
Важный вывод: у каждой модели могут быть разные уровни детализации
Типы объектов
Например, необходимо описать группу объектов. Пусть это будут геометрические фигуры. Описание может иметь следующий вид - фигура 1, фигура 2, фигура 3, … фигура 1000.Получается достаточно трудоемкая задача. Объектов может быть много, некоторые однотипны, некоторые различны. Можно условно объединить однотипные объекты в группы, для их описания.
Например, 10 кругов различного радиуса, 5 квадратов, 985 многоугольников.
Такое описание гораздо компактней, сразу понятно что это и что с этим можно сделать.
Так рождается понятие типа объекта(класса).
Класс(тип объекта) - это описание характеристик группы объектов.
Далее мы будем о классе, но будем подразумевать, что можно есть и объект(объекты) этого класса, и наоборот, говорить об объекте(объектах), но описывая их, фактически описывать класс.
Красивое сравнение: класс - это чертеж, объект класса - это реальный объект, созданный по чертежам.
Состояние объекта
Вернемся к примеру с голодным студентом. После того как он поест, он перестает быть голодным, он уже сытый студент. Отметим, что объект студент - тот же. Но в разные моменты времени - у него было различное поведение.- Голодный студент - нервный и раздражительный
- Сытый студент - добрый и сонный
Таким образом, в разных состояниях один и тот же объект может вести себя по разному.
Другой пример, объект ручка.
- Состояние 1. Новая ручка со стержнем. Пишет хорошо и тонко
- Состояние 2. Ручка исписанная на половину. Шарик разболтался и в результате ручка пишет, но “мажет” чернилами
- Состояние 3. Стерженть ручки кончился. Ручка уже не пишет, но это всё таже ручка.
Из этого стоит сделать важный вывод:
каждый объект может иметь внутренне состояние и совершать действия, которые зависят от его состояния.
Абстракции в разработке ПО
Любая программа - это абстракция!программа на ассемблере - абстракция на команды процессора
программа на Си - абстракция на циклы, условия, переменные
программа на ООП-языке - набор абстракций, описывающих реальную задачу.
Основные инструменты языка - классы и объекты.
Почему популярно? Вся красота в ЛЕГО!
Во многом, написание этих тезисов меня вдохновили первые главы книги Б Эккель Философия Java (Thinking in Java). Там понятию ООП уделяется несколько первых глав. Вместо того, чтобы читать мою писанину, советую почитать эту книжку.
Комментариев нет:
Отправить комментарий