Владимир Волков - Программирование для карманных компьютеров

Тут можно читать онлайн Владимир Волков - Программирование для карманных компьютеров - бесплатно ознакомительный отрывок. Жанр: comp-programming. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование для карманных компьютеров
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.11/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Владимир Волков - Программирование для карманных компьютеров краткое содержание

Программирование для карманных компьютеров - описание и краткое содержание, автор Владимир Волков, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Эта книга предназначена для того, чтобы читатель смог быстро научиться создавать мощные и эффективные приложения для наладонных компьютеров Pocket PC. Рынок программ для карманных компьютеров сейчас бурно развивается, и именно в этой отрасли программист-одиночка может успешно соперничать с большими корпорациями, которые создают программное обеспечение. Прочитав эту книгу, читатель сможет уверенно и быстро разрабатывать достаточно сложные приложения для Pocket PC. Огромное количество разнообразных примеров позволит быстро совершенствоваться и развиваться, обогащая свой опыт работы.

Книга предназначена для начинающих программистов.

Программирование для карманных компьютеров - читать онлайн бесплатно ознакомительный отрывок

Программирование для карманных компьютеров - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Владимир Волков
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Также инкапсуляция позволяет назначать методам и полям класса области видимости. Области видимости определяются директивами private, protected, public и friend. Эти модификаторы будут рассматриваться ниже.

Модификатор private

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

Модификатор protected

Члены класса, объявленные как protected, сохраняют все ограничения членов класса, объявленных как private, но дочерние классы могут к ним обращаться.

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

Модификатор public

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

Модификатор friend

От обсуждения предыдущих трех директив возникает устойчивое впечатление, что классы в своем поведении очень похожи на людей. У них есть приватная зона, куда не допускается никто, зона ограниченного доступа, куда допускаются только «члены семьи», и публичная зона, которую показывают всем. Еще большее сходство с людьми классы обретают тогда, когда мы узнаем, что они могут дружить. То есть реализация языка C++ позволяет совершенно посторонним классам по-дружески (friend) получать доступ к подробностям реализации класса. Можно объявить с этим модификатором как отдельные члены класса, так и весь класс целиком. Директива friend предназначена для обеспечения доступа к отдельным классам, к private и protected областям текущего класса, к отдельным членам из этих областей, или ко всем членам класса сразу.

Упражнение 5.1 (продолжение)

22. В ранее созданном классе Dog нужно перенести поле age из области public в область private, как показано в листинге 5.11.

Листинг 5.11

class Dog {

private:

int age;

public:

Dog();

23. Теперь нужно попробовать откомпилировать проект. Но будет выведено сообщение об ошибке \'age\': cannot access private member declared in class \'Dog\'. Член класса с модификатором private не виден извне, и попытка получить к нему доступ в коде обработчика кнопки Assign обречена на неудачу.

24. Переместить поле age в область protected, как показано в листинге 5.12.

Листинг 5.12

class Dog {

protected:

int age;

public:

Dog();

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

26. Изменить метод Add класса CleverDog, как показано в листинге 5.13.

Листинг 5.13

class CleverDog: public Dog {

void Add(int x, int y){

age= 200;

};

27. Изменить обработчик щелчка на кнопке Assign, как показано в листинге 5.14. Листинг 5.14

case IDC_BUTTON3:

Dogs[0]->Add(0,0);

break;

28. После внесения этих изменений проект нормально компилируется, и нажатие кнопки Assign не приводит к возникновению ошибки. Поскольку класс Dog является базовым классом для CleverDog, то метод Add дочернего класса получает доступ к полю age, объявленному в секции protected базового класса.

Перегрузка методов

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

Упражнение 5.1 (продолжение)

29. Добавить в класс Dog еще один метод Speak(), объявление которого приведено в листинге 5.15. Этот метод почти ничем не отличается от уже существовавшего метода Speak(), кроме того, что он принимает в качестве параметра целое число и отображает его значение.

Листинг 5.15

void Speak(int x){

char mm[32];

wchar_t *szStr = L"";

wchar_t mstr[32];

sprintf(mm,"Перегрузка, значение параметра: %d", x);

mbstowcs(mstr, mm, 32);

szStr = mstr;

MessageBox(NULL, szStr, TEXT(«TUT»), 0);

};

30. Теперь нужно переписать обработчик щелчка на кнопке Assign, как показано в листинге 5.16. Листинг 5.16

case IDC_BUTTON3:

Dogs[0]->Speak();

Dogs[0]->Speak(350);

break;

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

Приведение типов

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

byte x = 12; float y = x;

Также можно использовать явное приведение типов. Оно позволяет приводить один тип к другому при возможности потери или искажения информации. В этом случае ответственность за возможную потерю информации перекладывается на плечи программиста. Явное приведение типов выполняется при помощи оператора (). Следующий фрагмент кода демонстрирует его использование.

(const unsigned short *)szStr

Но С++ не может ограничиваться этими двумя способами приведения типов. В С++ есть еще четыре оператора приведения типа. Прежде всего следует рассмотреть оператор const_cast. Если есть указатель, объявленный с модификатором const, и его нужно передать в качестве аргумента методу, в котором указатель принимается без этого модификатора, то нужно использовать оператор const_cast. Этот оператор удаляет модификатор const из объявления передаваемого указателя. Синтаксис применения этого оператора показан ниже.

const_cast(exp)

В параметре type указывается тип, к которому приводится константа exp. Предположим, что есть некоторая функция, которая принимает в качестве аргумента указатель на int.

void my_func(int *x);

Помимо этого есть константа const int x, значение которой нужно передать в качестве аргумента в эту функцию. Вызов my_func(&x) закончится ошибкой компиляции, поскольку объявленный и передаваемый типы не соответствуют. А с преобразованием const_cast проблем не будет:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Владимир Волков читать все книги автора по порядку

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




Программирование для карманных компьютеров отзывы


Отзывы читателей о книге Программирование для карманных компьютеров, автор: Владимир Волков. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x