Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
Курдль ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.013 c
2-1157927362
XxXxXxxxxxxxxx
2006-09-11 02:29
2006.10.01
?


4-1148307365
sholom
2006-05-22 18:16
2006.10.01
Подключить к COM-порту или USB


15-1157638395
Alex Bakulin
2006-09-07 18:13
2006.10.01
Директивы условной компиляции


9-1136550582
кобзон
2006-01-06 15:29
2006.10.01
Вопрос по DirectX


1-1155780530
_HAWK_
2006-08-17 06:08
2006.10.01
Картинки в ListBox e





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский