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

Не могу понять ООП - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Использована неинициализированная локальная переменная http://www.cyberforum.ru/cpp-beginners/thread945484.html
Здравствуйте. Подскажите, пожалуйста, в чем тут ошибка? Вроде бы все правильно. Создаются переменная и указатель на адрес, где хранится значение типа int. По этому адресу помещаю 5, а затем в t присваиваю значение, лежащее в *m. Вывожу на экран. Что я не так сделал? #include "stdafx.h" #include <stdio.h> int _tmain(int argc, _TCHAR* argv)
C++ открытие для дозаписи Есть каталог в нем много текстовых документов. Как поочередно их открывать? Не зная имен и расширений. http://www.cyberforum.ru/cpp-beginners/thread945483.html
C++ Построчное считывание файла txt в массив
Добрый день. Пытаюсь вспомнить "как там считывать из файла", вроде бы делала, но давно это было. Сейчас сижу, кручу-верчу, а понять не могу -- почему не работает? :scratch: Суть программы такая: есть файл hero.txt, в этом файле есть 5 строчек герой 1 герой 2 герой 3
C++ дана матрица a(n/m) которая вводиться из файла
дана матрица a(n/m) которая вводиться из файла и число k вводиться с клавиатуры. В k-ой строке найти максимальный элемент.В том столбце где этот элемент находиться найти сумму модулей элементов. Каждый этап решать при помощи программы работающей с вектором
C++ switch и case http://www.cyberforum.ru/cpp-beginners/thread945432.html
Пишет, что switch не содержит case, но судя по коду - это не так... как же заставить его видеть этот case? #include <iostream> using namespace std; int main() { setlocale( LC_ALL, "Russian" ); float x;
C++ Не СОЗДАЁТСЯ файл для записи FILE *fp; char name; double result; setlocale(LC_ALL, "Rus"); printf("ВВЕДИТЕ ИМЯ ФАЙЛА: "); fgets(name, SIZE, stdin); fp = fopen(name, "w"); подробнее

Показать сообщение отдельно
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
29.08.2013, 19:16     Не могу понять ООП
То как вижу я:

Есть человек:

C++
1
2
3
4
5
class Person
{
    std::string name;                   // Имя человека
    std::weak_ptr<class Floor> floor;   // Оставляем ссылку, чтоб человек знал на котором этаже находится.
}
Есть этаж, на котором могут быть люди. На этаже можно вызвать лифт.

C++
1
2
3
4
5
6
7
8
9
10
11
12
class Floor
{
    int numb_floor;                         // Номер этажа.
    std::weak_ptr<class Building> building; // Этаж это всего лишь часть здания.
    list<shared_ptr<class Person> > people; // Список людей на этаже.
 
    // Вызов лифта
    void callLift()
    {
        building->callLift( numb_floor );
    }
}

Есть здание, которое состоит из этажей и лифта:

C++
1
2
3
4
5
6
7
8
9
10
class Building
{
    list<shared_ptr<class Person> > floors; // Список этажей
    shared_ptr<class Lift> lift; // Лифт
 
        void callLift( int floor )
        {
               lift->call( floor );
        }
};

Таким образом мы структурно разделили логики программы, что делает код легко читаемым и расширяемым.
Что особенно важно у нас появилась некая связь между объектами - разрушив здание мы разрушим и лифт и все этажи, и убьём людей на них.

Если нам нужно добавить, например, квартиры - мы просто создаём новый класс и связываем его с этажом, вместо того чтоб лопатить весь, и так запутаный, код.
 
Текущее время: 10:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru