Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet118/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   114   115   116   117   118   119   120   121   ...   193
Bog'liq
Book-qtC


Глава 10. Объектно-ориентированное программирование
• «объект класса» или «переменная-экземпляр класса»: переменная, в опи-
сании которой какой-то класс указан в качестве типа данных;
• «свойство» или «переменная-член класса»: переменная, объявленная внут-
ри класса (как поле внутри структуры); на практике чаще говорят не о
свойстве класса, а о свойстве объекта, так как для конкретных объектов
переменные — члены класса обладают конкретными значениями и потому
имеют конкретный смысл.
• «метод »: функция, объявленная внутри класса.
По умолчанию все функции и переменные, объявленные в классе, являются за-
крытыми
, т. е. принадлежат закрытой секции класса. Это значит, что они до-
ступны для обращения только изнутри членов этого класса и недоступны извне.
Для объявления открытых членов класса используется ключевое слово public
с двоеточием, обозначающее начало открытой секции класса. Все члены класса,
объявленные после слова public, доступны для обращения как изнутри этого же
класса, и для любой другой части программы, в которой доступен класс.
Открытых и закрытых секций в классе может быть несколько, и они могут
произвольно чередоваться. При необходимости обозначить очередную закрытую
секцию, её начало обозначается ключевым словом private.
Более того, структуры в C++ были существенно доработаны (по сравнению
с классическим вариантом структур языка С). В C++ структура может иметь
помимо переменных-членов (т. е. полей структуры) также и функции-члены, а
ещё в структурах можно вводить открытые и закрытые секции. В сущности,
структуры отличаются от классов двумя вещами:
• в структурах вместо ключевого слова class пишется ключевое слово
struct
;
• в структурах по умолчанию все члены являются отрытыми (иначе переста-
ли бы работать программы, написанные на С).
Рассмотрим в качестве примера объект, представляющий собой геометрический
вектор в трехмерном пространстве. Для простоты ограничимся хранением в объ-
екте трёх координат и функции, вычисляющей модуль вектора. С учётом разли-
чий между структурами и классами, приведённые ниже варианты аналогичны.
c l a s s s p a t i a l _ v e c t o r
{
public :
double abs ( ) ;
private :
double x , y , z ;
} ;
struct s p a t i a l _ v e c t o r
{
double abs ( ) ;
private :
double x , y , z ;
} ;
Добавив в структуру или в класс какой-нибудь метод, программист может
потом вызвать этот метод для конкретного объекта. Обращение к содержимому
объекта выполняется так же, как к содержимому структурной переменной: с
использованием операции «.» (либо операции «->», если нужно обратиться по
указателю на объект).
Программирование на языке С++ в среде Qt Creator


10.2. Классы и объекты в C++
273
main ( )
{
s p a t i a l _ v e c t o r a , b ;
double d ;
. . . . . . .
d = a . abs ( ) ;
}
Очевидно, что функция abs(), объявленная в классе spatial_vector, воз-
вращает абсолютное значение вектора. Однако для того, чтобы программа ском-
пилировалась, после объявления функцию abs() нужно ещё определить (т. е.
написать тело этой функции). Определение метода выполняется так же, как
обычной функции, только в имени метода нужно указать, что он принадлежит
конкретному классу. Для этого используется оператор расширения области види-
мости
«::». Имя класса записывается перед именем функции, отделённое двой-
ным двоеточием. Например, в следующем примере мы объявим всё тот же класс
spatial_vector
с двумя методами (установить значения координат вектора и
посчитать его модуль) и опишем эти методы:
#include 
#include 
using namespace s t d ;
c l a s s s p a t i a l _ v e c t o r
{
double x , y , z ;
public :
void s e t ( double a , double b , double c ) ;
double abs ( ) ;
} ;
void s p a t i a l _ v e c t o r : : s e t ( double a , double b , double c )
{
x=a ; y=b ; z=c ;
}
double s p a t i a l _ v e c t o r : : abs ( )
{
return s q r t ( x∗x + y∗y + z ∗ z ) ;
}
main ( )
{
s p a t i a l _ v e c t o r a ;
a . s e t ( 1 , 2 , 3 ) ;
c o u t << a . abs ( ) << e n d l ;
}
10.2.2
Создание и удаление объекта: конструкторы и деструкторы
Как читатель безусловно помнит, принципы ООП гласят, что свойства, описы-
вающие состояние объекта, должны находиться в закрытой секции, чтобы доступ
к ним осуществлялся через вызов методов объекта. Из-за этого в приведённом
выше примере для класса spatial_vector мы использовали метод set, устанав-
ливающий значения его переменных. Вообще, традиционным способом доступа
к закрытым переменным класса будет добавление пар методов с именами, состо-
ящих из имени переменной и префиксов «get» для чтения и «set» для записи
(т. н. «геттеры» и «сеттеры»):
c l a s s s p a t i a l _ v e c t o r
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


274
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   114   115   116   117   118   119   120   121   ...   193




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish