Что такое классы? - страница 2

 
eevviill:

Спасибо.

Тогда это скорее похоже на базу данных Microsoft Access? 

да пожалуй
 
eevviill:
Можно ли утвержать что классы это многотипные буфера с данными?

Очень хорошая книжка к обязательному прочтению (но это - лично моё предпочтение)

Гради Буч "Объектно-ориентированный анализ и проектирование"

 
stringo:

Очень хорошая книжка к обязательному прочтению (но это - лично моё предпочтение)

Гради Буч "Объектно-ориентированный анализ и проектирование"

Спасибо. Я уже статью нашел

 https://www.mql5.com/ru/articles/116

 

Посмотрел книгу. Для моих мозгов ужас. 

 

Не могу разобратся. Написал класс Квартира. Хочу посчитать(установить) для 3-х квартир столы и потом где то узнавать их количество.

class room
{
private:
int tables;

public:
void set_tab_numbers(int numb) {tables = numb;}
};




 room house_28;
 room house_29;
 room house_30;
 
////////////////////////////////////
void OnStart()
  { 
house_28.set_tab_numbers(37);
house_29.set_tab_numbers(42);
house_30.set_tab_numbers(11);

Alert(house_28.tables);

  }

  Для чего в статье приват переменные. Только для использования их в обсчётах в классе?

Шо то мне начало казатся что это больше будет места занимать чем если бы писать глобальные переменные+функции

 

Вот написал клас подсчёта свободного места в квартире для размещения столов.

Это так и должно выглядеть?

class room
{
private:
int tables;
double table_square;
double square;

public:
void set_tabels_data(int tables_numb,double room_square){tables=tables_numb;table_square=1.5;square=room_square;}
bool chek_square_ok();
};

////
bool room::chek_square_ok()
{
if(tables*table_square>square) return(false);

return(true);
}




 room roo_28;
 //room roo_29;
 //room roo_30;
 
////////////////////////////////////
void OnStart()
  {  
  roo_28.set_tabels_data(30,44);
  if(roo_28.chek_square_ok()) Alert("Square OK");
  else
  Alert("Square of room is to small");

  }
 

Зачем в privat свойство класса писать?

Потом нужно дописывать функцию для записи свойства и ещё одну функцию для считывания. 

 

Вся прелесть классов - это наследование и полиморфизм. Если это не нужно, то вместо классов есть структуры.

privat нужен, когда твоим классом пользуются другие. Запрещать другим.

Самому себе privat поставить можно, но ты и сам можешь не вызывать лишнего в классах-потомках.

 
RickD:

Вся прелесть классов - это наследование и полиморфизм. Если это не нужно, то вместо классов есть структуры.

privat нужен, когда твоим классом пользуются другие. Запрещать другим.

Самому себе privat поставить можно, но ты и сам можешь не вызывать лишнего в классах-потомках.

Ну вот смотри. Пример с учебника С++

class Students {
    public:
        // Установка имени студента
        void set_name(std::string student_name)
        {
            name = student_name;
        }
        // Получение имени студента
        std::string get_name()
        {
            return name;
        }
     

    private:
        // Имя
        std::string name;
     
};

 Какой смысл name делать приват?

 
LRA:
private - это защита, первый уровень обороны. Если проще - чтоб случайно... Если с вашей точки зрения в классах отсутствует смысл - так оставьте их в покое, как бессмысленные. Если разбираться безразлично в чем ради простого любопытства - то лучше поищите мою статью: "Ошибка Эйнштейна.  Разоблачение парадокса близнецов." если ее совсем не засекретили.

Вы что чисто теоретик???

Я конкретный пример привёл.

Что случайно? name переименовать?

 Так можно случайно set_name использовать, не?

 
eevviill:

Ну вот смотри. Пример с учебника С++

 Какой смысл name делать приват?


Тут просто для обучения. В дальнейшем функцию SetName можно переопределить в будущих классах, добавить в нее дополнительные проверки. Чтобы name менять не просто так, а с ограничениями.