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();
}