** Конструиране на обекти.
Обектът е стойност, която може да се създава, запазва и обработва
със средствата на езика за програмиране.
Обект = променлива или константа, като понятието обект се използва
за "по-големи" променливи или константи.
Пример:
int k =
1;
/*
k е обект, по-добре променлива */
string greeting = "Hello"; /* greeting и "Hello" са обекти */
Тип данни клас.
Класовете се дефинират от програмиста.
Класът Time е дефиниран от К. Хорстман.
Обект от този клас съхранява момент от времето - час, минути,
секунди - три цели числа..
Конструиране на обект. Time(23,59,59) означава 23
часа, 59 минути и 59 секунди.
Това е обект-константа, аналогичен на числовите константи
(числата) и низовете.
Пример:
6 е константа от тип int;
2.3, е константа от тип double;
"Hello" е константа от тип string;
Time(23,59,59) е константа (константен обект) от
тип Time.
Включване на файл с дефиниция на класа:
#include
"ccc_time.h"
Дефиниране на променлива (обект) от тип Time:
Time day_end = Time(23,59,59);
или по-кратко (съкратен запис):
Time
day_end(23,59,59);
Името на променливата е day_end, типът на
променливата е Time и началната стойност на
променливата е Time(23,59,59).
Конструктор и параметри на конструктора.
За създаване на обекти от клас се използва функция, наречена
конструктор на класа:
-- името на конструктора съвпада с името на класа;
-- параметрите на конструктора са зададени в дефиницията на класа.
Конструиране по подразбиране - задава текущото време по
компютърния часовник (в момента на изпълнение на програмата):
Time
now
= Time();
или съкратено:
Time now;
// time1.cppЧлен-функции на класа Time:
#include <iostream> using namespace std;
#include "ccc_time.h" int main() { Time wake_up(8, 0, 0); wake_up.add_seconds(1000); /* a thousand seconds later */ cout << wake_up.get_hours() << ":" << wake_up.get_minutes() << ":" << wake_up.get_seconds() << "\n"; return 0;
}
Име | Действие |
Time() | Конструира обект, показващ текущото време |
Time(h,m,s) | Конструира обект, показващ h часа, m минути и s секунди |
t.get_seconds() | Връща броя на секундите в t. |
t.get_minutes() | Връща броя на минутите в t. |
t.get_hours() | Връща броя на часовете в t. |
t.add_seconds(n) | Премества момента t с n секунди напред. |
t.seconds_from(t2) | Пресмята броя на секундите между t и t2. |
Пример: Колко секунди остават до края на
деня?
#include <iostream> using namespace std; #include "ccc_time.h" int main() { Time now; Time day_end(23, 59, 59); long seconds_left = day_end.seconds_from(now); cout << "There are " << seconds_left
<< " seconds left in this day.\n"; return 0; }
Тъй като денонощието съдържа 24x3600 = 86400
секунди, член-функцията seconds_from
връща стойност от тип long.
// employee.cppОбект от тип Employee (служител) съхранява име на служител и неговата (годишна) заплата.
#include <iostream> using namespace std; #include "ccc_empl.h"
int main() { Employee harry("Hacker, Harry", 45000.00); double new_salary = harry.get_salary() + 3000; harry.set_salary(new_salary); cout << "Name: " << harry.get_name() << "\n"; cout << "Salary: " << harry.get_salary() << "\n"; return 0; }
Име | Действие |
Employee(n,s) | Конструира обект, представящ служител с име n и заплата s. |
e.get_name() | Връща името на e. |
e.get_salary() | Връща заплатата на e. |
e.set_salary(s) | Дава нова стойност s на заплатата на e. |
** Оператор if (условен оператор)
Операторът if се състои от 2 части - условие и тяло. if
е съставен оператор.
Пример:
if (area < 0)
cout << "Error: Negative area.\n";
[блок-схема]
Когато условието е вярно, се изпълнява тялото на оператора.
Ако условието е нарушено (не е вярно), се изпълнява следващия
оператор (след оператора if).
Тялото на if може да бъде друг оператор или блок.
Блок е група от оператори, оградени с къдрави (големи) скоби {}.
Пример:
if (area < 0)
{ cout << "Error: Negative area.\n";
return 1;
}
Блокът замества (се разглежда като) един оператор.
// area1.cpp
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ double area;
cout << "Please enter the area of a square: ";
cin >> area;
if (area < 0)
{ cout << "Error: Negative area.\n";
return 1;
}
/* now we know that area is >= 0 */
double length = sqrt(area);
cout << "The side length of the square is "
<< length << "\n";
return 0;
}