Форум программистов, компьютерный форум CyberForum.ru

Сеттеры и геттеры в классах С++! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С паскаля на С++ http://www.cyberforum.ru/cpp-beginners/thread298116.html
Всем добрый вечер!! Вот сама задача.....Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие выше побочной диагонали. Условный оператор не использовать. Const m = 6; Var a:array of integer; i,j:byte; Begin Randomize; For i:=1 to m do
C++ матрица: меняем местами последнюю строку и последный столбец что нужно сюда добавить или изменить, чтобы поменять местами последний столбец и последнюю строку #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <iomanip.h> void fill(int a, int n, int m) { int i,j; randomize(); for (i=0;i<n;i++) http://www.cyberforum.ru/cpp-beginners/thread298110.html
C++ Перевести
dataGridView1.Columns.ValueType = typeof(double); это на шарпе как переделать на С++
C++ стеганография в медиа-аудио файлах
ребяяят, нужно написать программу на тему стеганографии в аудио\медиа файлах-по выбору=) информации нашла минимум, у того же Грибунина все настолько заумно написано, что тут не только код не напишешь, тут понять не сможешь=((( может кто сталкивался с подобной задачей, может слышал что, рада буду любой информации!!! хоть какие-нибудь клочки кода приветствуются=)) пишу на С++ или JaVA=0
C++ Несколько заданий на массивы http://www.cyberforum.ru/cpp-beginners/thread298102.html
Привет программная братия. Кому будет скучно, хелпните с задачками, а то я что-то подвис на них 1.Задан массив X из N элементов, определить его последний нулевой элемент, вычислить сумму дробных положительных элементов и вывести индексы целых, которые делятся на 5 без остатка 2.Задана матрица Y размерами MнаN. Определить минимальный элемент k строки. найти сумму отрицательных элементов ...
C++ Создать массив, составленный из суммы отрицательных элементов каждого столбца матрицы Помогите немного с программой, не пойму как реализовать... Нужно создать матрицу размером 4х5, заполнить её. Затем создать массив, составленный из суммы отрицательных элементов каждого столбца, и вывести этот массив на экран. Вот что у меня получилось #include <stdio.h> int main() { //описание констант; подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.05.2011, 21:41
Вот небольшой поясняющий код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
 
class Foo
{
public:
    Foo(int foo):
    m_foo(foo)
    {
    }
 
    void set_foo(int foo)
    {
        m_foo = foo;
    }
 
    int get_foo() const
    {
        return m_foo;
    }
 
private:
    int m_foo;
};
 
int main()
{
    Foo bar(10);
 
    std::cout << bar.get_foo() << std::endl;
 
    bar.set_foo(20);
 
    std::cout << bar.get_foo() << std::endl;
 
    return 0;
}
Есть некоторый класс Foo. Единственное его поле - переменная целого типа m_foo. Принцип инкапсуляции предполагает, что она должна быть скрыта, т.е. должна находиться в private-секции. Но мы хотим каким-то образом с ней работать, считывать её и устанавливать для неё новое значение. Для работы с ней мы используем сеттер/геттер.
Сеттер устанавливает переменную в некоторое новое значение. Для чего он нужен? Для того, чтобы мы не дай бог не занесли в переменную невалидное значение. Например, некоторый класс предполагает хранение только чётных чисел (пример синтетический, но понятный). Если бы поле m_foo было открыто, мы вполне могли бы написать bar.m_foo = 3. И таким образом занесли бы невалидные данные в объект (скажем, если все остальные методы основываются на предположении, что поле m_foo хранит именно чётное число, то при занесении в него нечётного числа они могут работать неверно, вплоть до того, что уронят программу). Используя же сеттер, мы можем прежде, чем приравнивать тройку полю m_foo, проверить её на чётность и, убедившись, что условие не выполняется, адекватно на это отреагировать.
Геттер же нужен, наоборот, для того, чтобы считать значение переменной. Ещё один синтетический пример. Например, нам нужно, чтобы при каждом обращении к переменной увеличивался счётчик считываний. При обращении bar.m_foo (если бы переменная находилась в открытой секции) мы бы упустили одно из таких обращений и счётчик не увеличили, при использовании же геттера мы наверняка знаем, что число обращений будет подсчитано правильно.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru