12084

Классы и объекты в С++

Лабораторная работа

Информатика, кибернетика и программирование

Отчёт по лабораторной работе №1 По дисциплине Программирование Тема: Классы и объекты в С Вариант №8 Задачи. 1. Определить пользовательский класс в соответствии с вариантом задания смотри приложение. 2. Определить в классе следующие конструкторы: без пар

Русский

2013-04-24

21.75 KB

93 чел.

Отчёт по лабораторной работе №1

По дисциплине «Программирование»

Тема: «Классы и объекты в С++»

Вариант №8

Задачи.

1. Определить пользовательский класс в соответствии с вариантом задания (смотри приложение).

2. Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.

3. Определить в классе деструктор.

4. Определить в классе компоненты-функции для просмотра и установки полей данных.

5. Определить указатель на компоненту-функцию.

6. Определить указатель на экземпляр класса.

7. Написать демонстрационную программу, в которой создаются и разрушаются объекты пользовательского класса и каждый вызов конструктора и деструктора сопровождается выдачей соответствующего сообщения (какой объект какой конструктор или деструктор вызвал).

8. Показать в программе использование указателя на объект и указателя на компоненту-функцию.

Определение пользовательского класса с комментариями.

#ifndef Tovarh

#define Tovarh

class Tovar

{

char* name; // Название Товара

int kol; // Кол-во товара

float price; // Цена

public:

Tovar (); // Конструктор без параметров

Tovar (char*,int,float); // Конструктор с параметрами

Tovar (const Tovar&); // Конструктор копирования

~Tovar (); // Деструктор

char * GetName() ; // Функция получения имени

int GetKol(); // Функция получения кол-ва

float GetPrice(); // Функция получения цены

void SetName(char*); // Функция изменения имени

void SetKol(int); // Функция изменения кол-ва

void SetPrice(float); // Функция изменения цены

void Set(char*,int,float); // Функция изменения всех параметров

void Show(); // Функция показа всех параметров

};

#endif

Реализация конструкторов и деструктора.

Tovar::Tovar ()

{

setlocale (0,"");

cout<< "\nКонструктор без параметров вызван для объекта. " << this <<endl;

name = new char('\0'); // Выделяем память под \0

kol=0;price=0;

}

Tovar::Tovar (char* NAME,int KOL,float PRICE)

{

setlocale (0,"");

cout<< "\nКонструктор c параметрами вызван для объекта. " << this << endl;

name = new char [strlen(NAME)+1];

strcpy (name,NAME);

kol=KOL;

price=PRICE;

}

Tovar::Tovar (const Tovar& ob)

{

setlocale (0,"");

cout<< "\nКонструктор копирования вызван для объекта. " << this <<endl;

name = new char [strlen(ob.name)+1];

strcpy (name,ob.name);

kol = ob.kol;

price = ob.price;

}

Tovar::~Tovar ()

{

setlocale (0,"");

cout << "\nВызов деструктора. " << this << endl;

 delete name;

}

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

void (Tovar::*pf)(); // Инициализируем указатель

pf=&Tovar::Show; // Записываем адрес функции показа всех параметров

(zavoz[2].*pf)(); // Вызов функции Show через указатель

Программа.

void main ()

{

Tovar(); // Конструктор без параметров, инициализация переменых

 

Tovar one("Ноутбук",13,17500); // Конструктор с параметрами

Tovar two=one; // Конструктор копирования

two.Show(); // Получение все параметров

one.Set("Компьютер",15,20000); // Изменение все параметров

 one.GetName();

one.GetKol();

one.GetPrice();

Tovar thri=two;

thri.SetName ("Планшет");

thri.SetPrice (15000);

thri.Show();

Tovar zavoz[3]; // массив студентов размещается в статической памяти

 zavoz[0].Set("Флешки",50,250);

zavoz[0].Show();

zavoz[1].Set("Клавиатуры",23,880);

zavoz[1].Show();

zavoz[2].Set("Мышки",17,300);

 

 void (Tovar::*pf)();

 pf=&Tovar::Show; // Записываем адрес функции показа всех параметров

(zavoz[2].*pf)(); // Вызов функции Show через указатель

Tovar *z; // массив студентов размещается в динамической памяти

 z = new Tovar [3];

z[0].Set("Кулеры",30,150);

z[0].Show();

z[1].Set("USB Лампочки",30,100);

z[1].Show();

z[2].Set("Диски BD",30,150);

 

 (z[2].*pf)(); // Вызов функции Show через указатель

 delete []z; // Удаление массива из динамической памяти, если этого не сделать он останеться.

}


 

А также другие работы, которые могут Вас заинтересовать

56417. Внедрени новых композиционных материалов на основе карбонитрида титана на ЗАО «Чудовоагрохимсервис» для повышения качества услуг по ремонту сельхозтехники 1.11 MB
  Благодаря использованию существующего в настоящее время оборудованию, материалов и технологий газотермического напыления, стало возможным значительно снизить или исключить влияние таких факторов, как эрозия, коррозия (в том числе высокотемпературная), кавитация и другие на изнашивание деталей.
56418. ПОВЫШЕНИЕ КОНКУРЕНТОСПОСОБНОСТИ ООО «ОМСКТЕПЛОКОМПЛЕКТ 636 KB
  В данных обстоятельствах, которые сложились для удачной конкурентной борьбы фирмам необходимо не только улучшать технологии и технологическое оборудование...
56419. Тести до повісті О.Кобилянської «Земля» 59.5 KB
  Чим займався Івоніка протягом життя Був стельмахом Був землеробом Був сільським головою Був шинкарем 3. Хто головний герой повісті Івоніка Михайло Сава Земля 4. Назвати дійові особи повісті Рахіра Сава Анна Петро Івоніка Марійка...
56420. Создание видеоролика о специальности «Информатика» 143 KB
  Обозначенное противоречие определяет объективную необходимость создания видеоролика о специальности «Информатика», также позволили выделить проблему: каким должен быть видеоролик для наиболее полной иллюстрации специальности «Информатика».
56421. Разработка и исследование модели разделителя падающих и отражённых волн на основе направленного моста 2.79 MB
  Одними из наиболее точных приборов для измерения СВЧ трактов являются векторные анализаторы цепей (ВАЦ). Цепи, которые могут быть проанализированы с помощью ВАЦ...
56423. Модели комбинаторики сниженной стилистической маркированности слов на примере произведений Сью Таунсенд «The Secret Diary of Adrian Mole, Aged 13¾» «The Growing Pains of Adrian Mole» и «The True Confessions of Adrian Albert Mole» 549 KB
  Объектом исследования данной работы являются слова сниженной стилистической маркированности, присущие художественному дискурсу С. Таунсенд.
56424. Інфінітивні групи. Тести. (10-11 класи) 102.5 KB
  Ich habe... meine Hausaufgaben zu machen. meine Hausaufgaben zu mache. zu machen meine Hausaufgaben.
56425. Проектирование ресторана «Атлантида» 1.33 MB
  В настоящее время общественное питание достигло огромного прогресса, который не останавливается, а продолжает развиваться все с большей и большей скоростью. Это доказывается появлением и открытием большого количества ресторанов и баров разного класса, кафе, столовых, всевозможных закусочных и других предприятий