Как использовать объектно-ориентированный дизайн в приложениях iOS

Как использовать объектно-ориентированный дизайн в iOS-приложениях - манекены

Объектно-ориентированный дизайн в iOS - это другой способ разработки программ, где поведение связано с объектами. Чтобы проиллюстрировать, рассмотрите вопрос о действиях, связанных с приготовлением чая и супа. Тем не менее, не сразу бросайтесь в действии, действуйте как детектив, входящий в место преступления. Шаг назад, осмотрите домен (кухню) и попытайтесь понять, что в нем. Другими словами, подумайте объекты сначала .

  • Вы видите чайник. Вы рассматриваете чайник некоторое время, а затем говорите: «Я могу добавить к нему воду; Я могу вылить из него воду. «

  • Ты смотришь на чайник. Как только оглядывается назад, вы думаете: «Я тоже могу добавить к нему воду и вылить из нее воду, как и я, с чайником. «

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

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

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

Итак, вы делаете запустить возможность рецепта. Вы также создаете настройку и очистки обязанностей объекта рецепта. Имеет ли рецепт атрибуты? Что относительно его автора (строка )? Или сколько людей он обслуживает ( целое число )? Наконец, рецепты, очевидно, имеют иерархию обобщений: Making Tea и Making Soup являются специализациями универсального рецепта .

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

Вид объекта Возможности Атрибуты Обобщения
Судно Добавить жидкость; Вылейте жидкость Объем, цвет, материал
Чайник Возможности сосуда (то есть Add и Pour) Атрибуты сосуда Судно
Tureen Все возможности сосуда Атрибуты сосуда Судно
Чайник Все возможности сосуда; Boil Атрибуты сосуда Судно
Кубок Все возможности судна; Напиток от Атрибуты сосуда ; Вы можете пить от
Bowl Все возможности судна; Ешьте с ложкой Атрибуты сосуда Судно; Вы можете потреблять жидкости, которые он держит, используя ложку
Плита Наденьте сосуд; Включить; Выключить; Установить уровень Цвет
Смеситель Открыть; Закрыть Цвет
Чай Крутой Тип Пищевой продукт
Буйон Крутой Вкус Пищевой товар
Часы Подождите
Рецепт Настройка; Бег; Очистка Уровень сложности; Создатель; Количество поданных людей
Сделать чай Обязанности рецепта Атрибуты рецепта; Количество чашек Рецепт
Сделать суп Обязанности рецепта Атрибуты рецепта; Количество чаш Рецепт

Запись, подобная Все возможности сосуда для объекта Кубка означают, что Кубок понимается автоматически с возможностью добавления жидкости и выливания, поскольку это сосуд ,Кроме того, у Кубка есть возможность выпить. Другими словами, вы можете делать больше с Кубком, чем с обычным старым судном.

Чтобы выразить это на терминологии ОО, судно является обобщением Кубка, тогда как Кубок является специализацией судна.

Объектно-ориентированный рецепт MakeTea

 @interface TeaRecipe: рецепт // Make Tea - это своего рода рецепт @implementation TeaRecipe + Setup; {...} // Устанавливает рецепт + Выполнить: (int) NumberOfCups; {// это метод экземпляра NSArray * TeaCups; // Объявляем массив чашек [Faucet Open] [Kettle AddLiquid: (NumberOfCups * CUPVOLUME)]; [Плита PutVesselOn: Чайник]; [Плита TurnOn]; Для (i = 1; i <= numberOfCups; i ++) {[TeaPot Add: Tea Quantity: @ "1 ложка"];} Хотя (! [Kettle IsBoiling]); // Продолжаем цикл до кипения воды [Чайник PourWaterFrom: Чайник]; [Ожидание часов: @ "5 минут"]; Для (i = 1; i <= numberOfCups; i ++) [Kettle Pour: [TeaCups objectAtIndex: i]]; NSLog («Наслаждайтесь чаем»);} // End MakeTea + Cleanup; {...} // очищается после рецепта -d 

Вы делаете две чашки чая, используя эту программу:

 MakeTea teaRecipeInstance = [[TeaRecipe alloc]; [настройка чаепития]; [teaRecipeInstance Run: 2]; [очистка чайной решетки];