Нужна помощь в разработке приложений (MVC, классы и т. Д.) - PullRequest
1 голос
/ 10 июня 2011

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

Приложение должно быть приложением на основе документов (открыть / сохранить рецепты в Beer XML ). В главном окне есть несколько текстовых полей для установки информации, такой как: имя, тип пива, объем и т. Д. Затем есть несколько табличных представлений с массивами для: солода, хмеля и специй, каждое из которых имеет свой собственный лист для добавления значений.

Как мне делать уроки? Как это?

  • NSDocument class (с открытым / сохраненным XML-кодом)
  • (3x) NSWindowController (для каждого листа: солод, хмель, специи)
  • (3x) NSArrayController (для каждого вида таблицы: солод, хмель, специи)

Должны ли массивы, управляемые объектами NSArrayController, быть отдельными классами (в перспективе MVC (как модель)) или они должны быть включены в их класс NSArrayController?

Ответы [ 2 ]

0 голосов
/ 11 июня 2011

Предполагая, что это ваши требования,

  • Приложение-редактор, которое использует xml (beerxml) в качестве источника данных.
  • Средство просмотра, отображающее доступные данные (в табличном формате или каклисты)
  • Пользователь может добавлять / удалять / редактировать записи в каждом xml
  • Существует связь между xmls (источниками данных) (не уверен ...)

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

Например, receipes.xml используется для обозначения рецептов, используемых для изготовления продукта.Чтобы создать класс для этого, пройдите xml.Вы можете идентифицировать следующие классы данных (объекты, то есть экземпляры классов, представляют сущность реального мира, в то время как класс больше похож на шаблон / чертеж для объекта):

  • Recipe (основной класс)
  • Хмель
  • Ферментируемый
  • Дрожжи
  • Вода
  • Стиль
  • Оборудование
  • Маш
  • MashStep и т. Д.

После того, как вы определили классы, которые формируют вашу модель данных (информационное хранилище), определите свойства и поведение каждого класса.Например, класс Yeast будет содержать свойства Name, Version и т. Д.Не беспокойтесь о типе свойства (строка, целое число и т. Д.).

Чтобы идентифицировать контроллеры, просмотрите приложение с точки зрения пользователя.Каковы варианты использования (что пользователь делает с приложением? Редактировать? Добавить? И т. Д.).Эти варианты использования непреднамеренно потребуют обработки информации в определенном потоке (последовательности).Информация доступна в ваших модельных классах.Контроллер будет вызывать операции над модельными классами и определять взаимодействие между ними.

Например, предположим, что есть вариант использования, который требует добавления новых дрожжей в систему.Затем контроллер создаст новый экземпляр класса Yeast и заполнит его значениями, предоставленными пользователем (после некоторой проверки).Затем созданные дрожжи будут добавлены в ListOfAvailableYeasts и предоставлены другим классам.

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

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

Если вам нужны рекомендации по созданию классов из xml, посмотрите на xsd.exe инструмент.Вы можете сгенерировать xsd (схему xml) из xml и затем использовать этот xsd для генерации иерархии классов для xml (я предлагаю начать с recipes.xml).Вы можете изменить сгенерированные классы по вашему требованию.

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

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class RECIPESRECIPE {

    private string nAMEField;

    private string vERSIONField;

    private string tYPEField;

    private string bREWERField;

    private string aSST_BREWERField;

    private string bATCH_SIZEField;
...
}


Надеюсь, что этого достаточно для начала работы.

0 голосов
/ 10 июня 2011

Я бы начал с изучения нескольких документов Apple: Объектно-ориентированное программирование с Objective-C и Руководство по основам какао .

Я бы также посмотрел на использование Core Data.При относительно небольшой реализации у вас есть очень мощная структура данных (M в MVC), которую легко реализовать с помощью ваших контроллеров представления и просмотра (V & C): Руководство по программированию базовых данных

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

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...