![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 11.04.2012
Сообщений: 15
|
![]()
Доброго времени суток. Изучаем ООП, нужна помощь в объяснении некоторых нюансов.
Вот собственно программа, которая оценивает жениха(лол). #pragma hdrstop - для чего нужна эта деректива ? Модуль 1.cpp Код:
Здесь вроде все понятно: 2 конструктора и вызов двух функций из класса Tzenih и его наследника. Модуль 2 Заголовок Код:
В private - объявление скрытых элементов. От кого они скрываются ? В protected объявляются элементы доступные только потомкам. Разве нельзя объявить это же в public(что собственно я и сделал). Конструкторы обязательно должны называться так же как и класс ? Модуль 2 cpp Код:
![]() Модуль 3. заголовок Код:
![]() Vjlekm 3. cpp Код:
За раннее спасибо за ответы! |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
![]()
1) Смысл private - скрыть "ненужные" для потомков данные и функции, если их вызов или использование нежелательны. В домашней микроволновке тебе же хватает панели управления (public-интерфейс) и ты не лезешь замыкать контакты в блок питания (private-секция)
2) В protected помещаются данные и функции, которые нужны для внутренних вызовов класса и потомков. 3) Конструкторы обязательно называются так же, как класс. 4) Двойное двоеточие - описание функции-члена класса, одинарное - наследование класса от базового. 5) Унаследовал |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.08.2011
Сообщений: 55
|
![]()
ООП зиждется на инкапсуляции (сокрытии ненужной пользователю информации), полиморфизме (поведении разных объектов как одного и того же) и виртуальных функциях (поведение класса зависит от того какой он).
public, private, protected нужны для первого и частично для третьего. Public – определяет, что все свойства и методы класса будут доступны для использующего класс. Private – определяет свойства и методы доступные ТОЛЬКО этому классу. FataLL вам верно сказал его смысл. Protected – имеет смысл ТОЛЬКО там, где будет наследование. Оно нужно для того, чтобы наследник имел доступ к каким-то свойствам или функциям базового класса. Т.е. private ограничивает доступ ТОЛЬКО членами класса, а protected расширяет его на непосредственных наследников этого класса. Далее, двойное двоеточие может расширять область видимости. Совсем не то, что говорил FataLL. Пример: ::GetTickCount() – говорит о том, что функция взята из глобального пространства имён. std::string говорит о том, что объявление string находится в пространстве имён std. Также и для методов класса – нужно компилятору указать, где их искать. Одинарное двоеточие чаще используется, чтобы указать компилятору, какой метод класса реализуется. Подробностей уже не помню. Все вопросы, которые я оставил без ответа вам уже осветил FataLL.
"Пока бабка не смоет косметику, русский мужик не перекрестится" (C) Кто-то
Последний раз редактировалось Airhand; 28.05.2013 в 11:55. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 11.04.2012
Сообщений: 15
|
![]()
Очень большое спасибо за ответы товарищи, большое спасибо!
Вот еще одна программа. В общем нужно унаследоваться от TStringGrid, у обьектов которого при нажатии F11 исчезают фиксированные строки и колонки, а при повторном нажатии снова появляются. В коментариях постараюсь разместить интересующие моменты заголовок библиотеки StringGri Код:
Код:
Код:
Еще раз заранее спасибо за ответы. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Указание компилятору на то, что в данной подпрограмме необходимо использовать внутренние регистры процессора. Данная команда не всегда выполнима, но если её нет, то вычисления происходят предпочтительно в оперативной памяти, что замедляет исполнение программы.
Само название fast call, говорит само за себя. Это быстрый вызов. Чаще всего, компилятор отдаёт предпочтение для размещения в регистрах, счётчики циклов for. Но если у процессора имеется кеш-память, в ней может располагаться часть стека, и вызываемые через него функции. Кеш, это так называема сверхоперативная память, размещённая внутри самого процессора.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 30.05.2013 в 11:30. |
![]() |
![]() |
![]() |
#6 | ||
Пользователь
Регистрация: 23.08.2011
Сообщений: 55
|
![]()
Идём по порядку:
1. Я могу ошибаться, но вроде от визуальных компонент нельзя так просто наследоваться. 2. Цитата:
3. Цитата:
"Пока бабка не смоет косметику, русский мужик не перекрестится" (C) Кто-то
|
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужно переделать в объектно-ориентированное программирование | Андрей11111 | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 29.05.2012 16:14 |
Объектно-ориентированное программирование | Kira444 | Помощь студентам | 21 | 03.02.2011 16:34 |
Обьектно-ориентированное программирование.Делфи | Den55 | Помощь студентам | 0 | 30.05.2010 23:22 |
Объектно -ориентированное программирование | Asira | Помощь студентам | 3 | 05.03.2010 17:52 |