Санкт-Петербургский Государственный Университет Математико-механический факультет





НазваниеСанкт-Петербургский Государственный Университет Математико-механический факультет
страница12/13
Дата публикации16.08.2013
Размер0.61 Mb.
ТипДипломная работа
100-bal.ru > Информатика > Дипломная работа
1   ...   5   6   7   8   9   10   11   12   13

Генерация в Objective C


Генерация в другой язык позволяет добиться большего уровня абстракции и не завязываться на парадигмах определенного языка. Objective C был выбран потому, что существует большое количество мобильных устройств на платформе iOS, рынок же этой платформы сильно развит.

Язык Objective C был разработан в 1986, поэтому его синтаксис кажется странным для разработчика, который пишет на C# или Java. В платформе iOS отсутствует сборщик мусора, поэтому реализация генератора для ObjC является более трудоёмким, нежели для Java.

Также в данном языке отсутствуют привычные шаблоны из C++ или дженерики из C# и Java. Поэтому это вызывает особые неудобства при использовании коллекций, так как требует приведение типов в некоторых случаях.

Задача реализации генератора в Objective C началась с разработки паттерна, который бы позволил генерировать привычные для языка Java перечисления, поскольку они отсутствуют как таковые.

Было решено генерировать класс, который имеет статические методы с названиями соответствующих значений. При вызове метода возвращается инстанс этого класса, который создается один раз для каждого элемента перечисления, содержит в себе имя значения, а также порядковый номер. Таким образом, получение какого-то значения из enum сводится к такому вызову: [MyEnum VALUE]. То есть это выглядит практически так же, как и в других языках, где есть enum и позволяет делать сравнение обычным равенством, а не вызовом метода isEquals.

Следующей задачей было найти решение, как делать асинхронные вызовы. Так как разработка на Objective C ведется не в MPS, а в XCode [26] или в новом AppCode [27], то это накладывает ограничение: невозможно написать своё решение языка асинхронных вызовов для Objetive C. Таким образом, нужно было придумать способ позволить программисту вызвать асинхронные методы и делать это удобно. Самым очевидным способом было бы создание класса, у которого есть 2 метода: onSuccess и onFailure. Но не так давно в язык Objective C были введены блоки. Другое общепринятое название для них – closure. Можно передавать их в качестве параметров асинхронному методу. Когда выполнение обращения к серверу будет завершено, будет вызван блок соответствующий success и передан в него результат.

- (void) getUserUsingSuccessBlock: (void(^)(User*)) successBlock onFailBlock: (void(^)(NSException* e)) failBlock

Листинг 12. Пример асинхронного вызова метода
В данном примере приведено описание метода, который получит пользователя. Язык Objective C является избыточным, так как вместо оператора «точка» используются квадратные скобки, также потому, что при вызове метода нужно указать названия параметров. На самом деле, названием данного метода является не «getUserUsingSuccessBlock», а более длинное: «getUserUsingSuccessBlock:onFailBlock», то есть включаются имена всех параметров.

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

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

Разработка на языке Objective C являлась трудоёмкой, поскольку в среде разработки XCode нет удобных средств для навигации по коду и его рефакторингу. Также синтаксис не является привычным. В ходе разработки генератора были изучены многие тонкости языка Objective C, исследована система управления памятью и создана оптимальная по скорости и потреблению оперативной памяти система RPC и сообщений.
1   ...   5   6   7   8   9   10   11   12   13

Похожие:

Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Математико-механический факультет
Министерством образования и науки Российской Федерации. В 2012-2013 учебном году литературное образование в школе на базовом уровне...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный морской технический университет...
Рецензия на книгу: С. А. Остроумов "Биотический механизм самоочищения пресных и морских вод: элементы теории и приложения" (Москва,...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Краснодарский государственный историко-археологический музей-заповедник им. Е. Д. Фелицына
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОбзор современных систем управления бизнес-процессами
Агапова Татьяна, математико-механический факультет, 2 курс
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПсихическое здоровье в Германии и России: Клиническая и исследовательская инициатива
Санкт-Петербургский научно-исследовательский Санкт-Петербургский государственный университет
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет asmpy ассемблер python compiled (*. pyc ) файлов
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-петербургский Государственный университет Восточный факультет Филиппов Е. А. Аннотация
Метадическая разработка интегрированного урока с использованием возможностей интерактивной доски
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПравительство Российской Федерации Санкт Петербургский государственный...
Муниципальное автономное образовательное учреждение «Средняя общеобразовательная школа №21»
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский центр научно-технической информации «Прогресс»,...
Особенности размещения государственного заказа в связи с изменениями в федеральном
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Учебно-методический комплекс по дисциплине «Биохимия молока и мяса» составлен на основе
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПрограмма по формированию навыков безопасного поведения на дорогах...
Санкт-Петербургский Государственный Политехнический Университет, Факультет Иностранных Языков
Санкт-Петербургский Государственный Университет Математико-механический факультет iconРоссийской Федерации Санкт Петербургский государственный университет Физический факультет
Цель изучения дисциплины: Обучение магистрантов аналитическим методам анализа структуры и эволюции нелинейных полей
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Факультет философии и политологии
Контрольная работа по дисциплине «Культура речи и деловое общение» является допуском студента заочной формы обучения к зачету


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск