|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Доступность компонентов классаЛабораторная работа № 4.1 КЛАССЫ И ОБЪЕКТЫ В С++ Цель. Получить практические навыки реализации классов на С++. Написать программу, в которой создаются и разрушаются объекты, определенного пользователем класса. Выполнить исследование вызовов конструкторов и деструкторов. Теоретический материал. Класс − фундаментальное понятие С++, он лежит в основе многих свойств С++. Класс предоставляет механизм для создания объектов. В классе отражены важнейшие концепции объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. С точки зрения синтаксиса, класс в С++ − это структурированный тип, образованный на основе уже существующих типов. В этом смысле класс является расширением понятия структуры. В простейшем случае класс можно определить с помощью конструкции: тип_класса имя_класса{список_членов_класса}; где тип_класса – одно из служебных слов class, struct, union; имя_класса – идентификатор; список_членов_класса – определения и описания типизированных данных и принадлежащих классу функций. Функции – это методы класса, определяющие операции над объектом. Данные – это поля объекта, образующие его структуру. Значения полей определяет состояние объекта. Примеры. struct date // дата {int month,day,year; // поля: месяц, день, год void set(int,int,int); // метод – установить дату void get(int*,int*,int*); // метод – получить дату void next(); // метод – установить следующую дату void print(); // метод – вывести дату }; struct class complex // комплексное число {double re,im; double real(){return(re);} double imag(){return(im);} void set(double x,double y){re = x; im = y;} void print(){cout<<“re = “<<re; cout<<“im = “<<im;} }; Для описания объекта класса (экземпляра класса) используется кон- струкция имя_класса имя_объекта; date today, my_birthday; date *point = &today; // указатель на объект типа date date clim[30]; // массив объектов date &name = my_birthday; // ссылка на объект В определяемые объекты входят данные, соответствующие членам данным класса. Функции − члены класса позволяют обрабатывать данные конкретных объектов класса. Обращаться к данным объекта и вызывать функции для объекта можно двумя способами. Первый с помощью “ква- лифицированных” имен: Имя_объекта. имя_данного Имя_объекта. имя_функции Например: complex x1,x2; x1.re = 1.24; x1.im = 2.3; x2.set(5.1,1.7); x1.print(); Второй способ доступа использует указатель на объект указатель_на_объект–>имя_компонента complex *point = &x1; // или point = new complex; point –>re = 1.24; point –>im = 2.3; point –>print(); Доступность компонентов класса. В рассмотренных ранее примерах классов компоненты классов являются общедоступными. В любом месте программы, где “видно” опреде ление класса, можно получить доступ к компонентам объекта класса. Темсамым не выполняется основной принцип абстракции данных – инкапсу-ляция (сокрытие) данных внутри объекта. Для изменения видимости ком-понент в определении класса можно использовать спецификаторы доступа: public, private, protected. Общедоступные (public) компоненты доступны в любой части про-граммы. Они могут использоваться любой функцией как внутри данногокласса, так и вне его. Доступ извне осуществляется через имя объекта: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |