Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_ робота_5-6_1213.doc
Скачиваний:
8
Добавлен:
23.03.2015
Размер:
104.96 Кб
Скачать

Оголошення класу cBook

Для цього внесемо до файлу Book.h – файлу специфікації класу CBook наступний програмний код:

// файл Book.h - специфікація класу CBook

#pragma once

class CBook

{

private:

char m_author [ 50 ] ; // автор

char *m_pTitle ; // вказівник на назву

int m_year ; // рік видання

public:

CBook ();

virtual ~ CBook ();

// методи встановлення значень полів

void setAuthor ( const char* ) ;

void setTitle ( const char* ) ;

void setYear ( const int ) ;

// методи повернення значень полів

char* getAuthor ( void ) ;

char* getTitle ( void ) ;

int getYear ( void ) ;

} ;

Визначення ( реалізація) класу cBook

Визначення оголошених у специфікації класу методів розташовується в окремому файлі з розширенням .срр, називаному файлом реалізації класу.

Коли файли специфікації й реалізації класу перебувають у різних файлах, у заголовок функції-члена потрібно включати область видимості відповідно до формату:

тип_функції-члена ім'я_класу :: ім'я_функції-члена ( список параметрів )

Оператор дозволу області видимості :: використається в заголовку з тією метою, щоб всі оголошені усередині класу ідентифікатори оброблялися усередині їхнього власного простору імен, а також щоб уникнути неоднозначності використання імен. Запис тіла методу нічим не відрізняється від запису у звичайній функції. У файл реалізації класу потрібно включати файл зі специфікацією класу, а також необхідні при визначенні функцій заголовки стандартних бібліотек.

У реалізації методів-конструкторів при демонстрації їх роботи видається значення покажчика this, який є скритою внутрішньою змінною класу і вказує на сам об’єкт, тобто на його адресу в оперативній пам’яті.

  1. Для внесення змін до файлу реалізації класу потрібно вибрати у браузері FileView файл Book.cpp та внести програмний код, призначений для визначення конструкторів та деструктору класу та його методів.

Файл реалізації класу повинен бути відредагований у відповідності з текстом:

// Book.cpp - реализация класса CBook

#include "stdafx.h"

//using namespace std ;

#include "Book.h"

#include "iostream.h"

#include <string>

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////

// установить автора

void CBook :: setAuthor ( const char* author )

{ cout << "\n rabotaet setAuthor \n"<< author<< endl;

m_author [ 0 ] = '\0' ;

strcat(m_author, author);

cout << m_author<<endl;

cout << "\notrabotal setAuthor\n"<<endl;

}

// установить название

void CBook :: setTitle ( const char* title )

{

cout << "\nrabotaet setTitle\n"<<endl;

cout << "\nstrlen ( title ) = "<<strlen ( title )<<endl;

cout << "\ntitle = "<< title <<endl;

m_pTitle = new char [strlen ( title )+ 1] ;

m_pTitle [ 0 ] = '\0' ;

strcat(m_pTitle, title);

cout << m_pTitle<<endl;

cout << "\notrabotal setTitle\n"<<endl;

}

// установить год издания

void CBook :: setYear ( const int year )

{ m_year = year ; }

// вернуть автора

char* CBook :: getAuthor ( void )

{ return m_author ; }

// вернуть название

char* CBook :: getTitle ( void )

{ return m_pTitle ; }

// вернуть год издания

int CBook :: getYear ( void )

{ return m_year ; }

// конструктор по умолчанию

CBook :: CBook ( ) : m_year ( 0 ), m_pTitle ( " " )

{ m_author [ 0 ] = '\0' ;

cout << "default CONSTRUCTOR\nthis = " << this ;

}

// деструктор

CBook::~CBook()

{

delete [ ] m_pTitle ;

cout << "DESTRUCTOR\t " << this << endl ;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]