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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
#1

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

29.08.2013, 16:17. Просмотров 1666. Ответов 28
Метки нет (Все метки)

Привет Всем, не так давно дошел до ООП, вроде как бы все понятно, но есть несколько вопросов- увы учусь сам, спросить кроме Вас не у кого

Вопрос\рассуждение : Классы это как бы функции которые как бы описывают некий объект и взаимодействуют между собой так же как функции в структурном программировании. Каждый класс должен работать как бы играя роль какого то объекта в общей задаче?
Например пример построение лифта ( задачка с книги)
Я так понимаю что я должен сделать класс: человек;лифт и кнопки внутри лифта; здание с этажами...
Вот так я себе представляю взаимодействие классов:
Класс человек создает рандом человека в конструкторе и передает как бы себя ( этаж появления),объекту класса лифт (объект лифта объявлен в классе человека),класс лифт в конструкторе генерирует рандом нажатие кнопки внутри лифта и передает это классу здание, в классе здание хранится текущий этаж лифта и тот на который он якобы должен ехать, потом он перезаписывает переменную и все продолжается по кругу...

Я правильно понимаю ооп, а то мне кажется что я слишком все разбил и классов слишком много для такой задачи...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2013, 16:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу понять ООП (C++):

Не могу понять задание по "ООП" - C++
Добрый вечер! Задание вообщем не сложное и в реализации проблем не ощущаю, но никак не могу разобрать один момент: "Описать абстрактный...

Стек на основе массива структур - эт как понять читаю литературу и не могу понять! - C++
Стек статически (на основе массива структур). Пример структура "Товар" которая включает в себя: № по каталогу(ключ), Название, цена, срок...

ООП - задачка, понять и суметь. Разбор ошибок - C++
Дан массив действительных чисел b1;…;b10 .. Найти сумму элементов расположенных после минимального элемента.Поля и данные - закрытого типа....

Не могу сделать полиморфизм. Не могу до конца понять пример по этому поводу - C++
Есть такая задача: Класс Animal должен быть абстрактным, имеет имя и вес. Класс Reptile имеет habitate, который держит в себе среду...

Не могу разобраться с ООП - C++
Помогите разобраться с ошибками. Что не так делаю? public class Points { Points(double initial_x, double initial_y, double...

Не могу вывести результат с ООП - C++
persona.h #include <fstream> #include <string> #include <iostream> #include <conio.h> #include <stdlib.h> #include...

28
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.08.2013, 19:19 #16
kvadro, ИМХО здание должно быть non-copyable, посему shared_ptr-ы там все же лишние, достаточно unique.
1
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
29.08.2013, 19:23 #17
MousePro
Если мы "достроим новый лифт" - нам нужно будет переделать логику только метода callLift, класса Building, который будет определять какой лифт возможно вызвать, не трогая остальные классы. В процедурном стиле опять же пришлось лопатить весь код.

ForEveR
Ага, ошибся, сам 6 день учу C++.
1
zer0mail
2342 / 1972 / 193
Регистрация: 03.07.2012
Сообщений: 7,090
Записей в блоге: 1
29.08.2013, 20:06 #18
MousePro, если хочешь понять что такое классы, запрограммируй задачу на структурах и функциях. А потом сделай то же самое (на форуме помогут) с помощью классов. Вот тогда и увидишь, в чем преимущество классов и как они работают... Кстати, если программа будет правильная, классы "вырастут" из структур, а часть функций переместятся извне внутрь классов.
0
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
29.08.2013, 20:25  [ТС] #19
Цитата Сообщение от zer0mail Посмотреть сообщение
MousePro, если хочешь понять что такое классы, запрограммируй задачу на структурах и функциях. А потом сделай то же самое (на форуме помогут) с помощью классов. Вот тогда и увидишь, в чем преимущество классов и как они работают... Кстати, если программа будет правильная, классы "вырастут" из структур, а часть функций переместятся извне внутрь классов.
Да я уже кодил на классах, просто тут задача усложнилась ( след. главу прочитал), а в ней тут и динамическое выделение new-delete, композиция, статик объявления,связывание (this) и я во всем этом запутался...
0
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
29.08.2013, 20:38 #20
MousePro
Смени книгу, например на Прата, там он постепенно подходит и к дин. памяти и к классам.
0
zer0mail
2342 / 1972 / 193
Регистрация: 03.07.2012
Сообщений: 7,090
Записей в блоге: 1
29.08.2013, 20:40 #21
Трудно решать много задач одновременно. Приведи код на структурах и опиши что он делает. А затем переводи его на классы (по частям), сохраняя функциональность. Когда переведешь, тогда начинай по шагам расширять функциональность. Не страшно, если что-то придется переделывать - цель ведь не получить ответ самым коротким способом, цель - научиться работать с классами.
0
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
29.08.2013, 20:46 #22
zer0mail
Тогда он просто поймёт реализацию, но никак не идеологию ООП.
0
zer0mail
2342 / 1972 / 193
Регистрация: 03.07.2012
Сообщений: 7,090
Записей в блоге: 1
29.08.2013, 21:08 #23
Глядя на шаблоны, STL, умные указатели и прочие навороты он поймет еще меньше и только время потратит, имхо. Хорошо, если при этом самооценка не снизится ниже плинтуса

Нетрудно запомнить слова "инкапсулящия", "наследование", "полимофизм", но важнее понять, что за ними стоит, для чего они были созданы, как их применять. В принципе, любую задачу, которую можно сделать с ними, можно сделать и без них, только усилий потребуется больше.
0
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
29.08.2013, 21:11 #24
Из-за этого я и предложил просто сменить книгу.
0
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
29.08.2013, 21:13  [ТС] #25
Ну насчет самооценки, то она уже под упала, но я не сдамся)) я раз 20-30 перечитаю пока не пойму
0
zer0mail
2342 / 1972 / 193
Регистрация: 03.07.2012
Сообщений: 7,090
Записей в блоге: 1
29.08.2013, 21:16 #26
И вот когда программист глазами увидит и кончиками пальев почувствуют, что кода стало меньше и расширение функционала требует не 2 дня, а два часа, понимание идеологии придет.

