Принципы объектно-ориентированного программирования
В данной статье рассматривается новый объектно-ориентированный язык программирования Crystal, анализируются его возможности и показывается, что он позволяет создавать современное эффективное программное обеспечение. Но сначала немного истории — вспомним основные принципы объектно-ориентированного программирования вообще.
Объектно-ориентированное программирование ( ООП ) — это парадигма программирования, основанная на концепции «объектов», которые могут содержать данные и код: данные в форме полей, часто называемые атрибутами или свойствами, и код в форме процедур, как правило, называемые методами. Любой современный объектно-ориентированный язык программирования позволяет создавать современное высокопроизводительное эффективное программное обеспечение.
Объектно-ориентированный язык программирования базируется на понятии «класс», который представляет собой пользовательский тип данных или шаблон для создания объектов – экземпляров класса. Тогда программа представляет собой совокупность взаимодействующих объектов.
Что такое класс. Что такое объект класса. Экземпляр класса это. Класс ООП это. Урок #73
Язык программирования называется объектно-ориентированным, если в нем реализованы следующие принципы:
- инкапсуляции;
- наследования;
- полиморфизма.
Напомним эти определения.
Инкапсуляция – это концепция объектно-ориентированного программирования, которая связывает воедино данные и функции(методы), которые манипулируют данными, и защищает их как от внешнего вмешательства, так и от неправильного использования(сокрытие данных и методов).
Наследование- это возможность создания новых классов (подклассов, производных классов) из существующих базовых классов, с последующим формированием их в иерархию классов.
Производный класс наследует все переменные экземпляра и все методы экземпляра и класса(суперкласса), включая его конструкторы (new и initialize). Применение иерархии классов делает управляемыми большие потоки информации.
Полиморфизм — это свойство(принцип), которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных.
Примечание. Объекты, созданные из классов, занимают память в «общей куче» и сборщику мусора приходится освобождать эту область памяти. Создание множества объектов может быстро истощить ресурсы ЭВМ. Программисту за этим следует следить постоянно.
Далее рассмотрим реализацию подробнее программную реализацию принципов ООП на примере нового языка программирования Crystal. Crystal — это высокоуровневый объектно-ориентированный язык программирования, в котором реализованы все принципы ООП.
Основы языка и его синтаксиса будут объясняться и сопровождаться примерами фрагментов программ, созданными в среде программирования языка Crystal.
КАК НАУЧИТЬСЯ СЧИТАТЬ ДРОБИ / ВСЕГО 3 ПРАВИЛА
Использование инкапсуляции в программах
Любой объектно-ориентированный язык программирования, в том числе и языка программирования Crystal, использует инкапсуляцию для сокрытия значений структурированных данных или состояния объекта внутри класса, предотвращая прямой доступ к ним со стороны клиентов таким образом, чтобы это могло раскрыть скрытые детали реализации или нарушить инвариантность состояния, поддерживаемую методами. Единицей инкапсуляции и наследования в ООП является класс.
Для реализации инкапсуляции в программах объектно-ориентированный язык программирования использует ограничение видимости (так называемая инкапсуляция кода). Управление доступом к переменным и методам класса осуществляется с помощью специальных ключевых слов public, protected или private, записываемых перед определением метода и означающих общедоступный, защищенный и закрытый, соответственно.
По умолчанию методы являются общедоступными, если нет ключевого слова public.
Ключевое слово protected перед методом класса означает, что метод может быть вызван только на экземплярах одного и того же типа, что и текущий тип, то есть в базовом и производных от него классах. Все примеры далее будут на языке программирования Crystal.
Например, объявим класс, имеющий два атрибута и два метода.
Error: can’t apply visibility modifier
Ошибка: не удается применить модификатор видимости
Потому что модификатор видимости(доступа) применяется только к методам.
Если будет объявлен закрытый(частный) метод, например
private def izmPar
То использовать его в программе нельзя. Private м етод может быть вызван только в том классе, где он объявлен. Если так,
то применение sensor.izmPar в программе приведет к ошибке: Error: private method ‘izmPar’ called for Sensor — Ошибка: для Sensor вызван частный метод «» izmPar
Аналогично и для защищенного(protected) метода.
Кроме того, объявление метода с явным указанием модификатора видимости приводит к ошибке.
public def izmPar
Error: can’t declare def dynamically.
Ошибка: не удается динамически объявить def.
Как же быть? Ответ прост – выполнять закрытый или защищенный методы можно внутри другого открытого метода класса.
Дополняем класс методом
метод sensor.izmPar выполнится без ошибки.
Грамотное применение уровней доступа к элементам класса хорошо обеспечивает безопасность кода программы на языке программирования Crystal и создавать эффективное программное обеспечение.
Перегрузка методов
Для расширения возможностей объектно-ориентированный язык программирования использует такое свойство методов как перегрузка. Это означает, что в классе могут быть разные методы с одинаковым именем и разным количеством и типом аргументов, с различной сигнатурой, и они будут рассматриваться как отдельные методы.
Перегрузка методов осуществляется по нескольким критериям:
Ограничения типа, применяемые к аргументам
Принимает ли метод блок или нет
Например, ниже определяется четыре разных метода с одним именем:
Использование наследования в программах
Объектно-ориентированный язык программирования, и язык программирования Crystal в том числе, с целью уменьшения затрат на разработку программы применяет свойство наследования классов. Наследование позволяет программистам создавать классы, основанные на существующих классах, чтобы указать новую реализацию с сохранением того же поведения (реализация интерфейса), повторно использовать код и независимо расширять исходное программное обеспечение через общедоступные классы и интерфейсы.
Каждый класс, кроме Object — корня иерархии, наследуется от другого класса (его суперкласса).
Синтаксис объявления производного класса Temp от базового Sensor имеет вид.
Далее в программе запишем
temp=Temp.new(30,69) #создание объекта произвольного класса
sensor.izmPar #так нельзя:
Error: protected method ‘izmPar’ called for Sensor
Ошибка: для Sensor вызван защищенный метод izmPar
temp.izmPar #так можно, класс Temp наследует метод izmPar класса Sensor.
Класс Temp наследует все переменные и все методы суперкласса Sensor, включая его конструкторы ( new и initialize ).
Методы в производном классе можно дополнять и переопределять. Но вызывать не переопределенные методы суперкласса нельзя. Например.
Возникает ошибка на этапе компиляции.
Error: undefined method ‘izmPar’ for Temp.class
Ошибка: неопределенный метод “izmPar” для Temp.class
Можно также переопределить любой унаследованный метод в подклассе. Если подкласс определяет собственные методы initialize для инициализации, то они не наследуются. Если вы хотите использовать функциональность суперкласса после его переопределения, можно вызвать любой метод суперкласса с помощью «super»
Использование полиморфизма в программах
В более общем смысле, концепцией полиморфизма является идея «один интерфейс, множество методов». Это означает, что можно создать общий интерфейс(сигнатуру) для группы близких по смыслу действий. Преимуществом полиморфизма является то, что он помогает снижать сложность программ, разрешая использование того же интерфейса для задания единого класса действий.
Выбор же конкретного действия, в зависимости от ситуации, возлагается на компилятор. Программисту, не нужно делать этот выбор самому. Нужно только помнить и использовать общий интерфейс.
По сути полиморфизм обеспечивает разное поведение одного и того же метода в разных классах, при этом действия, совершенные с объектами могут существенно различаться. Например.
- Class sumInt
- n=10
- def summa(self,n)
- self.summa= self.n + n
- end
- end
- Class sumString
- n=10
- def summa(self,s)
- self.summa= len(snr(s)
- end
- end
- si = sumInt()
- ss = sumString()
- si.summa(45)
- нss.summa(45)
- print(si.summa) # результат 55
- print(ss.summa) # результат 2
В данном примере метод с одним и тем же именем summa() используется как для суммирования целых чисел, так и для определения количества цифр в числе(длины строки).
Таким образом, объектно-ориентированный язык программирования Crystal имеет все возможности создавать современное эффективное программное обеспечение и позволяет решать широкий круг вычислительных задач.
Пример использования ООП для решения задачи
Для примера использования ООП в языке программировании Crystal рассмотрим задачу измерения температуры и давления воздуха. Для получения измерений применяется два датчика – один в качестве датчика температуры, другой — датчика давления.
В программе предусматривается базовый класс Sensor, отражающий общие свойства любого датчика, и два производных от него класса SensorTemp и SensorDavl, соответственно, представляющие объекты — датчик температуры и давления. Измерения передаются в эти классы для хранения.
В качестве измеренного значения формируется среднее арифметическое всех измерений — сумма всех измерений, деленная на их количество. Для этого создается отдельный класс Izmer, в котором в методе srZnach осуществляется суммирование элементов массива измерений и вычисление среднего значения.
- class SensorDavl < Sensor #измеритель давления — производный класс
- def srDavl # метод вычисления среднего значения давления
- end
- end
- class Izmer # вычислитель самостоятельный класс
- def initialize()
- end
- def srZnach(n,mas=[] of Float64)
- i=0
- sum=0
- while i
- sum += mas[i]
- i+=1
- end
- srZnach=sum/n
- # puts «Среднее в классе», srZnach # оператор для отладки программы
- return srZnach
- end
- end
# Программа вычисления температуры и давления воздуха.
- puts «Имитация измерителя температуры и давления»
- n=5
- srGenT=25
- srGenD=760
- izmPar =[] of Float64 #создаем пустой массив Array(Float64)
- sensor = Sensor.new(n,5,izmPar)
- izmer=Izmer.new()
- izmTemp =[] of Float64
- sensTemp = SensorTemp.new(n,srGenT,izmTemp)
- printf «Массив температур — «
- #puts «n», izmTemp # оператор для отладки программы
- izmTemp.each_with_index< |n, idx| print «%#f » % n; print «n» if idx % 10 == 5 >
- srTemp=izmer.srZnach(n,izmTemp)
- puts «n», «Средняя температура», «%3.2f» %srTemp
- izmDavl =[] of Float64
- sensDavl = SensorDavl.new(n,srGenD,izmDavl)
- printf «Массив давлений — «
- izmDavl.each_with_index< |n, idx| print «%#f » % n; print «n» if idx % 10 == 5 >
- srDavl=izmer.srZnach(n,izmDavl)
- puts «n», «Среднее давление», «%3.2f» %srDavl
Результаты выполнения приведенной выше программы в среде разработки и выполнения языка Crystal представлены на следующем рисунке.
Анализ представленных результатов свидетельствует о работоспособности программы на языке Crystal. Это подтверждает возможности языка программирования Crystal создавать достаточно сложное и эффективное программное обеспечение.
Заключение
Crystal — это высокоуровневый объектно-ориентированный язык программирования. Объектно-ориентированный язык программирования Crystal позволяет создавать современное эффективное программное обеспечение.
Инкапсуляция используется в программах для сокрытия значений или состояния объекта структурированных данных внутри класса.
В языке Crystal предусмотрено одиночное наследование классов.
Другой вариант объектно-ориентированного программирования при создании оконного приложения методом событийно-визуального программирования представлен в статье.
Статьи по теме
- Что такое программирование?
- Как выбирать язык программирования высокого уровня для изучения
- Что выбирать язык или платформу программирования?
- Онлайн школы и курсы IT профессий
- Как стать программистом?
- Как изучать алгоритмы решения задач?
- Как изучать простые типы данных языка программирования?
- Как стать специалистом по большим данным?
Источник: brasmlibras.ru
Лекция 3. Программное обеспечение. Операционная система. Файловая система
Программное обеспечение. Программа. Алгоритм. Команда. Три класса ПО: системное, прикладное, инструментальное. Драйвер. Операционная система Windows, версии, характеристики. Сетевые функции.
Графическое интерфейс. Принцип выделения объекта. Стандартизация. Многозадачность. Буфер обмена. Прикладная программа. Приложения Windows. Пакет Microsoft Office. Текстовый процессор.
Табличный процессор. Система управления базами данных. Правовые справочно-информационные системы. Копирование, буфер памяти.
Файл, файловая система. Исполнимый файл (программа). Файл документа. Имя файла. Расширение имени файла. Ассоциация с программой. Формат (тип) файла. Шаблон имен файлов. Папка (каталог). Подчинение папок (Дерево каталогов).
Папка диска (Корневой каталог). Путь к файлу. Свойства файла: размер, дата создания, атрибуты.
Программное обеспечение (ПО) – совокупность программ обработки данных и необходимых для их работы документов. ПО – информационная компонента компьютера в отличие от устройств – физической, аппаратной компоненты.
Программа – полный, достаточный набор команд, выполнение которых заставляет компьютер вести себя определенным образом и за конечное число шагов решить конкретную задачу.
Программирование – раздел прикладной математики о методах разработки программ для ЭВМ.
Алгоритм – точное однозначное описание процесса вычислений на компьютере последовательным набором правил (команд), следуя которым путем преобразования исходных данных будет получен определяемый этими данными результат.
Команда – элементарная инструкция машине, которую компьютер должен выполнить автоматически без каких либо дополнительных указаний. Команда может содержаться в программе или подаваться извне – в результате ввода данных от пользователя или другой программы.
По назначению программное обеспечение (ПО) компьютера делится на три класса: системное, прикладное и инструментальное.
Системное программное обеспечение – программы для управления ресурсами компьютера: центральным процессором, памятью, вводом и выводом данных, поддержания работоспособности системы обработки информации, повышения эффективности ее использования. Входят в состав операционной системы, бывают системные управляющие и системные обслуживающие программы.
К системным программам относятся:
1. Операционные системы (MS DOS, Linux, Unix, Windows XP(98/2000).
2. Программы оболочки (Norton Commander, Total Commander, Far).
3. Утилиты (ScanDisc, Defrag)
5. Архиваторы (WinRar, WinZip)
6. Антивирусные программы (Norton Antivirus, DoctorWeb, AVP Касперского, Not 32)
Прикладное программное обеспечение (приложение) предназначено для решения практических задач пользователя. Непосредственно выполняет функции, необходимые пользователям, решает практическую задачу и разрабатывается для конкретной операционной системы (Windows, Macintosh, DOS). Примеры прикладных программ: текстовая, графическая, техническая, научная, бухгалтерская, инвентаризации, управления базами данных, табличный процессор
Инструментальные программы (системы программирования) – программы для создания новых приложений и информационных систем, применяются в качестве инструмента программистами. (Visual Basic, Паскаль, Fortran, Си++Delphi, Java)
Операционная система – большой набор программ, которые управляют работой аппаратуры (компьютерных устройств) и обеспечивают их взаимодействие в целом как системы, координируют коммуникацию (связь) компьютеров и других устройств, объединенных в сети, а пользователям и прикладным программам предоставляет интерфейс – средство взаимодействия с компьютером, ресурсами (запускают прикладные программы, ведут диалог с пользователем).
Операционная система (ОС) – комплекс системных программ предназначенный для организации взаимодействия пользователя с компьютером, организации и поддержки согласованной работы оборудования, прикладных программ, структуры дисковой памяти.
Характеристики ОС Windows XP(98/2000/Vista):
1. Графический интуитивно понятный интерфейс.
2. Многозадачный режим.
3. Поддержка работы ПК в сети.
4. Большое количество приложений.
5. Большое количество системных программ включено в ОС.
6. Оригинальные технологические идеи (буфер обмена, корзина)
Драйвер устройства – программа для того, чтобы устройство от конкретного производителя (такое как модем, клавиатура, мышь, монитор, видеоплата, сканер или принтер) могло взаимодействовать с операционной системой.
Приложения не входят в состав операционной системы Windows, а устанавливаются дополнительно для практических работ пользователя.
Операционная система или программы могут создавать в оперативной памяти буфер обмена, или просто буфер – защищенную область временного неизменного хранения данных для выполнения копирования и переноса между окнами документов, программ или между программой и устройством ввода-вывода. Буфер – не устройство, а область памяти, защищенная операционной системой.
Многозадачность – характеристика операционной системы выполнять на одном компьютере несколько прикладных программ (задач) одним процессором с быстрым чередованием.
Графический интерфейс пользователя – в Windows графическая среда, организующая взаимодействие пользователя с вычислительной системой через визуальные элементы управления на экране: окна, списки, кнопки, гиперссылки, значки и др.
Текстовый редактор (текстовый процессор) – класс прикладных программ, предлагающих широкий набор операций с текстом (Microsoft Word, Lotus Word Pro, Corel Word Perfect, Star Office). Может установить различные параметры шрифта и абзацев в разных местах документа, вставить сноски, закладки, таблицы, иллюстрации, диаграммы, создать колонтитулы, заголовки, оглавление. Позволяет использовать шаблоны и макросы для автоматизации повторяющихся задач (ввод имени автора, форматирование стиля заголовков), подготовки документов для массовой рассылки.
Табличный процессор (электронная таблица) – программа для математической, статистической и графической обработки массивов текстовых и числовых данных в таблице. Распределяет и обрабатывает данные (текст, числа, формулы) в ячейках строк и столбцов, выводит на экран значения. Автоматизирует расчеты и является средством моделирования вариантов при изменении данных.
База данных – совокупность связанных данных, организованных по определенным правилам, предусматривающим общие принципы описания, хранения и манипулирования. База данных является информационной моделью какой-нибудь предметной области. Обращение к базам данных осуществляется с помощью системы управления базами данных (СУБД), которая позволяет добавлять, изменять и извлекать информацию на основе единого подхода, не нарушающего организацию данных.
Логический диск – именованная область жесткого диска, обозначается заглавными латинскими буквами C:,D:,E:…
Файл – поименованная совокупность записей данных, хранящихся во внешней памяти компьютера (например, на диске) и рассматриваемых как единое целое.
Файл программы (или ее части) при открытии (загрузке в память) выполняет свои действия и команды, в том числе вызывает другие программы, открывает или создает файлы документов.
Файл документа создается или открывается в программе, которая выполняет с ним какие-нибудь действия: чтение; редактирование данных (текстовый, графический, звуковой файл); представление на экране, в распечатке на принтере, звуке; превращает в данные для другой программы.
Расширение имени файла – последовательность символов, предназначенных для идентификации типа файла (формата); отделяется точкой от имени файла и обычно состоит из трех-четырех символов (английских букв).
По расширению имени операционная система устанавливает ассоциацию файла с прикладной программой, которая на данном компьютере работает с таким типом файлов, и по команде открыть файл запускает необходимую программу и загружает предложенный файл.
Формат файла – правила и структура кодирования информации в файле для восприятия программами и операционной системой. Информация сохраняется в формате файла так, что данные сможет обработать программа, которая «знает», как обрабатывать такой формат.
Шаблон имен файлов – описание имен группы файлов с помощью подстановочных знаков (* и?) в части имени или расширения файла. Применяется в командах для описания группы файлов с именами, удовлетворяющими шаблону.
Папка (каталóг) – объект файловой системы, который занимает строго определенное логическое место в ее иерархической организации, имеет имя и содержит группу файлов (список их имен и свойств). Используется как часть дерева (см.) для описания пути к файлу (см.). Операционная система с графическим интерфейсом, такая как Windows, показывает папку значком в виде канцелярской папки , а открывает как окно со значками вложенных файлов или других папок.
Файловая система – часть операционной системы, обеспечивающая запись и чтение файлов на дисковых носителях. Определяет логическую структуру при сохранении данных в файлах на диске, именование (идентификацию) и управление доступом к файлам.
Дерево каталогов, папок – структура каталогов, подкаталогов (папок) на диске, указывающая расположение файлов в каталогах и подкаталогах, подкаталогов в каталогах. Логическая подчиненность графически изображается деревом с одной вершиной, называемой корневым каталогом, или папкой диска, и ветвлением. При переходе к подчиненным папкам вниз ветви только расходятся и никогда не пересекаются.
Путь к файлу – указание диска и последовательности папок (каталогов) до папки, которая открывает доступ к файлу. Путь начинается от значка с именем диска (верхний уровень), который открывает корневую папку диска и обозначается буквой с двоеточием (например, Диск D:) и идет вниз по дереву папок.
Каждый файл состоит из содержимого и свойств (атрибутов), которые описывают его особенности, признаки. Атрибуты файла – записанные свойства файла, выделяющие файл из множества других файлов. Атрибутами файла являются: имя файла и тип содержимого; дата и время создания файла; размер файла; имя владельца файла; права и метод доступа к файлу. Метод доступа к файлу описывают атрибуты: только для чтения, архивный, скрытый, системный.
Служебные программы – для устранения ошибок размещения файлов: выполняют сканирование диска и дефрагментацию файлов.
ВОПРОСЫ К ЗАЧЕТУ
1. Конфигурация персонального компьютера. Основные устройства системного блока. Процессор, его функции. Основные характеристики процессора: тактовая частота, разрядность.
2. Двоичная система счисления. Единицы измерения информации и объема памяти компьютера.
3. Виды памяти компьютера: внутренняя и внешняя. Назначение ПЗУ. Оперативная память, назначение и характеристики.
4. Внешняя память. Жесткий диск, флеш-карты (флэш-память), оптические диски СD и DVD, характеристики. Имена накопителей памяти. Логические диски. Программы обслуживания жестких дисков (дефрагментация, оптимизация).
5. Классификация программного обеспечения. Примеры программ каждого класса.
6. Операционная система и ее основные функции. Драйверы. Программы обслуживания (утилиты). Архивирование информации. Программы-архиваторы
7. Понятие операционной системы. Характеристики операционной системы Microsoft Windows: графический интерфейс, многозадачность, сетевые возможности.
8. Понятия папки и файла. Файловая структура. Требования к именам файлов в Windows. Виды (форматы) файлов, расширение имени файла. Атрибуты файла.
Путь к файлу.
9. Основные элементы Рабочего стола Windows. Назначение и характеристика основных элементов.
10. Создание папки, файла. Ввод имени. Переименование папок, файлов. Особенность переименования файлов. Выделение объектов в окне папки.
Копирование, перемещение и удаление папок и файлов.
11. Окно как основной рабочий элемент Windows. Кнопки управления окном. Панель инструментов. Вид отображения информации в окне. Упорядочение объектов в окне.
12. Понятие активного окна. Изменение взаимного расположения окон. Значки и ярлыки объектов. Разница между ними. Контекстное меню объектов.
13. Поиск папок и файлов средствами Windows. Шаблоны имен файлов и их использование.
14. Стандартные приложения Windows. Назначение основных программ.
15. Буфер обмена. Обмен текстовой, графической, числовой информацией между различными приложениями Windows. Горячие клавиши для работы с буфером.
16. Текстовый процессор Microsoft Word – назначение. Элементы окна Word. Настройка окна программы: панели инструментов, линейка. Режимы документа: обычный, разметка страницы, веб-документ, структура.
17. Правила и приемы набора текста в Word. Знаки препинания, кавычки, длинное тире. Непечатаемые символы: назначение и отображение.
18. Проверка правописания. Расстановка переносов. Поиск и замена фрагментов текста и форматирования.
19. Приемы выделения фрагментов текста: любой фрагмент и фрагмент текста размером больше экрана. Приемы перемещения и копирования фрагментов текста в пределах одного документа, между документами. Многоместный буфер обмена Microsoft Office. Установка. Правила заполнения и действия с элементами.
20. Параметры страницы: поля, размер бумаги. Установка отображения границ области текста. Колонтитулы. Нумерация страниц. Форматирование номера. Удаление нумерации.
Принудительный разрыв страницы.
21. Форматирование шрифта. Команда Формат – Шрифт. Вкладки Шрифт, Интервал, Анимация. Быстрое форматирование с помощью кнопок панели инструментов Форматирование. Установка параметров шрифта.
22. Понятие абзаца. Установка параметров абзаца. Команда Формат – Абзац. Вкладка Отступы и интервалы. Вкладка Положение на странице. Быстрое форматирование абзацев с помощью кнопок панели инструментов и линейки.
Использование кнопки «Копирование по образцу».
23. Понятие и назначение списка в документе Word. Виды списков. Списки: нумерованные, маркированные, многоуровневые. Назначение. Действия при оформлении текста в виде маркированного или нумерованного списка. Изменение и настройка таких списков.
Отмена списка.
24. Многоуровневые списки в документе Word. Оформление текста встроенным многоуровневым списком. Понижение/повышение уровня элементов списка. Изменение и настройка списка. Действия с элементами списка (вставка, удаление, завершение, отмена списка, отмена элемента списка, начало/продолжение списка).
25. Назначение сноски в документе Word. Типы сносок. Вставка, перемещение, копирование, удаление. Преобразование сносок. Форматирование и редактирование текста сносок.
26. Вставка таблицы в документ Word. Изменение структуры таблицы: вставка/удаление столбцов/строк, объединение и разбиение ячеек, изменение размеров столбцов/строк. Автоподбор размеров таблицы.
27. Форматирование таблицы в документе Word содержимого ячеек (шрифт, абзац, направление текста). Очистка ячеек. Границы и заливка. Изменение положения таблицы на листе. Удаление таблицы.
28. Работа с графическими объектами в Word (рисунками, картинками). Вставка, изменение размеров, положение в тексте (обтекание и выравнивание).
29. Работа с объектами WordArt, автофигуры. Создание, форматирование, редактирование, изменение размеров и положения.
30. Форматирование текста с помощью стилей. Стиль знака, абзаца. Применение встроенных стилей. Изменение встроенного стиля. Создание пользовательского стиля.
31. Понятие стиля заголовка N-го уровня и его применение. Вставка оглавления в многостраничный документ Word. Нумерация заголовков и обновление оглавления
Источник: studopedia.su
ООП с примерами (часть 1)
Волею судьбы мне приходится читать спецкурс по паттернам проектирования в вузе. Спецкурс обязательный, поэтому, студенты попадают ко мне самые разные. Конечно, есть среди них и практикующие программисты. Но, к сожалению, большинство испытывают затруднения даже с пониманием основных терминов ООП.
Для этого я постарался на более-менее живых примерах объяснить базовые понятия ООП (класс, объект, интерфейс, абстракция, инкапсуляция, наследование и полиморфизм).
Первая часть, представленная ниже, посвящена классам, объектам и интерфейсам.
Вторая часть иллюстрирует инкапсуляцию, полиморфизм и наследование
Основные понятия ООП
Класс
Представьте себе, что вы проектируете автомобиль. Вы знаете, что автомобиль должен содержать двигатель, подвеску, две передних фары, 4 колеса, и т.д. Ещё вы знаете, что ваш автомобиль должен иметь возможность набирать и сбавлять скорость, совершать поворот и двигаться задним ходом. И, что самое главное, вы точно знаете, как взаимодействует двигатель и колёса, согласно каким законам движется распредвал и коленвал, а также как устроены дифференциалы. Вы уверены в своих знаниях и начинаете проектирование.
Вы описываете все запчасти, из которых состоит ваш автомобиль, а также то, каким образом эти запчасти взаимодействуют между собой. Кроме того, вы описываете, что должен сделать пользователь, чтобы машина затормозила, или включился дальний свет фар. Результатом вашей работы будет некоторый эскиз. Вы только что разработали то, что в ООП называется класс.
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы, класс является сложным типом данных.
В нашем случае, класс будет отображать сущность – автомобиль. Атрибутами класса будут являться двигатель, подвеска, кузов, четыре колеса и т.д. Методами класса будет «открыть дверь», «нажать на педаль газа», а также «закачать порцию бензина из бензобака в двигатель». Первые два метода доступны для выполнения другим классам (в частности, классу «Водитель»). Последний описывает взаимодействия внутри класса и не доступен пользователю.
В дальнейшем, несмотря на то, что слово «пользователь» ассоциируется с пасьянсом «Косынка» и «Microsoft Word», мы будем называть пользователями тех программистов, которые используют ваш класс, включая вас самих. Человека, который является автором класса, мы будем называть разработчиком.
Объект
Вы отлично потрудились и машины, разработанные по вашим чертежам, сходят с конвейера. Вот они, стоят ровными рядами на заводском дворе. Каждая из них точно повторяет ваши чертежи. Все системы взаимодействуют именно так, как вы спроектировали. Но каждая машина уникальна.
Они все имеют номер кузова и двигателя, но все эти номера разные, автомобили различаются цветом, а некоторые даже имеют литьё вместо штампованных дисков. Эти автомобили, по сути, являются объектами вашего класса.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом.
Говоря простым языком, объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе. В данном примере, если класс – это некоторый абстрактный автомобиль из «мира идей», то объект – это конкретный автомобиль, стоящий у вас под окнами.
Интерфейс
Когда мы подходим к автомату с кофе или садимся за руль, мы начинаем взаимодействие с ними. Обычно, взаимодействие происходит с помощью некоторого набора элементов: щель для приёмки монеток, кнопка выбора напитка и отсек выдачи стакана в кофейном автомате; руль, педали, рычаг коробки переключения передач в автомобиле. Всегда существует некоторый ограниченный набор элементов управления, с которыми мы можем взаимодействовать.
Интерфейс – это набор методов класса, доступных для использования другими классами.
Очевидно, что интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
Хорошим примером интерфейса может служить приборная панель автомобиля, которая позволяет вызвать такие методы, как увеличение скорости, торможение, поворот, переключение передач, включение фар, и т.п. То есть все действия, которые может осуществить другой класс (в нашем случае – водитель) при взаимодействии с автомобилем.
При описании интерфейса класса очень важно соблюсти баланс между гибкостью и простотой. Класс с простым интерфейсом будет легко использовать, но будут существовать задачи, которые с помощью него решить будет не под силу. В то же время, если интерфейс будет гибким, то, скорее всего, он будет состоять из достаточно сложных методов с большим количеством параметров, которые будут позволять делать очень многое, но использование его будет сопряжено с большими сложностями и риском совершить ошибку, что-то перепутав.
Примером простого интерфейса может служить машина с коробкой-автоматом. Освоить её управление очень быстро сможет любая блондинка, окончившая двухнедельные курсы вождения. С другой стороны, чтобы освоить управление современным пассажирским самолётом, необходимо несколько месяцев, а то и лет упорных тренировок. Не хотел бы я находиться на борту Боинга, которым управляет человек, имеющий двухнедельный лётный стаж. С другой стороны, вы никогда не заставите автомобиль подняться в воздух и перелететь из Москвы в Вашингтон.
Источник: habr.com