www.pudn.com > Observerwangdxh.zip > CardioSub.cpp


// CardioSub.cpp : implementation of the CCardioSubject class 
// 
#include "stdafx.h" 
#include "CardioSub.h" 
 
// List of predefined constants 
 
#define FAT_CALORIE_FACTOR		4 
#define CARDIO_CALORIE_FACTOR	8 
 
CCardioSubject::CCardioSubject( INT nDuration, LPCSTR lpszProgram, INT nLevel, INT nAge )  
: m_nDuration( nDuration ), m_csProgram( lpszProgram ), m_nLevel( nLevel ), m_nAge( nAge ) 
{ 
	// Step 1 - Initialize class members 
	m_tsElapsedTime	= CTimeSpan( 0, 0, 0, 0 ); 
	// Step 2 - Calculate calorie per minute using some hurestics  
	if( m_csProgram.CompareNoCase( "Fatburn" ) == 0 ) 
	{ 
		m_nCaloriesPerMinute = m_nLevel + FAT_CALORIE_FACTOR; 
	} 
	else 
	{ 
		m_nCaloriesPerMinute = m_nLevel + CARDIO_CALORIE_FACTOR; 
	} 
} 
 
CCardioSubject::~CCardioSubject() 
{ 
} 
 
INT CCardioSubject::GetDuration() 
{ 
	// Step 1 - Return m_nDuration 
	return m_nDuration; 
} 
 
CString CCardioSubject::GetProgram() 
{ 
	// Step 1 - Return m_csProgram 
	return m_csProgram; 
} 
 
INT CCardioSubject::GetLevel() 
{ 
	// Step 1 - Return m_nLevel 
	return m_nLevel; 
} 
 
INT CCardioSubject::GetAge() 
{ 
	// Step 1 - Return m_nAge 
	return m_nAge; 
} 
 
INT CCardioSubject::GetCaloriesPerMinute() 
{ 
	// Step 1 - Return m_nCaloriesPerMinute 
	return m_nCaloriesPerMinute; 
} 
 
const CTimeSpan & CCardioSubject::GetElapsedTime() 
{ 
	// Step 1 - Return m_tsElapsedTime 
	return m_tsElapsedTime; 
} 
 
VOID CCardioSubject::SetElapsedTime( const CTimeSpan & rtsElapsedTime ) 
{ 
	// Step 1 - Set m_tsElapsedTime and update observers 
	m_tsElapsedTime = rtsElapsedTime; 
	Notify(); 
} 
 
VOID CCardioSubject::SetProgram( LPCSTR lpszProgram ) 
{ 
	// Step 1 - Set program 
	m_csProgram = lpszProgram; 
	// Step 2 - Calculate calorie per minute using some hurestics  
	if( m_csProgram.CompareNoCase( "Fatburn" ) == 0 ) 
	{ 
		m_nCaloriesPerMinute = m_nLevel + FAT_CALORIE_FACTOR; 
	} 
	else 
	{ 
		m_nCaloriesPerMinute = m_nLevel + CARDIO_CALORIE_FACTOR; 
	} 
	// Step 3 - Update observers 
	Notify(); 
} 
 
VOID CCardioSubject::SetLevel( INT nLevel ) 
{ 
	// Step 1 - Set level 
	m_nLevel = nLevel; 
	// Step 2 - Calculate calorie per minute using some hurestics  
	if( m_csProgram.CompareNoCase( "Fatburn" ) == 0 ) 
	{ 
		m_nCaloriesPerMinute = m_nLevel + FAT_CALORIE_FACTOR; 
	} 
	else 
	{ 
		m_nCaloriesPerMinute = m_nLevel + CARDIO_CALORIE_FACTOR; 
	} 
	// Step 3 - Update observers 
	Notify(); 
}