Главная страница
Навигация по странице:

  • Используется при изучении разделов

  • Классом

  • Рабочая программа по дисциплине Цели и задачи освоения дисциплины Дисциплина Объектноориентированный анализ и программирование


    Скачать 339.98 Kb.
    НазваниеРабочая программа по дисциплине Цели и задачи освоения дисциплины Дисциплина Объектноориентированный анализ и программирование
    Дата12.10.2022
    Размер339.98 Kb.
    Формат файлаdocx
    Имя файлаobektno-orientirovannyj_analiz_i_programmirovanie_161021.docx
    ТипРабочая программа
    #730141
    страница2 из 14
    1   2   3   4   5   6   7   8   9   ...   14

    Дополнительная литература

    п/п

    Наименование

    Автор(ы)

    Год и место издания

    Используется при изучении разделов

    1.

    Основные концепции и механизмы объектно- ориентированного программирования

    Пышкин Е.В.

    Спб.:

    БХВ-Петербург, 2005

    Основы объектно-ориентированного

    программирования

    2.

    Java 2. Тонкости программирования. Том 1

    Хорстманн К., Корнелл Г.

    Издательский дом «Вильямс», 2007

    Язык программирования Java

    3.

    Java 2. Тонкости программирования. Том 2

    Хорстманн К., Корнелл Г.

    Издательский дом «Вильямс», 2007

    Язык программирования Java

    4.

    Искусство программирования на Java

    Шилдт Г., Холмс Д.

    Издательский дом «Вильямс», 2005

    Язык программирования Java

    5.

    Шаблоны проектирования в JAVA. Каталог популярных шаблонов проектирования, проиллюстрированных при помощи UML

    Гранд М.

    Издательский дом «Вильямс», 2004

    Язык графического описания UML. Язык программирования Java. Шаблоны проектирования

    6.

    Применение UML 2.0 и шаблонов проектирования

    Ларман К.

    Издательский дом «Вильямс», 2006

    Язык графического описания UML. Шаблоны проектирования

    Программное обеспечение

    • StarUML или VioletUML,

    • Oracle JDK (версии не ниже 1.6),

    • Eclipse, IntelijIDEA, NetBeans или Sublime Text 2,

    • MS Word или Libre Office Writer.

    Содержание курса

    Введение

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

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

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

    Предлагаемый материал излагается исходя из предположения, что обучающийся владеет хотя бы одним процедурным языком программирования (например, Pascal или ANSI С). Это значит, что часть терминов, уже знакомых «начинающему» разработчику используется без объяснения. В случае затруднений с пониманием рекомендуется «освежить» в памяти базовые знания по программированию.

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

    Тема 1. «Основы объектно-ориентированного программирования»

    Данная тема представляет собой своеобразное введение в объектно-ориентированное программирование. Цель этого раздела — на простых примерах пояснить основные определения объектной парадигмы.

    Классы и объекты

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

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

    Иными словами, класс — это некоторый универсальное описание чего-либо.

    Смежным с классом понятием является объект. Объект — это экземпляр класса. Один класс в общем случае может иметь произвольное число экземпляров — конкретных реализаций. В большинстве случаев именно конкретными реализациями и оперирует программист во время своей работы.

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




    Plane

    model label passangerCount crewCount Поля capacity speed rise landing gearselection ,eft Методы

    right up down

    Структура класса Plane



    Членом класса может быть другой класс. Например, класс Auto (автомобиль) может содержать ноле Engine (мотор), представляющее собой ссылку на экземпляр другой сущности. Говоря языком структурного программиста, поле класса — это ссылка на переменную, массив, структуру или другой экземпляр класса, а метод — это последовательность инструкций для манипулирования данными. Объект же — конкретный экземпляр класса. Если класс — это своеобразный «чертеж», то объект — это воплощение сущности в памяти ЭВМ по этому чертежу.

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

    Подведем промежуточный итог.

    • Класс — фундаментальное понятие объектно-ориентированного программирования.

    • Класс — это совокупность членов (полей и методов, или данных и операций над ними).

    • Объект — конкретная сущность в памяти ЭВМ (экземпляр класса).

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

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

    Наследование

    Работа с классами была бы невозможной без такого понятия как наследование.

    Восприятие человеком окружающего мира «многоступенчато». Например, любой человек — это, прежде всего, человек. Он имеет характерные для каждого признаки: имя, возраст, родителей, — и способен совершать определенные действия: двигаться, говорить, улыбаться и так далее. С другой стороны, например, школьник имеет свои признаки: класс, расписание, дневник, — и действия: выполнить домашнее задание или вымыть доску. Но в то же время школьник — тоже человек. Он точно также имеет имя, возраст и так далее.




    Принцип наследования позволяет удобно оперировать подобными сущностями: для работы с классами Human (человек) и Schoolboy (школьник) нс потребуется описание двух классов, содержащих повторяющиеся члены. Второй класс может быть объявлен «наследником» первого, более общего. В таком случае он автоматически унаследует все элементы родительского класса (если они, конечно, не будут специально скрыты). Схематично такая ситуация представлена на рисунке.

    Таким образом, наследование — это механизм

    Human

    Schoolboy

    name

    class

    age

    schedule

    parent

    diary

    move

    doHomework

    speak

    washBlackboard

    smile







    Наследование классом Schoolboy от класса Human



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

    Класс-родитель еще принято называть «суперклассом». Класс-потомок сам может являться суперклассом. Родитель может иметь несколько потомков. Потомок, в общем случае, — несколько родителей (такая ситуация называется множественным наследованием). Эти факты позволяет конструировать сложные древовидные иерархии. Подобный пример представлен на рисунке.




    Здесь Transport — абстракция транспортного средства. Классы AutoTransport (автомобильный транспорт), AirTransport (воздушный транспорт) и WaterTransport (водный транспорт) расширяют Transport. В свою очередь классы Auto и Moto соответствуют абстракциям автомобиля и мотоцикла.

    Т ransportWaterT ransport AutoTransport ^AirTransport

    Auto Moto





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

    Здесь необходимо также упомянуть о широко распространенной в объектно-ориентрованных языках концепции единого базового класса. Дело в том, что класс, не имеющий явного родителя, все равно наследует от некоторого класса: в Java — от java.lang.Object, в Eiffel — от ANY, в Delphi — от TObject.

    Инкапсуляция

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

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

    Рассмотрим классический пример нарушения состояния объекта. Пусть имеется некоторый класс DoubleValue, содержащий два поля — value и stringRepresentation. Экземпляры данной сущности позволяют хранить вещественное число и его строковое представление. Если оба поля являются доступными, то возможна ситуация, когда кто-либо изменить значение одного поля и забудет изменить соответствующим образом другое. Подобное нарушение согласованности может привести к «снежному кому» ошибок. Правильным решением в описанной ситуации является сокрытие полей и предоставление трех методов: setValue (для изменения вещественного значения и построения нового строкового представления), getValue (для получения вещественного значения) и getStringValue (для получения строкового представления).

    Для лимитирования доступа к членам класса применяется механизм, получивший название области видимости. Его суть заключается в том, что при объявлении члена класса допускается явно указывать ограничивающий доступ модификатор. Типичными примерами таких модификаторов являются public (элемент виден всем без исключения) и private (элемент виден только внутри класса).

    Ряд объектных языков программирования, помимо прочего, предоставляет возможность организации дружественного доступа. Поясним, что понимается под этим термином. Дружественным доступом называется механизм, позволяющий методам одного класса получать доступ к скрытым членам другого класса. Как правило, дружественный доступ не передается по наследству и не транзитивен («никто не обязан дружить с друзьями родителей» и «друг моего друга не обязательно мой друг»).

    Необходимо отметить, что термин «инкапсуляция» имеет также другое, менее распространенное, значение.
    1   2   3   4   5   6   7   8   9   ...   14


    написать администратору сайта