|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Методические указания. 1. Пример определения класса1. Пример определения класса. const int LNAME=25; class STUDENT{ char name[LNAME]; // имя int age; // возраст float grade; // рейтинг public: STUDENT(); // конструктор без параметров STUDENT(char*,int,float); // конструктор с параметрами STUDENT(const STUDENT&); // конструктор копирования ~STUDENT(); char * GetName(); int GetAge() const; float GetGrade() const; void SetName(char*); void SetAge(int); void SetGrade(float); void Set(char*,int,float); void Show(); }; Более профессионально определение поля name типа указатель: char* name. Однако в этом случае реализация компонентов-функций ус- ложняется. 2. Пример реализации конструктора с выдачей сообщения. STUDENT::STUDENT(char*NAME,int AGE,float GRADE) { strcpy(name,NAME); age=AGE; grade=GRADE; cout<< \nКонструктор с параметрами вызван для объекта <<this<<endl; }
3. Следует предусмотреть в программе все возможные способы вызова конструктора копирования. Напоминаем, что конструктор копирования вызывается: а) при использовании объекта для инициализации другого объекта Пример. STUDENT a(“Иванов”,19,50), b=a; б) когда объект передается функции по значению Пример. void View(STUDENT a){a.Show;} в) при построении временного объекта как возвращаемого значения функции Пример. STUDENT NoName(STUDENT & student) {STUDENT temp(student); temp.SetName(“NoName”); return temp;} STUDENT c=NoName(a); 4. В программе необходимо предусмотреть размещение объектов как в статической, так и в динамической памяти, а также создание массивов объектов. Примеры. а) массив студентов размещается в статической памяти STUDENT gruppa[3]; gruppa[0].Set(“Иванов”,19,50); и т.д. или STUDENT gruppa[3]={STUDENT(“Иванов”,19,50), STUDENT(“Петрова”,18,25.5), STUDENT(“Сидоров”,18,45.5)}; б) массив студентов размещается в динамической памяти STUDENT *p; p=new STUDENT [3]; p-> Set(“Иванов”,19,50); и т.д. 5. Пример использования указателя на компонентную функцию void (STUDENT::*pf)(); pf=&STUDENT::Show; (p[1].*pf)(); 6. Программа использует три файла: • заголовочный h-файл с определением класса, • cpp-файл с реализацией класса, • сpp-файл демонстрационной программы. Для предотвращения многократного включения файла-заголовка следует использовать директивы препроцессора #ifndef STUDENTH #define STUDENTH // модуль STUDENT.H ... #endif
Содержание отчета. 2. Постановка задачи. Следует дать конкретную постановку, т.е. указать, какой класс должен быть реализован, какие должны быть в нем конструкторы, компоненты-функции и т.д. 3. Определение пользовательского класса с комментариями. 4. Реализация конструкторов и деструктора. 5. Фрагмент программы, показывающий использование указателя на объект и указателя на функцию с объяснением. 6. Листинг основной программы, в котором должно быть указано, в каком месте и какой конструктор или деструктор вызываются.
Приложение. Варианты заданий. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |