7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
|
1 | |
Начало ООП17.02.2013, 14:10. Показов 2497. Ответов 38
Метки нет (Все метки)
Привет всем! У меня началось изучение ООП и соответственно пошли классы. Первое задание - постpоить класс для pаботы с массивом. Класс должен включать соответствующие поля: максимальный размер массива, индекс текущего элемента, указатель на массив. Я так понимаю что полями будут переменные которые я объявляю в private? А что мы делаем в public? Объявляем функции которые потом буду работать с переменными из private? Или все операции будут производиться в теле класса? Или эти функции и будут в теле класса, а не за его пределами?
Прошу помочь разобраться! Буду очень благодарен за помощь!
0
|
17.02.2013, 14:10 | |
Ответы с готовыми решениями:
38
Начало ООП. Классы Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n). Подсчитать количес Все положительные элементы поместить в начало массива В(n), а отрицательные элементы — в начало массива С(n) Начало разработки ООП библиотеки |
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
17.02.2013, 14:17 | 2 |
> Я так понимаю что полями будут переменные которые я объявляю в private?
Да. > А что мы делаем в public? Объявляем функции которые потом буду работать с переменными из private? Да. > Или эти функции и будут в теле класса, а не за его пределами? Да.
1
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
|
17.02.2013, 14:19 [ТС] | 3 |
Спасибо! А для чего нужен раздел protected?
0
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
|
17.02.2013, 14:29 [ТС] | 5 |
Ясно, т.е. protected мне здесь не понадобится , т.к. мне хватит только класса и его функций из паблика?
Добавлено через 3 минуты И еще) А зачем нужен конструктор, разве я не могу инициализировать переменные из private прямо в функциях?
0
|
17.02.2013, 14:33 | 6 |
Если нет наследования, то нет смысла и в protected.
И каждый раз после создания объекта вручную вызывать эти функции? А если забудем - в переменных будет лежать мусор? Удобнее же создать конструктор, который будет инициализировать элементы объекта сразу при его создании.
0
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
|
17.02.2013, 14:41 [ТС] | 7 |
Конструктор это же по сути функция? Есть какие-то особенности его написания. Если есть, то можно пожалуйста пример с комментами.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
17.02.2013, 14:47 | 8 |
самая главная особенность конструктор ничего не возвращает, даже void
вторая особенность конструктор всегда существует, даже если ты его не создашь создастся сам(неявный конструктор) Который ничего не делает в простом классе, но если существует хоть одна виртуальная функция то конструктор создаст таблицу виртуальных функций
1
|
17.02.2013, 14:47 | 9 | ||||||||||
AzgardC, имеет имя, совпадающее с именем класса, не имеет возвращаемого типа, может иметь список инициализации. Могут быть перегруженные версии конструкторов с разным количеством и типами параметров.
1
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
|
17.02.2013, 14:58 [ТС] | 10 |
Спасибо большое! И тот же вопрос по деструктору. И где он пишется вообще?
Добавлено через 4 минуты И всегда ли нужен деструктор?
0
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
|
17.02.2013, 15:06 [ТС] | 12 |
Спасибо) А что из себя представляет конструктор копирования и для чего он нужен?(извините за нубство)))
0
|
177 / 163 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
17.02.2013, 15:52 | 13 |
Нужен, если при создании объекта класса или в процессе его работы происходит захват каких-либо ресурсов, которые хорошая практика программирования на с++ требует освобождать.
Добавлено через 33 секунды ах) опаздал про деструктор написать)
0
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
||||||
17.02.2013, 16:56 [ТС] | 14 | |||||
ITcrusader, Все равно спасибо))
Добавлено через 51 минуту Так. Народ, можете поругать меня за мой мой маленький код?))
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
17.02.2013, 17:01 | 15 |
3: Плохо с переносимостью, лучше не использовать древний conio родом из MS-DOS.
7: array 10: Лучше по-отдельности определять поля, вдруг надо будет тип менять. 13-14: А где реализации? 22: Если реализация внутри класса, то не надо писать квалификатор с двойным двоеточием. 22-32: Внимательно подумайте, кто должен заполнять массив данными: он сам себя или это всё же кто-то внешний даёт ему данные? 32: Точка с запятой после закрывающей скобки определения класса. 33: Где main()?
1
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
||||||
17.02.2013, 17:18 [ТС] | 16 | |||||
Раунд 2))
0
|
17.02.2013, 17:21 | 17 |
Не по теме: Россия не Америка и не Англия. Пиндосы вообще тупые. строка 32 точки с запятой не хватает. Вот с этим нельзя не согласиться. Почему-то часто вижу многих, которые, ещё с первых упражнений с классами начиная, продолжают и далее делать ввод-вывод методом класса. ИМХО если есть геттер для элементов массива, то пользователь класса сам сможет их в цикле брать по-очереди и выводить (может совсем и не в консоль ему надо). Я уже привык, что многие примеры показываются в виде отдельных классов/функций без "главной функции". Большее недоумение вызывает, когда в ответ на приведённый код функции следует: "Эй, А у меня ошибка unresolved external symbol _main"
1
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
|
18.02.2013, 14:59 [ТС] | 18 |
Просто я думал так: сначала автоматически будет создан массив, а затем пользователь будет его изменять как хочет. Пусть хоть все элементы заменит)))
Добавлено через 2 минуты А main я еще сделаю) Добавлено через 3 минуты Ох! Извините! У меня потушили свет, и батарея на ноуте почти сдохла, так что добью эту тему завтра! Всем большое спасибо! Добавлено через 21 час 18 минут Продолжаю тему) Достаточно ли моего конструктора или обязательно должен еще быть конструктор с параметрами?
0
|
177 / 163 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
18.02.2013, 15:03 | 19 |
Обязателен лишь конструктор по умолчанию (без параметров, либо с параметрами со значениями по умолчанию). Потому он и создается компилятором, если ты его не создашь. Что касается других конструкторов, тут ты волен решать, нужны ли они для конкретного твоего класса.
Например, для массива целесообразно задавать конструктор с параметром, например, размером массива...и т.д.
1
|
7 / 7 / 1
Регистрация: 18.10.2012
Сообщений: 93
|
|
18.02.2013, 15:05 [ТС] | 20 |
ITcrusader, Все понял! Спасибо!
0
|
18.02.2013, 15:05 | |
18.02.2013, 15:05 | |
Помогаю со студенческими работами здесь
20
ООП мое первое начало Начало ооп, странное задание и глупенький ученик Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП Выписать в массив A с начало положительные числа X, а в начало второго массива B отрицательные числа X. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |