Отправляет email-рассылки с помощью сервиса Sendsay

Инвестирование с нуля

  Все выпуски  

Программирование на Си и С++ с нуля 160) Изучаем объекты


Школа программирования

160) Программирование на Си/С++: Изучаем объекты

Продолжаем тему объектов.

Объект - это физическая сущность в программе, как значение 12 или 3.14. Он создается по модели, заданной классом (описанием объекта, фактически - типом данных).

Класс - это тип данных, такой же, как int или char. А число 12 - это объект, экземпляр типа int. Только тип int уже существует в языке С++ исходно, а конкретный класс (новый тип данных) программист определяет сам.

Класс объявляется в программе так:

   class имя
   {
    описание
   };

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

Поля внутри класса объявляются как обычные переменные. Методы мы рассмотрим позже.

Например, определим класс Car (автомобиль):

   class Car
   {
    double Benzin;
    double Rasst;
   };

Переменная Benzin (поле класса Car, доступное только внутри этого класса) будет хранить текущий запас горючего. Переменная Rasst (другое поле) определяет расстояние, которое машина проехала.

Поля внутри класса имеют видимость. Видимость поля определяет, как это поле будет доступно "извне" класса, а также в классах, созданных на основе данного (наследующих его характеристики).

Существует три стандартных вида видимости: public, private и protected.

public-видимость определяет поле как полностью доступное извне класса. private-видимость делает поле доступным только внутри класса (она считается видимостью по умолчанию), а protected-видимость делает элементы видимыми в классах-наследниках.

Если видимость поля явно не указана, то считается, что оно имеет видимость private - то есть недоступно извне класса. В нашем примере мы попробуем обращаться к полям класса Car "снаружи", поэтому необходимо установить public-видимость для существующих полей.

Видимость устанавливается следующей записью:

вид-видимости :

Все описания, следующие за такой записью до нового описания видимости или конца класса, считаются видимыми с указанной характеристикой.

Например:

  class Car
   {
   public:
    double Benzin;

   private:
    double Rasst;
   };

Значение поля Benzin можно считывать и менять извне класса (точнее, извне экземпляра этого класса), а значение Rasst доступно только внутри этого класса - например, в методах, если они появятся в будущем.

Создание объектов.

После того, как класс (новый тип данных) в программе описан, можно его использовать для создания объектов (существующих в программе экземпляров класса). Переменная класса Car определяется стандартным способом:

Car car1;

Можно сразу определять несколько переменных:

Car jeep, zaporozhetc;

Однако в отличие от переменных базовых типов переменные-объекты устроены немного по другому. Они хранят не сам объект, а лишь ссылку на него. Объекты могут быть разного размера, и их удобнее хранить в отдельной области памяти, называемой КУЧА. В этой куче выделяется место для создаваемого объекта, а затем, после удаления объекта, освобождается.

Поэтому после описания переменной типа класс необходимо еще создать сам объект, и занести ссылку на него в эту переменную. Создание объекта выполняется командой new. Общий синтаксис таков:

переменная = new имя-класса ;

В переменную запишется ссылка на созданный объект, а не сам объект. По этой причине переменные классов надо описывать как указатели на экземпляры классов.

Например:

   Car* jeep;
   jeep = new Car;

Теперь к полям jeep (которые определены как public) можно обращаться из внешнего кода:

   jeep->Benzin = 100;

Удаление объекта выполняют командой delete:

   Car* jeep; // объявили
   jeep = new Car; // создали
   jeep->Benzin = 100; // обработали
   delete jeep; // удалили

В следующем занятии изучим методы классов.


(c) 2004-2007 Сергей Бобровский : bo собака russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/

Неофициальный сайт поддержки (со срочными вопросами - сюда):
www.prog-begin.net.ru.


Мои книги (учебные курсы) "Технологии Delphi / C++ / C#. Разработка приложений для бизнеса".
http://shop.piter.com/display.phtml?a_id=17681&web_ok=all

Все эти учебные курсы рассчитаны не только на разработчиков, но и на всех тех, кто хочет стать ИТ-менеджером. Для этого как минимум нужно иметь общее представление о современных технологиях разработки и их истории и владеть соответствующей терминологией.
В книгах описаны десятки технологий, каждой из которых посвящены отдельные книги. Таким образом, купив один учебный курс, вы существенно сэкономите :) В книгах полностью описаны:
- Delphi (версия 2006, полностью совместимая с Turbo Delphi) для обеих платформ - Win32 и .NET;
- C# (новый язык Microsoft, на котором базируется платформа .NET и все новые версии Windows);
- C++ для платформы Win32.
Охвачены также темы работы с файлами на этих платформах, создания файл-серверных, клиент-серверных, распределенных приложений, веб-программ (Indy, ASP.NET, веб-сервисы). Описаны языки SQL и OCL. Немало глав посвящены истории программирования и различных технологий. Особое внимание уделено созданию программ с помощью технологии ECO и языка моделирования UML - программы фактически рисуются, и теперь даже для создания корпоративных приложений и их переноса в Интернет не обязательно знать программирование!
Отдельная часть отведена технологиям организации групповой работы, управления требованиями, контроля версий, локализации и тестирования.
Тут подробнее про книги.

Мои книги, которые пока доступны в продаже:


Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное