1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
|||||||||||
1 | |||||||||||
Что значит замена в процедуре26.01.2015, 10:48. Показов 750. Ответов 18
Метки нет (Все метки)
В лекциях по ООП у нас есть так называемая проблема "среза", но без объяснений, только код. Выделена строка (комментарием) и заменена на другую строку во втором коде. Поэтому вопрос: почему заменили и что происходит в правильной строке?
Помогите, пожалуйста.
0
|
26.01.2015, 10:48 | |
Ответы с готовыми решениями:
18
Что значит это условие? Немогу расчехлить на что тут идёт проверка!!! Что читается в процедуре? Подскажите, что в процедуре не так Что значит $FF? |
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
26.01.2015, 10:53 | 2 |
0
|
1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
|
26.01.2015, 10:54 [ТС] | 3 |
mss, а как тогда правильно?)
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
26.01.2015, 10:56 | 4 |
0
|
1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
|
26.01.2015, 10:57 [ТС] | 5 |
mss, в этом загвоздка, ибо дан просто кусок кода.
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
26.01.2015, 11:00 | 6 |
У предка нет метода Altitude, поэтому он не может быть переопределенным.
0
|
1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
|
26.01.2015, 11:02 [ТС] | 7 |
FIL, а кто тут предок? Ttransport?
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
26.01.2015, 11:02 | 8 |
Точнее, он даже предком не является. Получается, что оба примера - полная ерунда.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
26.01.2015, 11:05 | 9 |
Ну хоть пробовал его скомпилять ?
Ни тот ни другой кусок компиляться не будет, ибо для класса TAirTransport указан неправильный предок, а метод TAirTransport.Altitude в дан.случае не может быть виртуальным.
0
|
1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
|
26.01.2015, 11:08 [ТС] | 10 |
FIL, mss, ладно, провал с этим(
Может кто-нибудь из вас знает где можно найти пример именно на Delphi проблемы "среза"? Просто есть такой вопрос в экзаменационных билетах, а как видите, никакой базы для подготовки этого вопроса P.S. Искала в инете - нашла только на С++, но это пока темный лес для меня и на экзамене Delphi.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
26.01.2015, 11:09 | 11 |
Если же предком сделать (как это очевидно) TTransport, тогда у предка д.б. объявлен виртуальным метод Altitude, но тогда, к примеру, класс TИшак будет довольно смешно сделать наследником TTransport ..а ведь ишак - тоже транспорт)
0
|
1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
|
26.01.2015, 11:13 [ТС] | 12 |
mss, я без понятия как это сделать, к сожалению( Плохо еще понимаю все эти предки-потомки. Тем более реализацию этого в коде((
Нужен нормальный пример, иначе, если попадется этот билет - пипец(
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
26.01.2015, 11:22 | 13 |
Что под этим подразумевается даже Гугль не знает.
Может это личная проблема вашего препода?)
0
|
mss
|
26.01.2015, 11:25
#14
|
0
|
1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
||||||
26.01.2015, 11:29 [ТС] | 15 | |||||
FIL,
Проблема «среза» в полиморфизме: Данная проблема возникает в том случае, когда указателю на базовый класс присваивается ссылка на класс-потомок. Т.к. базовый класс не имеет представления о методах класса-потомка, то эти методы как бы «срезаются». Данную проблему можно решить путём приведения типов – указатель на базовый класс приводится к типу класса-потомка. Пример: Пусть дан класс родитель – Person.GetName(), и два класса-наследника – Student.GetID() и Prepod.GetAddress().
Только такое нашла. Но как это на Дэлфи перенести - не знаю. Честно говоря, не помню, чтобы препод акцентировал внимание на этой проблеме среза, но блин, она есть в билетах!
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
26.01.2015, 11:41 | 16 |
TAirTransport = class(TTransport)
public function Speed:float; override; function Altitude:float; end; Добавлено через 4 минуты Смысл этой абракадабры такой - не всякий транспорт способен передвигаться над землей, и потому понятие "высота" к нему неприменимо, но всякий воздушный транспорт передвигается над землей некоей высоте.
1
|
1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
|
26.01.2015, 11:43 [ТС] | 17 |
mss, это, получается, все?) Или это в тех процедурах заменить?)
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
26.01.2015, 11:44 | 18 |
не в процедурах, а в объявлении класса ТЭйрТранспорт
0
|
1 / 1 / 0
Регистрация: 13.10.2013
Сообщений: 99
|
|
26.01.2015, 11:46 [ТС] | 19 |
mss, да, я просто почему-то не подумав написала "процедуры" имея в виду те куски кода
Спасибо)
0
|
26.01.2015, 11:46 | |
26.01.2015, 11:46 | |
Помогаю со студенческими работами здесь
19
HInstance - что значит? Что значит эта ошибка ? Что значит это ошибка? Что вот это значит? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |