KnigkinDom.org» » »📕 Интернет-журнал "Домашняя лаборатория", 2007 №10 - Журнал «Домашняя лаборатория»

Интернет-журнал "Домашняя лаборатория", 2007 №10 - Журнал «Домашняя лаборатория»

Книгу Интернет-журнал "Домашняя лаборатория", 2007 №10 - Журнал «Домашняя лаборатория» читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

1 ... 144 145 146 147 148 149 150 151 152 ... 188
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
иметь в качестве своих членов(в предыдущем примере это s и top) не только переменные но и функции. Для этого объявление функций вставляется в объявление структуры, например предыдущий пример стека можно объявить так:

struct stack

{

   char s [1000];

   int top;

   void reset()

   {

      top = -1;

   }

   void push(char c)

   {

      ++top;

      s[top] = c;

   }

   char pop()

   {

      --top;

      return s[top];

   }

};

Функции-члены записаны так же как обычные функции. Отличие лишь в том что теперь они могут использовать переменные и функции "как есть", им не нужно передавать в качестве параметров такие переменные как s и top. Обращаются к функциям-членам так же как и к обычным членам: с помощью оператора".", а указатели с помощью оператора "->". Приведем несколько фрагментов кода:

stack My_stack;

My_stack.reset();

stаск * pMy_stack = &My_stack;

pMy_stack->push('A');

Переменные структур и классов (позже мы узнаем что это) принято называть — "объектами", с этой минуты и мы их будем так называть.

Пример 13

Функции-члены, которые определены внутри структуры, являются встраиваемыми. Обычно, только маленькие, часто используемые функции определяются внутри структуры (как в предыдущем уроке). Что бы определить функцию-член вне структуры используется оператор Давайте это наглядно покажем, переделав структуру из предыдущего урока.

struct stack

{

   char s [1000];

   int top;

   void reset();

   void push(char c);

   char pop();

};

void stack::reset()

{

   top = -1;

}

void stack::push(char c)

{

   ++top;

   s[top] = c;

}

char s tack::pop()

{

   --top;

   return s[top];

}

Запись void stack::reset() говорит, что функция reset() принадлежит структуре stack. Благодаря оператору"::" мы можем иметь одинаковые имена функций для разных типов структур.

Пример 14

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

Напишем структуру, характеризующую квартиру. В ней будут такие члены как number (номер квартиры), count_room (количество комнат), floor (этаж), area (площадь), price (цена), status (приватизирована или нет), эти члены мы сделаем закрытыми, а для доступа к ним напишем функции.

struct kwart

{

    public:

    int GetNumber();

    int GetCountRoom ();

    int GetFloor();

    int GetArea();

    int GetPrice();

    bool GetStatus();

    void SetNumber(int);

    void SetCountRoom(int);

    void SetFloor(int);

    void SetArea(int);

    void SetPrice(int);

    void SetStatus(bool);

private:

    int number;

    int count_room;

    int floor;

    int area;

    int price;

    bool status;

};

int kwart::GetNumber()

{

     return number;

}

int kwart::GetCountRoom()

{

     return count_room;

}

int kwart::GetFloor()

{

     return floor; int kwart::GetArea()

{

     return area; int kwart::GetPrice()

{

     return price;

}

bool kwart::GetStatus()

{

     return status;

}

void kwart::SetNumber(int num)

{

     number = num;

void kwart::SetCountRoom(int count)

}

     count_room = count;

}

void kwart::SetFloor(int num)

{

     floor = num;

}

void kwart::SetArea(int num)

{

     area = num;

void kwart::SetPrice(int num)

{

      price = num;

}

void kwart::SetStatus(bool stat)

{

      status = stat;

}

Теперь если мы напишем:

kwart kw;

int i = kw.area;

это будет ошибкой, так как переменная area — закрытая, если мы хотим присвоить переменной i ее значение, то нужно воспользоваться функцией GetArea():

kwart kw;

kw.SetArea(20);

int i = kw.GetArea();

А вот в этом фрагменте уже все правильно. Сначала мы переменной area с по мощью функции SetArea() присваиваем значение 20, а потом переменной i присваиваем значение area.

ПОКА ВСЕ.

СПРАВОЧНИК

Команды DOS

От редакции: Нет, это не устарело. Команды DOS по-прежнему входят во все операционные системы Microsoft. Время от времени их приходится использовать, иногда по необходимости, иногда в целях удобства. Но дело не в этом. Дело в том, что компьютеры морально стареют. Сегодня трудно найти человека, работающего на IBM-XT или на продвинутом IBM-АТ. Тогда как для целей автоматизации эксперимента, в рамках домашней лаборатории (если вы, конечно, не автоматизируете ТОКАМАК), они подходят как нельзя лучше. Эти компьютеры уже фактически бесплатны, потребляют минимум электроэнергии, надежны (ненадежные уже покоятся на свалке) и могут быть использованы вместо микроконтроллеров. Для работы они зачастую даже не нуждаются в жестком диске, достаточно одной-двух дискеток. Двадцать лет назад они использовались для управления достаточно сложными установками и производствами. И до сих пор работают в этом качестве. Более того, ответственную установку лучше не доверять быстродействующему, а значит и сильно усложненному компьютеру, с процессором, который в любой момент может полететь, из-за выхода из строя китайского вентилятора. И уж работающему под WindowsXP, тем более. Ну, а общение с IBM-XT, как вы, наверное, помните, осуществлялось как раз с помощью команд операционной

1 ... 144 145 146 147 148 149 150 151 152 ... 188
Перейти на страницу:
Отзывы - 0

Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.


Партнер

Новые отзывы

  1. Christine Christine26 июнь 01:23 ​​​​Сначала было тежеловта читать, но потом всё изменилось, я с удовольствием прочитала, спасибо за книгу. Я прочитала весь цикл... Опасное влечение - Полина Лоранс
  2. Тамаринда Тамаринда21 июнь 12:33 Редко что-то цепляет, но тут было всё живое, жизненное, чувственное, сильное, читайте, не пожалеете о своём времени...... Хрупкая связь - Ольга Джокер
  3. Гость Марина Гость Марина20 июнь 06:08 Книга очень понравилась, хотя и длинная. Героиня сильная личность. Да и герой не подкачал. ... Странная - Татьяна Александровна Шумкова
Все комметарии
Новое в блоге