Форум: "Потрепаться";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
ВнизЕсть вакансии в Москве Найти похожие ветки
← →
jack128 © (2004-08-25 15:46) [200]
> не понял. Что, в классе разве нельзя объявить
>переменную типа другого класса, аля:
>
>MyClass1 = class
> mc2: TMyClass2
> ...
насколько я понял имеется в виду чтоо то типа этого:
type
TMyObject = class
type
TMySimpleObj = class
...
end
FField: TMySimpleObj;
end;
правда не помню такого в плюсах, но шарпе это есть точно..
> . -Нет управления видимостью полей и методов при
> наследовании
TChild = protected class(TParent); - видимость всех полей/свойств/методов TParent"a уменьшается до protected
но ИМХО это не правильно. Наследник должен полностью поддерживать интерфейс родителя..
← →
Суслик © (2004-08-25 15:48) [201]
> Игорь Шевченко © (25.08.04 15:44) [197]
Блин, а вы правы - я о беке :))) Вечно я их путаю...
Фаулер смутил - он с беком писал.
Буч это хорошо во всех аспектах. Спорить не буду - это не г...
Гамма еще лучше...
← →
Piter © (2004-08-25 15:50) [202]Суслик © (25.08.04 15:35) [194]
Уверяю такую впечатличетльную натуру как ты это
с чего это ты взял про мою впечатлительность? Я вовсе не впечатлительный.
Никак IS забыть не можешь? :)
← →
Суслик © (2004-08-25 15:52) [203]jack128 © (25.08.04 15:46) [200]
> но ИМХО это не правильно. Наследник должен полностью поддерживать
> интерфейс родителя..
я кстати тоже считаю что это не верно...
protected class в шестерке нет.
какую версию имел в виду?
← →
Piter © (2004-08-25 15:53) [204]jack128 © (25.08.04 15:46) [200]
правда не помню такого в плюсах, но шарпе это есть точно..
не понял. А смысл? Просто объявить тип, используемый только внутри класса? А почему бы не объявить этот тип не класса? Какое принципиальное различие?
jack128 © (25.08.04 15:46) [200]
TChild = protected class(TParent); - видимость всех полей/свойств/методов TParent"a уменьшается до protected
вот и я о том же. Почему же нельзя управлять?
← →
Суслик © (2004-08-25 15:54) [205]
> Игорь Шевченко © (25.08.04 15:44) [197]
Вот книга с беком
http://www.books.ru/shop/books/79190
Так что прошу прощения за оскорбления буча.
Он вам не друг случайно?
← →
Piter © (2004-08-25 15:54) [206]Суслик © (25.08.04 15:52) [203]
protected class в шестерке нет
как это нету?! Ты хочешь сказать, что в D6 нету секции protected? А published есть? :)
← →
Piter © (2004-08-25 15:55) [207]бы не объявить этот тип не класса
бы не объявить этот тип Вне класса
← →
Суслик © (2004-08-25 15:55) [208]
> Piter © (25.08.04 15:54) [206]
нельзя вот так ниписать
tchild = protected class(tparent)
← →
Суслик © (2004-08-25 15:56) [209]
> Piter © (25.08.04 15:54) [206]
Да и published нельзя?
Вы все откуда такую штуку взяли?
← →
Nous Mellon © (2004-08-25 15:58) [210]
> Она твоя жена или куда ?
ААААА!! Я рыдал... Вот уж blackman зажег так зажег......
Сорри...
А по ветке:
Тут нужно выяснить что надо: много денег, если да то лучше стаить свой бизнес и работать. Удача повернется, если голова на плечах.
А если нужна интересная и среднеоплачиваемая работа программера то тут плюс минус 100 баксов большой роли не сыграют. ИМХО
← →
Piter © (2004-08-25 16:00) [211]Nous Mellon © (25.08.04 15:58) [210]
не оффтопь :))))
Суслик © (25.08.04 15:56) [209]
Вы все откуда такую штуку взяли?
ну прямо так писать, имхо, нельзя. Я лично подумал, что jack128 в переносном смысле имел
← →
Игорь Шевченко © (2004-08-25 16:05) [212]Piter © (25.08.04 15:45) [198]
> да, е-мое, Игорь! Вот вы что, ни разу не смотрели в MSDN?!
> А зачем?!
Я смотрел чуть позже, после того, как дорос до нужного уровня. Не моя вина, что MSDN появился позже :)))
> Это статистический факт, что на C пишутся больше программ,
> в том числе и популярных, крупных
Это факт. Но еще и факт, что Delphi вышел в 1995-м году. А С несколько раньше.
> Неважно, почему они привыкли - из-за наличия книг или там
> еще почему
Учили их. В колледжах. И на курсах.
Массовые самоучки только у нас, в exUSSR
← →
Piter © (2004-08-25 16:11) [213]Суслик, то есть я имел в виду это:
TMyClass1 = class
public
Field: integer;
end;
TMyClass2 = class
private
Field: integer;
end;
В TMyClass2 ты скрыл поле Field. Неужто ты об этом не знал?
Игорь Шевченко © (25.08.04 16:05) [212]
Учили их. В колледжах. И на курсах.
Массовые самоучки только у нас, в exUSSR
ну а почему же их не Delphi учили?
Но еще и факт, что Delphi вышел в 1995-м году
согласен. Немаловажно. Но ведь и VC, думаю, появился не так давно?
← →
Суслик © (2004-08-25 16:12) [214]
> Игорь Шевченко © (25.08.04 15:44) [197]
> В консерватории уже все поправил ? Странно, правда, у кого-то
> теория с практикой не расходится...?
Про какие консерватории идет речь?
← →
Игорь Шевченко © (2004-08-25 16:12) [215]Piter © (25.08.04 16:11) [213]
> ну а почему же их не Delphi учили?
Очевидно, потому что дешевле, нет ?
> Но ведь и VC, думаю, появился не так давно?
Причем здесь конкретный компилятор ? (Кстати, он довольно давно появился). Мы же речь ведем вроде о языке, а не о конкретном компиляторе.
← →
Суслик © (2004-08-25 16:13) [216]
> Piter © (25.08.04 16:11) [213]
ты что-то явно не то написал.
будь добр, напиши свой пример аккуратней
← →
paul_k © (2004-08-25 16:26) [217]Да... а как все начиналось...
Тебуется программист....
Требуется программист - стажер...
А потом как всегда - пузомерка что круче дельфи или си..
← →
KSergey © (2004-08-25 16:31) [218]> [217] paul_k © (25.08.04 16:26)
Во-во..
Как всегда
Впрочем, все сидят на неплохих, видимо, местах, да еще имеют возможность тратить кучу времени на ля-ля - нафиг такую работу менять? ;)
← →
jack128 © (2004-08-25 16:34) [219]
> Суслик ©
нету такого вообще. Это пример был. Возможный синтаксис, если бы наследование с ограничением видимости было реализовано в дельфи.
> не понял. А смысл? Просто объявить тип, используемый
> только внутри класса? А почему бы не объявить этот тип
> не класса? Какое принципиальное различие?
если класс имеет смысл ТОЛЬКО внутри другого класса, то логично и объявлять его внутри этого класса, не так ли?
← →
Piter © (2004-08-25 16:44) [220]Игорь Шевченко © (25.08.04 16:12) [215]
же речь ведем вроде о языке, а не о конкретном компиляторе.
я лично веду речь о популярности именно Дельфи, а не Object Pascal :)
jack128 © (25.08.04 16:34) [219]
если класс имеет смысл ТОЛЬКО внутри другого класса, то логично и объявлять его внутри этого класса, не так ли?
ну я не спорю, но разве это можно считать уж прямо недостатком? Особенность, не более. Ма-а-аленькое удобство. Принципиальных отличий не вижу.
← →
Piter © (2004-08-25 16:48) [221]Суслик © (25.08.04 16:13) [216]
будь добр, напиши свой пример аккуратней
Сори. Вот:TMyClass1 = class
private
Field: integer;
end;
TMyClass2 = class(TMyClass1)
public
Field: integer;
end;
← →
Piter © (2004-08-25 16:49) [222]здесь мы повысили область видимости переменной Field
← →
Суслик © (2004-08-25 16:49) [223]
> Piter © (25.08.04 16:48) [221]
так можно, наоборот (понизить) вроде нет
← →
jack128 © (2004-08-25 16:50) [224]Piter © (25.08.04 16:49) [222]
нет, здесь мы объявили новое поле
← →
Суслик © (2004-08-25 16:52) [225]точно - это новое поле.
можно так для пропертей.
повысить можно, понизить нет (опять же вроде - может уже подзабыл)
← →
Piter © (2004-08-25 16:52) [226]да, я здесь ошибся. Объявляется новая переменная
← →
VMcL © (2004-08-25 16:52) [227]>>jack128 © (25.08.04 16:34) [219]
Если класс Б имеет смысл только внутри класса А, то имеет смысл вынести класс А в отдельный модуль, а класс Б определить в этом же модуле, и если не нужно, чтобы класс Б был виден извне, то задекларировать его только в секции implementation.
← →
Piter © (2004-08-25 16:52) [228]Значит, из изменений видимости доступно только опубликование в published
← →
Piter © (2004-08-25 16:53) [229]VMcL © (25.08.04 16:52) [227]
да, кстати, тоже вариант. Так например TTabString реализован для TTabControl
← →
Суслик © (2004-08-25 16:54) [230]
> Piter © (25.08.04 16:52) [228]
> Значит, из изменений видимости доступно только опубликование
> в published
вроде не только - проперти можно из протектед в паблик перенести.
← →
Игорь Шевченко © (2004-08-25 16:55) [231]Piter © (25.08.04 16:49) [222
> здесь мы повысили область видимости переменной Fieldunit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
type
TMyClass1 = class
private
Field: integer;
end;
TMyClass2 = class(TMyClass1)
public
Field: integer;
end;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
C: TMyClass2;
C1: TMyClass1;
begin
C := TMyClass2.Create;
C.Field := 2;
C1 := C;
ShowMessageFmt("TMyClass1.Field = %d, TMyClass2.Field = %d", [C1.Field, C.Field]);
end;
end.
Кто из нас ошибся ?
← →
jack128 © (2004-08-25 17:00) [232]из изменений области видимости доступно доступно любое ПОВЫШЕНИЕ области видимости свойств и любое изменение области виртуальных и динамичиских методов. Правда к чему это приводит я не разбирался..
> то задекларировать его только в секции implementation.
и как же вы тогда объявите поле с типом этого класса?
> Так например TTabString реализован для TTabControl
угу. а соответствующая переменная объявлена как TStrings. Но если в коде нужно обратиться к спицифичным методам TTabStrings, то нужно делать приведение типов, а это не удобно.
← →
Суслик © (2004-08-25 17:03) [233]
> угу. а соответствующая переменная объявлена как TStrings.
> Но если в коде нужно обратиться к спицифичным методам TTabStrings,
> то нужно делать приведение типов, а это не удобно.
я часто на это иду. т.к. большое количество доступных классов не есть хорошо, т.к. сложно писать документацию: приходится объяснять к чему все эти левые классы. Понятно, что не очень красиво, но зато interface содержит только то, что нужно.
второй вариант - вообще все держать под implementation - пользоваться interface и фабриками.
← →
Piter © (2004-08-25 17:05) [234]jack128 © (25.08.04 17:00) [232]
Но если в коде нужно обратиться к спицифичным методам TTabStrings
ну TString специально разрабатывался, чтобы учесть такое, есть соответствующие абстрактные методы... да в общем, ты и сам знаешь :)
Игорь Шевченко © (25.08.04 16:55) [231]
Кто из нас ошибся ?
Игорь! Да я уже признал свою ошибку...
← →
jack128 © (2004-08-25 17:14) [235]Суслик © (25.08.04 17:03) [233]
я часто на это иду. т.к. большое количество доступных классов не есть хорошо, т.к. сложно писать документацию: приходится объяснять к чему все эти левые классы.
Кошмар.. меня от такого бог миловал..
Нет, идея с вложенными типами(зачем ограничеваться только классами? ;-)) очень не плоха..
А
> ну TString специально разрабатывался, чтобы учесть
> такое, есть соответствующие абстрактные методы
предок не может учесть все потребности всех своих наследников. Иначе вообще вся идея наследования летит к черту. в данном конкретном примере у TTabStrings просто нет каких то специфичных методов, поэтому поле и объявили как TStrings..
← →
Суслик © (2004-08-25 17:24) [236]
> jack128 © (25.08.04 17:14) [235]
Знаешь, кроме эстетики не вижу ничего здесь плохого. implementation для клиента - темная лошадка.
но все же вложенные типы мне нравились бы больше.
в этом я с тобой согласен
← →
Piter © (2004-08-25 17:37) [237]Да и я не против этой идеи. Но говорить, что это такой уж недостаток дельфи я бы не стал
← →
paul_k © (2004-08-25 23:33) [238]Поаторюсь ещё раз
есть вакансии в Москве, в основном студентам старших курсов. см. пост №2.
← →
Piter © (2004-08-25 23:53) [239]через пару лет повтори свое объявление, плиз :)
← →
paul_k © (2004-08-26 00:52) [240]2Piter © - станешь студентом чеерз пару лет?
Страницы: 1 2 3 4 5 6 7 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
Память: 1.07 MB
Время: 0.068 c