Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

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

Покупка
Артикул: 769610.01.99
Доступ онлайн
200 ₽
В корзину
В пособии изложены основы объектно-ориентированного программирования (ООП). Подробно рассмотрены базовые принципы ООП: полиморфизм, наследование, инкапсуляция и абстракция. Даны основы языка Java. Для студентов направлений «Программная инженерия» и «Бизнес-информатика», а также всех, кто начинает изучать основы объектно-ориентированного программирования на языке Java.
Морозова, Ю. В. Объектно-ориентированный анализ и программирование : учебное пособие / Ю. В. Морозова. - Томск : Эль-Контент, 2018. - 140 с. - ISBN 978-5-4332-0269-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/1845889 (дата обращения: 11.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство науки и высшего образования Российской Федерации 
 
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ 
И РАДИОЭЛЕКТРОНИКИ (ТУСУР) 
 
ФАКУЛЬТЕТ ДИСТАНЦИОННОГО ОБУЧЕНИЯ (ФДО) 
 
 
 
 
Ю. В. Морозова 
 
 
 
 

 

ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ 
АНАЛИЗ И ПРОГРАММИРОВАНИЕ 

 

 
 
 
 
Учебное пособие 
 
 
 
 
 
 
 
 
Томск 
2018

УДК
004.42.045(075.8)

ББК
32.973.2-018я73
М 801

 
Рецензенты: 
В. В. Герасименко, канд. техн. наук, заместитель начальника отдела  
информационных технологий ООО «КДВ Групп»; 
П. В. Сенченко, канд. техн. наук, доцент кафедры автоматизации  
обработки информации Томского государственного университета  
систем управления и радиоэлектроники 
 
Морозова Ю. В. 

М 801
Объектно-ориентированный анализ и программирование : учеб
ное пособие / Ю. В. Морозова. – Томск : Эль Контент, 2018. – 140 с. 
 
ISBN 978-5-4332-0269-6 
 
В пособии изложены основы объектно-ориентированного программирования (ООП). Подробно рассмотрены базовые принципы ООП: полиморфизм, 
наследование, инкапсуляция и абстракция. Даны основы языка Java. 
Для студентов направлений «Программная инженерия» и «Бизнесинформатика», а также всех, кто начинает изучать основы объектноориентированного программирования на языке Java.  
 
 
 
 
 
 
 
 
 
 
ISBN 978-5-4332-0269-6
© Морозова Ю. В., 2018
© Оформление. 
ООО «Эль Контент», 2018 

Оглавление 
Предисловие ..................................................................................................... 5 
1 Введение в методологию объектно-ориентированного 
программирования ...................................................................................... 7 
1.1 Сложность программного обеспечения ................................................. 7 
1.2 Объектная декомпозиция ...................................................................... 10 
1.3 Класс и объект ........................................................................................ 11 
1.4 Типы отношений между классами и объектами ................................. 13 
1.5 Принципы ООП ...................................................................................... 16 
2 Основы языка Java .................................................................................... 22 
2.1 История создания Java ........................................................................... 23 
2.2 Технологии Java ..................................................................................... 25 
2.3 Версии Java ............................................................................................. 25 
2.4 Платформа Java ...................................................................................... 29 
2.5 Разработка программ на языке Java ..................................................... 31 
3 Синтаксис и структура языка Java ........................................................ 36 
3.1 Комментарии .......................................................................................... 41 
3.2 Аннотации ............................................................................................... 42 
3.3 Имена ....................................................................................................... 43 
3.4 Переменные ............................................................................................ 44 
3.5 Литерал .................................................................................................... 45 
3.6 Константы ............................................................................................... 46 
3.7 Примитивные типы ................................................................................ 46 
3.8 Преобразование типов в Java ................................................................ 48 
3.9 Операторы ............................................................................................... 50 
3.10 Управляющие конструкции ................................................................ 56 
3.11 Нормальное и прерванное выполнение операторов ......................... 58 
3.12 Условный оператор .............................................................................. 59 
3.13 Операторы цикла .................................................................................. 61 
3.14 Оператор switch ................................................................................ 63 
4 Основы объектно-ориентированного программирования ................ 65 
4.1 Класс и его структура ............................................................................ 65 
4.2 Конструкторы ......................................................................................... 70 
4.3 Наследование .......................................................................................... 73 
4.4 Геттеры и сеттеры .................................................................................. 73 
4.5 Перегрузка методов ............................................................................... 74 

4.6 Ключевые слова this и super ........................................................... 75 
4.7 Переопределение методов ..................................................................... 77 
4.8 Вложенные и внутренние классы ......................................................... 79 
4.9 Абстрактные классы .............................................................................. 84 
4.10 Интерфейсы .......................................................................................... 87 
4.11 Коллекции ............................................................................................. 90 
4.12 Потоки ................................................................................................. 100 
5 Обработка исключений ........................................................................... 116 
5.1 Иерархия классов исключений ........................................................... 117 
5.2 Обработка исключений ....................................................................... 119 
5.3 Системные исключения ....................................................................... 129 
5.4 Непроверяемые исключения ............................................................... 129 
5.5 Проверяемые исключения java.lang ............................................ 131 
5.6 Собственные исключения ................................................................... 131 
Заключение ................................................................................................... 134 
Литература.................................................................................................... 135 
Глоссарий ...................................................................................................... 136 
 

 
 

Предисловие 

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

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

Язык Java представляет собой новейшую разработку в области объектноориентированных языков. 

Соглашения, принятые в учебном пособии 
Для улучшения восприятия материала в данном учебном пособии используются пиктограммы и специальное выделение важной информации. 

 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Эта пиктограмма означает определение или новое понятие. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Эта пиктограмма означает «Внимание!». Здесь выделена важная информация, требующая акцента на ней. Автор может поделиться с читателем опытом, чтобы помочь избежать некоторых 
ошибок. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Эта пиктограмма означает цитату. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
В блоке «На заметку» автор может указать дополнительные 
сведения или другой взгляд на изучаемый предмет, чтобы помочь 
читателю лучше понять основные идеи. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Эта пиктограмма означает совет. В данном блоке указаны более простые или иные способы выполнения определенной задачи. 
Совет может касаться практического применения только что изученного или содержать указания на то, как немного повысить эффективность и значительно упростить выполнение некоторых задач. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   

 · · · · · · · · · · · · · · · · · · · · · · · ·   
 Пример  · · · · · · · · · · · · · · · · · · · · · · · · · ·   

Эта пиктограмма означает пример. В данном блоке автор может привести 
практический пример для пояснения и разбора основных моментов, отраженных в теоретическом материале. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   

 · · · · · · · · · · · · · · · · · · · · · · · ·   
 Выводы  · · · · · · · · · · · · · · · · · · · · · · · · · ·   

Эта пиктограмма означает выводы. Здесь автор подводит итоги, обобщает 
изложенный материал или проводит анализ. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Контрольные вопросы по главе 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   

1 Введение в методологию  

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

 

Спасайся, кто может – началось 
вторжение компьютеров. 

Алан Купер 

 
В настоящее время компьютеры используются во всех областях человеческой деятельности. Проникая во всевозможные сферы нашей жизни, компьютеры раздражают нас, приводят в ярость, а кое-кого даже убивают: жертвы социальных сетей, игроманы, интернет-зависимые и любители селфи. При этом 
мы испытаем соблазн уничтожить свои компьютеры, но не посмеем, потому 
что и сегодня уже полностью, необратимо зависим от этих многообещающих 
монстров, делающих современную жизнь возможной. Так вот, методология 
объектно-ориентированного программирования поможет нам сбежать из этой 
«психбольницы» [1], понять, как думают разработчики программ, и, наконец, 
самим стать разработчиками программ. Давайте рассмотрим, что вызвало появление объектно-ориентированного программирования (ООП).  

1.1 Сложность программного обеспечения 
В последние годы резко возросла сложность и размер решаемых задач. 
В этих условиях для увеличения эффективности решения различных задач уже 
недостаточно использования традиционных подходов. Более важным сейчас 
является выбор инструментария, т. е. системы программирования, языка программирования, т. к. современные системы содержат приемы, позволяющие 
эффективно решать большие задачи, контролировать и обрабатывать критические ситуации (исключения), работать с большими объемами данных.  
Появление новых моделей процессоров и комплектующих, версий операционных систем и программного обеспечения происходит на фоне постоянного 
усложнения не только отдельных физических и программных компонентов, но 
и лежащих в их основе концепций. Увеличение размеров программ приводило 
к необходимости привлечения большего числа программистов, что, в свою очередь, потребовало дополнительных ресурсов для организации их согласованной 
работы. В процессе разработки приложений заказчик зачастую изменял функ
циональные требования, что еще более усложняло процесс создания программного обеспечения.  
Как показала практика, традиционные методы процедурного программирования не способны справиться ни с нарастающей сложностью программ и их 
разработки, ни с необходимостью повышения их надежности. Во второй половине 1980-х гг. возникла настоятельная потребность в новой методологии программирования, которая была бы способна решить весь этот комплекс проблем. 
Ею стало объектно-ориентированное программирование. 
Таким образом, назрела настоятельная необходимость моделирования 
структуры и процесса функционирования программных систем до начала написания соответствующего кода. При этом непременным условием успешного завершения проекта стало построение предварительной модели программной системы. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Модель (model) – абстракция физической системы, рассматриваемая с определенной точки зрения и представленная на некотором языке или в графической форме. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
С точки зрения общих принципов системного анализа одна и та же физическая система может быть представлена несколькими моделями. При этом 
назначение отдельной модели системы определяется характером решаемой 
проблемы. Основное требование к модели программной системы – она должна 
быть понятна заказчику и всем специалистам проектной группы, включая бизнес-аналитиков и программистов. Именно для разработки такой нотации потребовались усилия группы специалистов ведущих фирм – производителей программного и аппаратного обеспечения, которые привели к появлению языка 
UML. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
UML (Unified Modeling Language – унифицированный язык 
моделирования) – язык графического описания для объектного моделирования в области разработки программного обеспечения, моделирования бизнес-процессов, системного проектирования и отображения организационных структур. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
UML является языком широкого профиля, это открытый стандарт, использующий графические обозначения для создания абстрактной модели си
стемы, называемой UML-моделью. UML был создан для определения, визуализации, проектирования и документирования в основном программных систем. 
UML не является языком программирования, но на основании UML-моделей 
возможна генерация кода. 
Средства UML-моделирования: 

• Rational Rose; 

• Microsoft Visual Studio .NET Enterprise Architect, Microsoft Visio. 
Разработка и использование моделей языка UML осуществляется в рамках общей концепции объектно-ориентированного анализа и проектирова- 
ния, которая, в свою очередь, является обобщением методологии объектноориентированного программирования. 
Естественное стремление разработчиков программ – сократить время разработки, облегчить повторное использование отлаженных модулей и снизить 
издержки на сопровождение и модификацию программ. При увеличении размера программы обычно возрастает сложность межмодульных интерфейсов, и 
с некоторого момента предусмотреть взаимовлияние отдельных частей программы становится практически невозможно. Для разработки программного 
обеспечения большого объема в середине 1980-х гг. было предложено использовать объектный подход. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Объектно-ориентированное программирование определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности 
объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием 
свойств [2]. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Основными достоинствами ООП по сравнению с модульным программированием является «более естественная» декомпозиция ПО, более полная локализация данных и интеграция их с подпрограммами обработки, что позволяет 
вести практически независимую разработку отдельных частей (объектов), новые способы организации программ, основанные на механизмах наследования, 
полиморфизма, композиции, наполнения. Таким образом, любая работающая 
сложная система является результатом развития работавшей более простой системы. 

Таким образом, программную систему можно разделить на подсистемы и 
совершенствовать независимо, при этом в уме не нужно держать информацию 
обо всей системе сразу. 

1.2 Объектная декомпозиция 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Декомпозиция – разбиение сложной системы на части. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
В основе структурного подхода лежит декомпозиция сложных систем 
с целью последующей реализации в виде отдельных небольших (до 40–50 операторов) подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т. д.) данный способ получил название процедурной декомпозиции. 
Процедурной декомпозицией называют процесс представления разрабатываемого программного обеспечения в виде совокупности вызывающих друг 
друга подпрограмм. Каждая подпрограмма в этом случае выполняет некоторую 
операцию, а вся совокупность подпрограмм решает поставленную задачу 
(рис. 1.1).  

 
Рис. 1.1 – Процедурная декомпозиция 

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

Основная программа

Подпрограмма 2
Подпрограмма N
...
Подпрограмма 1

Рис. 1.2 – Объектная декомпозиция 

1.3 Класс и объект 
В объектно-ориентированном программировании базовыми единицами 
программ и данных являются объекты. Можно сказать, что в чисто объектноориентированной системе ничего, кроме объектов нет. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Объект (object) – это осязаемая сущность, которая четко 
проявляет свое поведение [2]. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Объект состоит из следующих трех частей: имя объекта (names), состояние (attributes), поведение (behaviors) (рис. 1.3), т. е. объект обладает состоянием, поведением и идентичностью. 

 
Рис. 1.3 – Представление объектов 

Объект

Класс

Методы
События
Свойства

Behaviors

Attributes

Name

Behaviors

Attributes

Name

Behaviors

Attributes

Name

Behaviors

Attributes

Name

Behaviors

Attributes

Name

Messages

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Состояние (attributes) объекта характеризуется перечнем 
(обычно статическим) всех свойств данного объекта и текущими 
(обычно динамическими) значениями каждого из этих свойств. 
Поведение (behaviors) – это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта 
и передачи сообщений. 
Идентичность (names) – это такое свойство объекта, которое отличает его от всех других объектов [2]. 
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   
Основные черты ООП: 

• все является объектом (за исключением примитивных типов данных); 

• программа – это группа объектов, говорящих друг другу, что делать, 
посредством сообщений; 

• каждый объект имеет собственную память, состоящую из других объектов; 

• у каждого объекта есть тип. Каждый объект является экземпляром 
класса, здесь «класс» является аналогом слова «тип»; 

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

Доступ онлайн
200 ₽
В корзину