Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

Есть вакансии в Москве   Найти похожие ветки 

 
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


> здесь мы повысили область видимости переменной Field

unit 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;
Скачать: CL | DM;

Наверх




Память: 1.08 MB
Время: 0.061 c
14-1093603838
SergP
2004-08-27 14:50
2004.09.19
Чем можно сделать chm?


14-1093611245
vkraw
2004-08-27 16:54
2004.09.19
помогите! plz-plz-plz-plz!!! Halcyon


1-1094187742
Ms.Drynkul
2004-09-03 09:02
2004.09.19
Как таскать форму за ее поверхность?


6-1089671512
Лев Ландау
2004-07-13 02:31
2004.09.19
Помогите в реализации хттп запроса ! ! !


14-1093711464
Torry Real 1444
2004-08-28 20:44
2004.09.19
Нужен человек на саппорт...