Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework
- Название:Программирование мобильных устройств на платформе .NET Compact Framework
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2006
- Город:Москва • Санкт-Петербург • Киев
- ISBN:5-8459-0989-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework краткое содержание
Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки программного обеспечения с практическими примерами применения на языках С# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов и использование XML.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.
Программирование мобильных устройств на платформе .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
InsertEnglishGermanWordPair(cmd, "Cat", "Katze",
VocabularyWord.WordGender.Feminine, VocabularyWord.WordFunction.Noun);
//Имена существительные среднего рода
InsertEnglishGermanWordPair(cmd, "Car", "Auto",
VocabularyWord.WordGender.Neuter, VocabularyWord.WordFunction.Noun);
InsertEnglishGermanWordPair(cmd, "Book", "Buch",
VocabularyWord.WordGender.Neuter, VocabularyWord.WordFunction.Noun);
}
//----------------------------
//Помещает слово в базу данных
//----------------------------
static private void InsertEnglishGermanWordPair(
System.Data.SqlServerCe.SqlCeCommand cmd,
string englishWord, string germanWord,
VocabularyWord.WordGender germanWordGender,
VocabularyWord.WordFunction wordFunction) {
cmd.CommandText = "INSERT INTO " + TRANSLATIONTABLE_NAME + "(" +
TRANSLATIONTABLE ENGLISH_COLUMN + ", " +
TRANSLATIONTABLE_GERMAN_COLUMN + ", " +
TRANSLATIONTABLE_GERMANGENDER_COLUMN + ", " +
TRANSLATIONTABLE_WORDFUNCTION_COLUMN + ") VALUES ('" +
englishWord + "', '" + germanWord + "', '" +
System.Convert.ToString(((int) germanWordGender))+ "', '" +
System.Convert.ToString(((int) wordFunction)) + "' )";
cmd.ExecuteNonQuery();
}
} //Конец класса
//-----------------------------------------------------------------
//Код управления данными в памяти
//
//Этот код предназначен для управления представлением кода в памяти
//-----------------------------------------------------------------
using System;
internal class GameData {
//Массив списков для сохранения загружаемых данных
private static System.Collections.ArrayList m_vocabularyWords All;
private static System.Collections.ArrayList m_vocabularyWords_Nouns;
private static System.Collections.ArrayList m_vocabularyWords_Verbs;
private static System.Collections.ArrayList m_vocabularyWords_Adjectives;
private static System.Collections.ArrayList m_vocabularyWords_Adverbs;
private static System.Collections.ArrayList m_vocabularyWords_Prepositions;
public static bool isGameDataInitialized {
//Инициализация данных игры, если слова загружены
get {
return (m_vocabularyWords_All != null);
}
}
//Возвращает коллекцию всех имеющихся слов
public static System.Collections.ArrayList AllWords {
get {
//Загрузить данные, если они не были инициализированы
if (m_vocabularyWords_All == null) {
InitializeGameVocabulary();
}
return m_vocabularyWords_All;
}
}
//Возвращает коллекцию всех имеющихся имен существительных
public static System.Collections.ArrayList Nouns {
get {
//Загрузить данные, если они не были инициализированы
if (m_vocabularyWords_Nouns == null) {
InitializeGameVocabulary();
}
return m_vocabularyWords_Nouns;
}
}
//==========================================================
//Загружает данные из нашей базы данных
//==========================================================
static public void InitializeGameVocabulary() {
//Создать новый массив списков для хранения наших слов
m_vocabularyWords_All = new System.Collections.ArrayList();
m_vocabularyWords_Nouns = new System.Collections.ArrayList();
m_vocabularyWords Verbs = new System.Collections.ArrayList();
m_vocabularyWords_Adjectives = new System.Collections.ArrayList();
m_vocabularyWords_Adverbs = new System.Collections.ArrayList();
m_vocabularyWords_Prepositions = new System.Collections.ArrayList();
System.Data.IDataReader dataReader;
dataReader = DatabaseAccess.GetListOfWords();
VocabularyWord newWord;
//Обойти все записи
while (dataReader.Read()) {
//Поместить данные для только что считанного слова в класс
newWord = new VocabularyWord(
dataReader.GetString(DatabaseAccess.DS_WORDS_COLUMNINDEX_ENGLISHWORD),
dataReader.GetString(DatabaseAccess.DS_WORDS COLUMNINDEX_GERMANWORD),
(VocabularyWord.WordGender)dataReader.GetInt32(DatabaseAccess.DS_WORDS_COLUMNINDEX_GERMANGENDER),
(VocabularyWord.WordFunction)dataReader.GetInt32(DatabaseAccess.DS_WORDS_COLUMNINDEX_WORDFUNCTION));
//Добавить новое слово в массив списков
m_vocabularyWords_All.Add(newWord);
//Слова могут принадлежать нескольким группам, поэтому необходимо
//выполнить проверку с использованием операции логического И
//для проверки того, что слово относится к данной категории
if ((newWord.getWordFunction & VocabularyWord.WordFunction.Noun) ! = 0) {
m_vocabularyWords_Nouns.Add(newWord);
}
if ((newWord.getWordFunction & VocabularyWord.WordFunction.Verb) != 0) {
m_vocabularyWords_Verbs.Add(newWord);
}
if ((newWord.getWordFunction & VocabularyWord.WordFunction.Adjective) != 0) {
m_vocabularyWords Adjectives.Add(newWord);
}
if ((newWord.getWordFunction & VocabularyWord.WordFunction.Adverb) != 0) {
m_vocabularyWords Adverbs.Add(newWord);
}
if ((newWord.getWordFunction & VocabularyWord.WordFunction.Preposition) != 0) {
m_vocabularyWords_Prepositions.Add(newWord);
}
}
//Закрыть объект
DataReader dataReader.Close();
}
} //Конец класса
using System;
//------------------------------
//Хранит данные слова из словаря
//------------------------------
internal class VocabularyWord {
[System.FlagsAttribute] //Значения можно объединять с помощью операции
//логического ИЛИ
public enum WordFunction {
Noun = 1,
Verb = 2,
Pronoun = 4,
Adverb = 8,
Adjective = 16,
Preposition = 32,
Phrase = 64
}
public enum WordGender {
notApplicable = 0,
Masculine = 1,
Feminine = 2,
Neuter = 3,
}
private string m_englishWord;
private string m_germanWord;
private VocabularyWord.WordGender m_germanGender;
private VocabularyWord.WordFunction m_wordFunction;
public string EnglishWord{
get {
return m_englishWord;
}
}
public string GermanWord{
get {
return m_germanWord;
}
}
public WordFunction getWordFunction {
get {
return m_wordFunction;
}
}
public WordGender GermanGender{
get {
return m_germanGender;
}
}
//-----------------------------------------------------------------
//Возвращает слово на немецком языке, которому предшествует артикль
//{например, 'der', 'die', 'das'), если он существует
//-----------------------------------------------------------------
public string GermanWordWithArticleIfExists {
get {
if (m_germanGender == WordGender.notApplicable) {
return this.GermanWord;
}
return this.GenderArticle +" " + this.GermanWord;
}
} //Конец свойства
public string GenderArticle {
get {
switch (m_germanGender) {
case WordGender.Masculine:
return "der";
case WordGender.Feminine:
return "die";
case WordGender.Neuter:
return "das";
}
return "";
}
}
public VocabularyWord(string enlgishWord, string germanWord, WordGender germanGender, WordFunction wordFunction) {
m_englishWord = enlgishWord;
m_germanWord = germanWord;
m_germanGender = germanGender;
m_wordFunction = wordFunction;
}
} //Конец класса
Различные способы хранения долговременных данных
Существует много различных способов хранения данных мобильных приложений. Данные можно сохранять в двоичных файлах, текстовых файлах и базах данных. (Базу данных можно считать частным случаем двоичного файла.) Хранение данных может быть реализовано вне устройства или на устройстве. Долговременные данные могут синхронизироваться между устройствами и серверами. Ниже описаны преимущества и недостатки наиболее распространенных вариантов хранения данных, а также приведены рекомендации относительно того, как подходить к принятию решений относительно организации долговременного хранения данных при проектировании приложений для мобильных устройств.
Читать дальшеИнтервал:
Закладка: