Стефан Дэвис - С++ для чайников .

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: sci_tech, издательство Издательский дом Вильямс. Компьютерное издательство Диалектика, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    С++ для чайников .
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс. Компьютерное издательство Диалектика
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    0-7645-6852-3, 978-5-8459-0723-3
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Стефан Дэвис - С++ для чайников . краткое содержание

С++ для чайников . - описание и краткое содержание, автор Стефан Дэвис, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
empty-line
1
empty-line
4

С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)

С++ для чайников . - читать книгу онлайн бесплатно, автор Стефан Дэвис
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

►BUDGET2...348

Программа BUDGET2 представляет собой результат преобразования программы BUDGET1, основанной на использовании функций, в объектно-ориентированную программу с применением классов.

Для того чтобы разобраться в программе BUDGET2 вы должны быть хорошо знакомы - фото 348

«Для того чтобы разобраться в программе BUDGET2, вы должны быть хорошо знакомы с концепциями, представленными в третьей частикниги . »

[ Атас! ]

В программе будет решаться задача по представлению счетов в том виде, какой они имеют в банке. Эта простая программа будет поддерживать возможности вклада ( это хорошо ) и снятия денег со счёта ( это ещё лучше ). ( Первоначальная версия работала только с одним типом банковского счёта. ) Эта версия поддерживает два типа счетов, каждый из которых будет иметь собственные, несколько отличные от другого счёта правила.

Чековый счёт:

■■■

■ удерживать 20 центов за каждый обработанный чек, если баланс падает ниже 500 долларов;

■ не удерживать 20 центов, если баланс больше 500 долларов.

■■■

Сберегательный счёт:

■■■

■ не удерживать денег при первом снятии со счёта за месяц;

■ удерживать 5 долларов за каждое последующее снятие.

■■■

Рассматривая эту задачу, можно сразу отметить, что главными кандидатами на роль классов являются Checking и Savings . Поскольку данные-члены лучше сделать защищёнными, нам понадобится несколько функций, обеспечивающих доступ к номеру и балансу счёта.

Как и любой класс, Checking и Savings нуждаются в конструкторе, чтобы проинициализировать объекты правильными значениями ( как минимум, обнулить баланс ). Кроме того, понадобятся ещё две функции — deposit( ) ( вклад ) и withdrawal( ) ( снятие ).

И наконец, в этой программе я добавил ещё одну функцию-член, которая называется display( ) ; она отображает текущий объект. Это необязательное требование, однако обычно так и поступают, позволяя объекту самому заниматься своим отображением, не полагаясь на внешнюю функцию ( которой для правильного отображения могут понадобиться сведения о внутреннем устройстве класса или другая информация, которую вы, возможно, не захотите открывать ).

Вот текст этой программы:

/* BUDGET2.CPP — программа бюджета, основанная на классах */

#include

#include

#include

_________________

348 стр. Часть 6. Великолепная десятка

using namespace std ;

/* Максимальное количество счетов */

const int maxAccounts = 10 ;

/* Checking — здесь описан чековый счёт */

class Checking

{

public :

Checking( int initializeAN = 0 )

:accountNumber( initializeAN ) , balance( 0.0 ){ }

/* Функции обращения */

int accountNo( )

{

return accountNumber ;

}

double acntBalance( )

{

return balance ;

}

/* Функции транзакций */

void deposit( double amount )

{

balance += amount ;

}

void withdrawal( double amount ) ;

/* Функция вывода объекта в cout */

void display( )

{

cout << "Счёт " << accountNumber

<< " = " << balance

<< "\n" ;

}

protected :

unsigned accountNumber ;

double balance ;

} ;

/* withdrawal — эта функция-член слишком */

/* велика для inline-функции */

void Checking::withdrawal( double amount )

{

if ( balance < amount )

{

cout << "Недостаточно денег: баланс равен "

<< balance

<< ", сумма чека равна " << amount

<< "\n" ;

}

else

{

balance -= amount ;

/* Если баланс падает слишком низко... */

if ( balance < 500.00 )

{

_________________

349 стр. Глава 31. Программа BUDGET

/* ...удержать деньги за обслуживание */

balance -= 0.20 ;

}

}

}

/* Savings — вы и сами можете написать этот класс */

class Savings

{

public :

Savings( int initialAN = 0 )

: accountNumber( initialAN ) ,

balance( 0.0 ) , noWithdrawals( 0 ) { }

/* функции обращения */

int accountNo( )

{

return accountNumber ;

}

double acntBalance( )

{

return balance ;

}

/* функции транзакций */

void deposit( double amount )

{

balance += amount ;

}

void withdrawal( double amount ) ;

/* Функция display — отображает объект */

void display( )

{

cout << "Счёт " << accountNumber

<< " = " << balance

<< " ( номер снятия = "

<< noWithdrawals

<< " )\n" ;

}

protected :

unsigned accountNumber ;

double balance ;

int noWithdrawals ;

} ;

void Savings::withdrawal( double amount )

{

if ( balance < amount )

{

cout << "Недостаточно денег на счёте: "

<< "баланс равен " << balance

<< ", снимается " << amount

<< "\n" ;

}

else

{

/* После первого в месяце снятия денег... */

_________________

350 стр. Часть 6. Великолепная десятка

if ( ++noWithdrawals > 1 )

{

/* ...удерживать $5 */

balance -= 5.00 ;

}

/* Снять деньги */

balance -= amount ;

}

}

/* Объявление прототипов */

void process( Checking* pChecking ) ;

void process( Savings* pSavings ) ;

/* Объекты чековых и сберегательных счетов */

Checking* chkAcnts[ maxAccounts ] ;

Savings* svgAcnts[ maxAccounts ] ;

/* main — собирает и выводит данные */

int main( int argcs , char* pArgs[ ] )

{

setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

/* Повторять цикл до ввода 'X' или 'х' */

int noChkAccounts = 0 ; /* Содержит количество счетов */

int noSvgAccounts = 0 ;

char accountType ; /* Тип счёта — 'S' или 'С' */

while ( 1 )

{

cout << "Введите S для сберегательных счетов, " << "\n"

<< "С для чековых, "

<< "X для выхода:" ;

cin >> accountType ;

/* Выйти из цикла, если пользователь введёт X */

if ( accountType == 'x' || accountType == 'X' )

{

break ;

}

/* В противном случае обрабатывать соответствующий счёт */

switch ( accountType )

{

/* чековые счета */

case 'c' :

case 'C' :

if ( noChkAccounts < maxAccounts )

{

int acnt ;

cout << "Введите номер счёта:" ;

cin >> acnt ;

chkAcnts[ noChkAccounts ] = new Checking( acnt ) ;

process( chkAcnts[ noChkAccounts ] ) ;

noChkAccounts++ ;

}

else

{

cout << "Для чековых счетов больше нет места\n" ;

_________________

351 стр. Глава 31. Программа BUDGET

}

break ;

/* сберегательные счета */

case 's' :

case 'S' :

if ( noSvgAccounts < maxAccounts )

{

int acnt ;

cout << "Введите номер счёта:" ;

cin >> acnt ;

svgAcnts[ noSvgAccounts ] = new Savings( acnt ) ;

process( svgAcnts[ noSvgAccounts ] ) ;

noSvgAccounts++ ;

}

else

{

cout << "Для сберегательных счетов "

<< "больше нет места\n" ;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стефан Дэвис читать все книги автора по порядку

Стефан Дэвис - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




С++ для чайников . отзывы


Отзывы читателей о книге С++ для чайников ., автор: Стефан Дэвис. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x