Добавлено через 2 минуты
Цитата Сообщение от MousePro Посмотреть сообщение
Ну насчет самооценки, то она уже под упала, но я не сдамся)) я раз 20-30 перечитаю пока не пойму
Перечитывать мало проку, надо писать код, наступать на грабли (по возможности однократно) и двигаться вперед. Путь я описал, в пойдешь им или нет - тебе решать
2
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
29.08.2013, 21:28  [ТС] #27
Цитата Сообщение от zer0mail Посмотреть сообщение


Перечитывать мало проку, надо писать код, наступать на грабли (по возможности однократно) и двигаться вперед. Путь я описал, в пойдешь им или нет - тебе решать
http://www.williamspublishing.com/21-days.html
0
Убежденный
Системный программист
Эксперт С++
15618 / 7127 / 1128
Регистрация: 02.05.2013
Сообщений: 11,566
Записей в блоге: 1
Завершенные тесты: 1
29.08.2013, 21:28 #28
Цитата Сообщение от zer0mail Посмотреть сообщение
Перечитывать мало проку, надо писать код, наступать на грабли
+1
Грабли, грабли и только грабли !
Это должно быть девизом начинающего (и не очень) программиста.
Не наступив на грабли, никогда не поймешь некоторых вещей.
0
zer0mail
2342 / 1972 / 193
Регистрация: 03.07.2012
Сообщений: 7,090
Записей в блоге: 1
29.08.2013, 21:44 #29
У Н.Вирта есть замечательная книга: алгоритмы + структуры данных = программы, т.е программы состоят из структур данных и алгоритмов их обработки. Причем данные "важнее" в том смысле, что лучше иметь хорошие структуры данных и средние алгоритмы обработки, чем наоборот. И еще он говорил: "покажите мне Ваши таблицы (описывающие структуры данных) и ваши блок-схемы (описывающие алгоритмы) скорей всего не понадобятся, т.к. они буду очевидны" (я так понимаю - для данной задачи, которая известна).

В Си данные хранят в виде стуктур, а алгоритмы- это функции. Так вот, класс (упрощенно говоря) - это структура и работающие с ней функции "в одном флаконе".
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 21:44
Привет! Вот еще темы с ответами:

не могу понять - C++
есть такой код void addElement(const T& elem){ *(_pointer) = elem; // int t1 = _pointer < &_deque_data; // int t2 =...

не могу понять - C++
как сделать так чтобы B двигался по массиву? #include<iostream> #include <conio.h> using namespace std; int main() { int...

Не могу понять запись на с++ - C++
Не могу понять запись на с++ там какието проценты обьясните.

Не могу понять почему - C++
Есть кода программы(код взят разобраться): #include<iostream> using namespace std; class coord { protected: public: int x,y; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Yandex
Объявления
29.08.2013, 21:44
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru