|
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
|
|
Не могу понять ООП29.08.2013, 16:17. Показов 4401. Ответов 28
Метки нет (Все метки)
Привет Всем, не так давно дошел до ООП, вроде как бы все понятно, но есть несколько вопросов- увы учусь сам, спросить кроме Вас не у кого
![]() Вопрос\рассуждение : Классы это как бы функции которые как бы описывают некий объект и взаимодействуют между собой так же как функции в структурном программировании. Каждый класс должен работать как бы играя роль какого то объекта в общей задаче? Например пример построение лифта ( задачка с книги) Я так понимаю что я должен сделать класс: человек;лифт и кнопки внутри лифта; здание с этажами... Вот так я себе представляю взаимодействие классов: Класс человек создает рандом человека в конструкторе и передает как бы себя ( этаж появления),объекту класса лифт (объект лифта объявлен в классе человека),класс лифт в конструкторе генерирует рандом нажатие кнопки внутри лифта и передает это классу здание, в классе здание хранится текущий этаж лифта и тот на который он якобы должен ехать, потом он перезаписывает переменную и все продолжается по кругу... Я правильно понимаю ооп, а то мне кажется что я слишком все разбил и классов слишком много для такой задачи...
0
|
|
| 29.08.2013, 16:17 | |
|
Ответы с готовыми решениями:
28
Не могу понять задание по "ООП" Стек на основе массива структур - эт как понять читаю литературу и не могу понять! ООП - задачка, понять и суметь. Разбор ошибок |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||
| 29.08.2013, 16:33 | |||||
|
0
|
|||||
|
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
|
|
| 29.08.2013, 16:41 [ТС] | |
|
1.Создаю как бы человека на этаже(просто рандом создаю этаж)
2.Ну я еще не дошел до очередей и т.п. могу сделать лифт как статик ![]() 3.Ну тут проблем нет,можно сделать что бы вводил, но я хотел что бы полностью автоматом) 4.Ну что бы не получилось что человек захочет ехать на тот же этаж на котором он находится.
0
|
|
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||
| 29.08.2013, 16:41 | ||
|
Классы: человек, здание, лифт, кнопки. Здание состоит за этажей, содержит лифт, лифт содержит кнопки. Чловек сам по себе. Человек может входить и выходить на этажах, нажимать кнопки. Лифт может перемещаться по этажам, согласно нажатым кнопкам, открывать\закрывать двери.
1
|
||
|
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
|
|
| 29.08.2013, 16:45 [ТС] | |
|
Короче я лучше напишу и выложу сюда то что получится
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||
| 29.08.2013, 16:46 | |||||
|
MousePro,
1
|
|||||
|
|
|
| 29.08.2013, 16:54 | |
|
Мой вариант:
1. Класс здание. У него есть свойство "количество этажей" и "количество подъездов". И public методы "получить количество этажей" и "получить количество подъездов". 2. Класс лифт. У него есть свойства "на каком этаже он находится" и методы "ехать вверх" и "ехать вниз". Ехать вверх увеличивает свойство "на каком этаже он находится", метод "ехать вниз" уменьшает. Количество этажей лифт берет у здания. 3. Класс человек. Человек пользуется методами лифта. Итого. 1. Создаем экземпляр здания. В конструкторе пишем сколько этажей и подъездов. 2. Создаем экземпляры лифтов. В конструкторе берем у здания этажи и подъезды. Создаем столько лифтов, сколько подъездов + пишем лифту максимальное количество этажей как у здания. 3. создаем класс человек. в классе человек уже прописываем методы типа "вызвать лифт", "выбрать этаж" и т.д.
2
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 29.08.2013, 16:55 | ||
|
1
|
||
|
Ушел с форума
|
||
| 29.08.2013, 16:57 | ||
|
Классы, ООП - это не должно быть самоцелью. Они должны упрощать разработку и сопровождение проекта, а не решать вопросы типа "человек должен наследоваться от лифта или лифт от человека".
2
|
||
|
|
||
| 29.08.2013, 17:00 | ||
|
1
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 29.08.2013, 18:44 | |
|
По-хорошему, я это вижу примерно так.
Здание, в здании есть лифт/ы, есть этажи. На каждом этаже есть кнопка/и вызова лифта/ов. При нажатии на кнопку вызова лифта на любом этаже - лифту подается команда. При нажатии в лифте кнопки - лифту опять же подается команда. А дальше уже зависит от логики, кол-ва лифтов, желания намутить.
1
|
|
|
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
|
|
| 29.08.2013, 19:12 [ТС] | |
|
0
|
|
|
12 / 10 / 1
Регистрация: 12.03.2012
Сообщений: 127
|
||||||||||||||||
| 29.08.2013, 19:16 | ||||||||||||||||
|
То как вижу я:
Есть человек:
Есть здание, которое состоит из этажей и лифта:
Таким образом мы структурно разделили логики программы, что делает код легко читаемым и расширяемым. Что особенно важно у нас появилась некая связь между объектами - разрушив здание мы разрушим и лифт и все этажи, и убьём людей на них. Если нам нужно добавить, например, квартиры - мы просто создаём новый класс и связываем его с этажом, вместо того чтоб лопатить весь, и так запутаный, код.
1
|
||||||||||||||||
|
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
|
|
| 29.08.2013, 19:18 [ТС] | |
|
Квадро, я половину операторов которые ты тут написал не знаю
например < .... >
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 29.08.2013, 19:19 | |
|
kvadro, ИМХО здание должно быть non-copyable, посему shared_ptr-ы там все же лишние, достаточно unique.
1
|
|
|
12 / 10 / 1
Регистрация: 12.03.2012
Сообщений: 127
|
|
| 29.08.2013, 19:23 | |
|
MousePro
Если мы "достроим новый лифт" - нам нужно будет переделать логику только метода callLift, класса Building, который будет определять какой лифт возможно вызвать, не трогая остальные классы. В процедурном стиле опять же пришлось лопатить весь код. ForEveR Ага, ошибся, сам 6 день учу C++.
1
|
|
| 29.08.2013, 20:06 | |
|
MousePro, если хочешь понять что такое классы, запрограммируй задачу на структурах и функциях. А потом сделай то же самое (на форуме помогут) с помощью классов. Вот тогда и увидишь, в чем преимущество классов и как они работают... Кстати, если программа будет правильная, классы "вырастут" из структур, а часть функций переместятся извне внутрь классов.
0
|
|
|
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
|
||
| 29.08.2013, 20:25 [ТС] | ||
|
0
|
||
|
12 / 10 / 1
Регистрация: 12.03.2012
Сообщений: 127
|
|
| 29.08.2013, 20:38 | |
|
MousePro
Смени книгу, например на Прата, там он постепенно подходит и к дин. памяти и к классам.
0
|
|
| 29.08.2013, 20:38 | |
|
Помогаю со студенческими работами здесь
20
Не могу понять почему не могу считать символьный ряд через cin.getline ООП C++ НЕ могу понять задание Пытаюсь понять комбинаторику.Не могу понять какую формулу использовать Как понять поставленную задачу. Не могу понять этот полиморфизм? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|