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

Вниз

Вспоминаю ООП. С трудом :(   Найти похожие ветки 

 
Курдль ©   (2006-09-11 12:54) [0]

Надо же, как быстро теряешь квалификацию. Вещи, которые раньше казались элементарными, теперь вызывают сомнения. Вот, например. в таком случае.

Есть класс А и множество его экземпляров.
Методы этого класса крайне просты - всего лишь вызывают статические методы некоего статического класса В. Можно ли быть уверенным, что ни один их экземпляров класса А ошибочно не получит данные, предназначенные для другого экземпляра класса А?  Естественно, класс В не использует статических полей, а лишь локальные переменные, используемые внутри его.


 
Alkid ©   (2006-09-11 12:56) [1]

Локальные переменные его статических методов? Тогда не получит.


 
Cyrax ©   (2006-09-11 13:07) [2]

Что значит "предназначенные для другого экземпляра класса А"?
И как вообще получает данные объект клааса А ?


 
Курдль ©   (2006-09-11 13:16) [3]


> Alkid ©   (11.09.06 12:56) [1]
> Локальные переменные его статических методов? Тогда не получит.

Да, естественно, - только локальные переменные в зоне видимости методов.
Все "собственные" или "индивидуальные" данные хранятся в полях объектов А.


> Cyrax ©   (11.09.06 13:07) [2]
> Что значит "предназначенные для другого экземпляра класса
> А"?
> И как вообще получает данные объект клааса А ?

Напр.


public class A()
{
  private Date date;

  public void AskDate()
  {
     date = B.GetDate();
  }
}

public static class B()
{
  public static Date GetDate()
  {
     return System.CurrentDate();
  }
}



А вот еще занимательная проблема.

Есть 3 класса - А, В, и С. Они не являются никакими "родственниками".

Есть экземпляр класса А, который четко "знает" о существовании экземпляра класса В и экземпляра класса С (сам их создал, либо имеет в полях ссылки на них, либо через другой объект - не важно).
Как заставить передать какие-либо данные от объекта В к объекту С?

(фрэнды, мьютексы и т.п. не предлагать).


 
Плохиш ©   (2006-09-11 13:17) [4]


> Можно ли быть уверенным

В данной постановке вопроса, ответ "уверенным быть нельзя", кто ж его знает, что там кодер накодил. Только, какое это всё имеет отношение к ООП?


 
Курдль ©   (2006-09-11 13:19) [5]


> Плохиш ©   (11.09.06 13:17) [4]
> Только, какое это всё имеет отношение к ООП?

Непосредственное! В процедурном программировании вопросов по объектам не возникает.


 
Джо ©   (2006-09-11 13:20) [6]

> Как заставить передать какие-либо данные от объекта В к
> объекту С?

Так зачем тогда сделано так, чтобы класс B не знал о классе C?


 
Курдль ©   (2006-09-11 13:24) [7]


> Джо ©   (11.09.06 13:20) [6]
> Так зачем тогда сделано так, чтобы класс B не знал о классе C?

А я не могу передать эти "знания" т.к. экземпляры класса А находятся на одном домене, а В и С - на другом. Т.е. я не могу, например, в конструкторе класса С передать параметром ссылку на ранее созданный экземпляр класса В.


 
Джо ©   (2006-09-11 13:29) [8]

> [7] Курдль ©   (11.09.06 13:24)

Ну, пускай тогда через A обемениваются. Т.е, пусть A передает в B ссылку на свой метод обмена (реализация зависит от языка и личных предпочтений, например, делагатом).

И, если этим B и C нужно часто "обмениваться" данными — не сделать ли их одним классом?


 
Kolan ©   (2006-09-11 13:34) [9]


> Надо же, как быстро теряешь квалификацию

Это вы после 1С?


 
Курдль ©   (2006-09-11 17:14) [10]


> Джо ©   (11.09.06 13:29) [8]
> Ну, пускай тогда через A обемениваются.

Нельзя. Класс А находится за границами домена, в котором В и С.
Данные, которые нужно передавать от класса В к С между доменами не ходють (не сериализуются).


> И, если этим B и C нужно часто "обмениваться" данными —
> не сделать ли их одним классом?

Деление на разные классы предполагались из архитектурной целесообразности и с точки зрения экономии ресурсов.
Но в конце концов классы В и С пришлось объединить в один.


> Kolan ©   (11.09.06 13:34) [9]
> Это вы после 1С?

Нет! Бог миловал!



Страницы: 1 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
2-1157789782
VlD86
2006-09-09 12:16
2006.10.01
TListBox.Tag


2-1157870054
F1rst
2006-09-10 10:34
2006.10.01
Вопрос по clipboard???


2-1158034025
Drowsy
2006-09-12 08:07
2006.10.01
Копирование строки таблицы.


1-1156165096
laurely
2006-08-21 16:58
2006.10.01
Работа с тонким клиентом


11-1132952788
Vedun
2005-11-26 00:06
2006.10.01
Добавление формы в проект