Множество – набор элементов
int TBitField::GetBit(const int n) const
{
if ((n > -1) && (n < BitLen))
return (pMem[(GetMemIndex(n))] & (GetMemMask(n)));
else return(0);
}
void TBitField::SetBit(const int n)
{ if ((n > -1) && (n < BitLen))
pMem[(GetMemIndex(n))] |= GetMemMask(n);
}
void TBitField::ClrBit(const int n)
{ if ((n > -1) && (n < BitLen))
pMem[(GetMemIndex(n))] &= ~GetMemMask(n);
}
TBitField TBitField::operator|(const TBitField& bf)
{
int i, len;
if (BitLen > bf.BitLen)
len = BitLen;
else len = bf.BitLen;
TBitField temp(len);
for (i = 0; i < MemLen; i++)
temp.pMem[i] = pMem[i];
for (i = 0; i < bf.MemLen; i++)
temp.pMem[i] |= bf.pMem[i];
return temp;
}
TBitField TBitField::operator&(const TBitField &bf)
{
int i, len;
if (BitLen < bf.BitLen)
len = BitLen;
else len = bf.BitLen;
TBitField temp(len);
for (i = 0; i < MemLen; i++)
temp.pMem[i] = pMem[i];
for (i = 0; i < bf.MemLen; i++)
temp.pMem[i] &= bf.pMem[i];
return temp;
}
TBitField TBitField::operator~(void)
{
TBitField temp(BitLen);
for (int i = 0; i < MemLen; i++)
temp.pMem[i] = ~pMem[i];
return temp;
}
Универс U – множество всех элементов.
Конкретизация (допущения и ограничения):
PTDatLink pTemp;
pTemp = new TDatLink();
pTemp-> SetDatValue(Val);
pTemp->SetNextLink(pFirst);
pFirst = pTemp;
PTDatLink pTemp = pFirst;
Val = pFirst->GetDatValue();
pFirst = pFirst->GetNextLink();
delete pTemp;