Форум программистов, компьютерный форум, киберфорум
Наши страницы

Класс поезд, и вокзал. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ не получается подключить класс http://www.cyberforum.ru/cpp-beginners/thread526785.html
Я работаю с IDE CodeBlocks. Создаю свой класс в отдельном файле и пытаюсь его добавить в исходный файл вот собственно главный файл main.cpp #include <iostream> #include "time.h" using namespace...
C++ Вначале заполнить массив элементами с четными индексами, а затем - с нечетными. прошу помощи дан массив a, заполнить массив b элементами масива а следующим образом: вначале заполнить элементами с четными индексами, а затем - с нечетными. http://www.cyberforum.ru/cpp-beginners/thread526774.html
C++ Определить силу притяжения между телами массы m1 и m2, находящимися на расстоянии r друг от друга.
вот задания а) Определить силу притяжения между телами массы m1 и m2, находящимися на расстоянии r друг от друга. б) Дано трехзначное число. Найти число, полученное при перестановке первой и...
C++ Вывести все трехзначные десятичные числа, сумма цифр которых равна введенному пользователем числу
Нужно вывести все трехзначные десятичные числа, сумма цифр которых равна введенному пользователем числу...
C++ Странная проблема при преобразовании Pascal в C++. Гуру С++, нужна ваша помощь http://www.cyberforum.ru/cpp-beginners/thread526752.html
Нужно было переписать паскаль в с++. Переписал, но программы работают по разному, понять ничего не могу. То ли ключевую процедуру неправильно переписал, то ли в с++ генератор случайных чисел работает...
C++ Определить, сколько шаров потребуется для строительства пирамиды из N слоев №1 Представим себе пирамиду из шаров, основание которой представляет собой квадрат со стороной, состоящей из N шаров. Следующий слой состоит из шаров, лежащих в углублениях нижнего уровня, т.е.... подробнее

Показать сообщение отдельно
Kuzia domovenok
2119 / 1949 / 192
Регистрация: 25.03.2012
Сообщений: 6,755
Записей в блоге: 1
28.03.2012, 12:21
Цитата Сообщение от eji Посмотреть сообщение
Kuzia domovenok, Это хороший тон программирования - меня так вполне устраивает. Что я могу Вам сказать - почитайте, что такое инкапсуляция. С уважением.
Ну а объяснить своими словами, чем именно это помогает программировать, никак да? Или единственное объяснение - "это хороший тон программирования, так большие дяди делают"...

Я говорю, если методы Get() Set() ничего не делают, кроме геттинга, сеттинга,
проще вынести поля класса в public, потому что private поля безопасности всё равно никакой не добавляют. Никакого "хорошего тона" в них нет
Сравни

C++
1
2
3
4
5
6
void train::set(int id, char *city, int t)
    {
        number_id = id;
        strcpy(destination, city);
        time = t;
    }
Любой пользователь класса может изменить поля number_id, destination и time произвольным образом, вызвав эту функцию. Ну и какая тогда роль у неё? Тупо копировать, а у геттеров тупо возвращать? спасибо, но я мог бы это сделать и с public полями; легче объявить поля
C++
1
2
3
4
public:
 int number_id;
    char destination[40];
    int time;
Другое дело, если мы заботимся о безопасности данных, но тогда о ней надо действительно заботиться, а не шаблонно действовать. скрыть данные в private, но при этом при попытке сеттинга проверять их корректность, например:
C++
1
2
3
4
5
6
7
8
9
void train::set(int id, char *city, int t)
    {
        number_id = id;
        if (strlen(city)>40) 
            strncpy(destination, city);
        else
            strcpy(destination, city);
        time = t;
    }
Тогда было бы ясно: Мы закрыли поле сити, чтобы при попытке его изменить пользователь не смог бы записать в него строку больше 40 символов. Так безопаснее.
Но этого нет. Тогда какой смысл в сеттерах, которые делают ровно то же, что мог бы сделать пользователь?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.