Читать книгу «Введение в объектно-ориентированный дизайн с Java» онлайн полностью📖 — Тимура Машнина — MyBook.
image

Вопросы

Вопрос 1

Что из следующего является желательными характеристиками дизайна программного обеспечения?

Тесная связь

Ремонтопригодность +

Повторное использование +

Гибкость +

Вопрос 2

Определите два результата процесса проектирования.

Концептуальный дизайн +

Реализация кода

Технический дизайн +

План проектирования

Вопрос 3

Вы пишете CRC-карту для компонента банкомата. В каком разделе вы должны поместить «Отслеживание оставшихся денежных средств».

Риски

Класс

Коллабораторы

Обязанности +

Вопрос 4

Что из этого, вероятно, будет частью концептуального дизайна?

Карты CRC +

Абстрактные типы данных

Методы

Макеты +

Вопрос 5

Когда в процессе проектирования вы, скорее всего, будете создавать карты CRC?

Встречи с клиентами

Концептуальный дизайн +

После выпуска программного обеспечения

Технический дизайн

Вопрос 6

Что из следующего является примером нефункциональных требований?

Производительность +

Доступность +

Предназначение

Безопасность +

Вопрос 7

Выберите категории объектов, которые обычно присутствуют в объектно-ориентированном программном обеспечении.

Entity +

Boundary +

tool

Сontrol +

Вопрос 8

Объект, который отвечает за отображение данных пользователю, может быть рассмотрен в какой категории объекта?

representation

boundary +

entity

control

Вопрос 9

Вы планируете класс профессора как часть своего программного обеспечения. Что из следующего вы считаете collaborator?

Отслеживать статус работника

Курс

Студент +

Учебный курс +

Вопрос 10

Что является способом выражения требования в этой форме? «Как ____, я хочу ____, так что ____».

История пользователя +

Концептуальный макет

Абстракция объекта

Ключевое понятие

Задание

Как только возникает требование, оно должно быть выражено в той или иной форме.

Один из способов выражения требования называется историей пользователя.

Пользовательская история – это просто требование, часто с точки зрения конечного пользователя, которое указано на естественном языке.

История пользователя выглядит так:

Как ______, я хочу ______, чтобы ______.

Поместите роль пользователя в первый пробел.

Во втором пробеле укажите цель, которую должна достичь пользовательская роль.

Это приведет к некоторой функции, которую вы хотите реализовать.

После этого укажите причину, по которой пользовательская роль хочет эту цель.

После заполнения пользовательской истории вы можете применить объектно-ориентированное мышление к ней, чтобы обнаружить объекты и, возможно, дополнительные требования!

Вопрос 11

Вы программист, создающий программное обеспечение для банкомата. В какой раздел CRC-карты для компонента банкомата будет включен «Пользователь»?

Коллабораторы +

Обязанности

Объект

Класс

Вопрос 12

Во время концептуального дизайна вы будете говорить о …:

Компромиссах +

Требованиях +

Технических диаграммах

Макетах +

Основные понятия

Объектно-ориентированный подход зародился в программировании в середине прошлого века.


Первым объектно-ориентированным языком был Simula (Simulation of real systems – моделирование реальных систем), разработанный в 1960 году исследователями Норвежского вычислительного центра.

В 1970 году Алан Кей и его исследовательская группа в Xerox PARK создали персональный компьютер Dynabook и первый чистый объектно-ориентированный язык программирования – Smalltalk для программирования Dynabook.

В 1980-х годах Грэди Буч опубликовал документ под названием «Объектно-ориентированный дизайн», в котором в основном был представлен дизайн для языка программирования Ada. В последующих изданиях он расширил свои идеи до полного объектно-ориентированного метода проектирования.

В 1990-х годах Coad включил поведенческие идеи в объектно-ориентированные методы.

Другими значительными нововведениями были методы моделирования объектов Object Modelling Techniques (OMT) Джеймса Рамбо и объектно-ориентированная программная инженерия Object-Oriented Software Engineering (OOSE) Ивара Джекобсона.

С появлением первых компьютеров появились языки программирования низкого уровня.

Языки программирования, ориентированные на конкретный тип процессора, и, операторы которых были близки к машинному коду.

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

При этом происходило смещение от программирования деталей к программированию компонентов, развитие инструментов программирования и возрастание сложности программных систем.

Также развивался подход или стиль написания программ.

В начале использовалось процеду́рное программи́рование, при котором последовательно выполняемые операторы собирались в подпрограммы.

При этом данные и процедуры для их обработки формально не были связаны.

Как следствие возрастания сложности программного обеспечения появилось структу́рное программи́рование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.

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

Событи́йно-ориенти́рованное программи́рование – парадигма программирования, в которой выполнение программы определяется событиями – действиями пользователя, сообщениями других программ и потоков, и событиями операционной системы.

Компонентно-ориентированное программирование – парадигма программирования, опирающаяся на понятие компонента – независимого модуля исходного кода программы, предназначенного для повторного использования и развёртывания, и реализующегося в виде множества языковых конструкций.

В 1960-х годах двумя наиболее популярными языками программирования были COBOL и Fortran.

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

В 1960-х, время обработки компьютера было дорогостоящим.

Поэтому было важно максимизировать производительность обработки.

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

С глобально доступными переменными все подпрограммы могли получить к ним доступ для выполнения необходимых вычислений.

Однако при этом возникали некоторые проблемы.

С глобальными данными возможно, что изменения в данных могут иметь побочные эффекты для программы.

Иногда подпрограммы запускались с теми данными, которые были не такими, как ожидалось.

Необходимость лучшего управления данными привела к изменениям в императивном программировании и появлению таких языков, как Algol 68 и Pascal в 1970-х годах.

Была введена идея локальных переменных.

Подпрограммы назывались процедурами, которые могут содержать вложенные процедуры.

И каждая процедура могла иметь свои собственные переменные.

Алгол 68 и Паскаль поддерживают понятие абстрактного типа данных, который является типом данных, который определен программистом и не встроен в язык.

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

Это был способ организации данных.

Разработчики могли писать свое программное обеспечение с использованием этих типов аналогично встроенным типам языков.

Имея переменные в разных областях видимости, можно было разделить данные на разные процедуры.

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

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

И задачи становились все более сложными.

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

Появились новые языки, такие как C и Modula-2, которые предоставили средства для организации программ и позволяли разработчикам легко создавать несколько уникальных копий своих абстрактных типов данных.

Теперь программы могли быть организованы в отдельные файлы.

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

Но при этом еще существовали проблемы, которые не решались этими языками программирования.

Эти языки не позволяли абстрактному типу данных наследовать от другого типа данных.

Это означает, что можно было определять столько типов данных, сколько было нужно, но не нельзя было объявить, что один тип является расширением другого типа.

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

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

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

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

Файлы классов заменили стандартные файлы в C и Modula-2.

Каждый класс определяет тип со связанными данными и функциями.

Эти функции также известны как методы.

Класс действует как фабрика, создавая отдельные объекты определенного типа.

Это позволяет разделять данные и как ими можно манипулировать в отдельные классы.

Объектно-ориентированное программирование стало преобладающей парадигмой программирования.

Популярные современные языки, такие как Java, C ++ и C #, основаны на объектах.



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

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

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

В традиционных методах анализа два аспекта – функции и данные – рассматриваются отдельно.

Основными задачами объектно-ориентированного анализа (OOA) являются:

– Идентификация объектов

– Организация объектов путем создания диаграммы объектной модели

– Определение внутренних объектов или атрибутов объекта

– Определение поведения объектов, т. е. действий объектов

– Описание взаимодействия объектов



Объектно-ориентированный дизайн (OOD) предполагает реализацию концептуальной модели, созданной при объектно-ориентированном анализе.

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

Детали реализации обычно включают в себя:

Реструктуризацию данных класса при необходимости,

Реализацию методов, то есть внутренних структур данных и алгоритмов,

Реализацию управления и реализацию ассоциаций.



Объектно-ориентированное программирование (ООП) – это парадигма программирования, основанная на объектах (имеющих как данные, так и методы), целью которых является использование преимуществ модульности и многоразового использования.

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

Важными чертами объектно-ориентированного программирования являются:













...
5