Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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


> здесь мы повысили область видимости переменной 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 1.06 MB
Время: 0.105 c
3-1092988702
Janbolat
2004-08-20 11:58
2004.09.19
Скиньте линки про запросы, query если можно с чем их едят


14-1093338584
Piter
2004-08-24 13:09
2004.09.19
Плагин к Miranda - popup


6-1089646712
Serg_lys
2004-07-12 19:38
2004.09.19
Работа с компонентом TNMSMTP применение кодировки


1-1094202727
Kernel
2004-09-03 13:12
2004.09.19
WebBrowser через прокси


14-1094148392
SV
2004-09-02 22:06
2004.09.19
Тряхнуть стариной...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский