Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Peredacha globalnyh peremennyh thredam, Ne poluchaetsia izmeniat peremenye 
:(
    Опции темы
Domestic Cat
Дата 12.5.2004, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
Попытайся с первых программ присвоить себе Явский стиль программирования. Вместо глобальных переменных например используй класс со статическими функциями. Очень пригодится, если надо будет расширить программу. Например проверкой на максимально возможное число коннектов.


1. Termin "globalnaya peremennaya" - eto iz c++, v Java globalnih peremennih net i byt ne mozhet (esli ne verite - vot ssilka).
Termin functsiya - opyat' taki ne iz Java. Metod nikak funktciey nazvat nelzya. Metod - eto sposob communikatsii objectov classa. Bolshe nichego v Java net.

2. Stil' Java - eto REUSE (pereispolzovanie, no tochnogo russkogo termina ya ne znayu). V classe ThreadGroup est method activeCount() - zachem velosiped izobretat? Kogda vy zapuskaete novii thread, sootvetstvuyushee pole classa izmenyaetsa. Vvodya static pole vy delaete tu zhe rabotu snova.

3. Nakonets, vvodit otdelnii class dlya static metodov - eto uzh tochno ne Java. Nuzhno dumat o classe kak o "fabrike objectov", a ne meste gde metody hranyatsa. Esli vy proizvodite neskolko objectov classa A, to static metody dolzhny byt obshimi dlya objectov otogo classa.
V dannom sluchae kolichestvo aktivnyh Srever'ov skoree dolzhno byt opredeleno v classe Server, a ne drugom classe. Eto nazyvaetsa ENCAPSULATION. Kak raz eto i est horosho pri dalneyshem processe.


--------------------

PM   Вверх
sergejzr
Дата 12.5.2004, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



/OFFTOP Раз уж решил разбирать мой пост по косточкам, придётся ответить так же... /OFFTOP

Теперь расскажи это всё человеку, который только начинает программировать (на Яве). Потом спроси у него чего он из этого понял.
Читай внимательно там написано "вместо глобльных переменных". Я пытаюсь обьясняться с человеком на "его" языке (с функцией тоже самое).
И вообще читай вопрос! Где там стоит "как оптимально сосчитать количество запущеных потоков?". А про работу с глобальными вещами вообще - стоит обьяснить.
___________________________________________________________
PS:
Всё пошёл Флейм!
Я больше не буду писать подобных ответов. Если хочется дискутировать дальше по поводу определений и терминов, пожалуйста создай тему во флейме...

Это сообщение отредактировал(а) sergej.z - 12.5.2004, 01:53


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Domestic Cat
Дата 12.5.2004, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Esli eto fleim, to forumi Sun Microsystems sostoyat iz nego na 90%. Vse taki ya pishu o Java, a ne o ptitsah.

Teper o cheloveke nachinayushem programmirovat. Etot chelovek kogda-to da dolzhen uznat o tom chto takoe metod, static pole, itp. No esli on etogo ne znaet, vdvoine huzhe govorit emu o Java v terminah C++.

PS. Po-povodu dokumentatsii: vse taki Java pishetsa firmoi Sun, kotoraya nahoditsa v amerike, a ne v Rossii. A raz tak, to i poslednyaya dokumentatsiya/specifikatsiya vsegda budet snachala po-angliiski. Samie novie/horoshie knigi budut tozhe po-angliiski napisani.


--------------------

PM   Вверх
Stvan
Дата 12.5.2004, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 28.10.2003

Репутация: нет
Всего: нет



А где хранить переменную, если она используется в программе в разных местах, причем во многих ?
PM MAIL   Вверх
AntonSaburov
Дата 12.5.2004, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата
А где хранить переменную, если она используется в программе в разных местах, причем во многих ?

1. Можно описать ее как статическую внутри какого-то класса и использовать.

2. Есть вариант использовать шаблон Singletone (предназначен для того, чтобы в системе был один экземпляр класса) - и такой объект будучи "одиноким странником" smile.gif может быть использован как хранилище глобальных переменных.
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 12.5.2004, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Не совсем понятно, о какой переменнои идет речь. Опять таки, "просто" переменних в Java нет, ест class variables и instance variables. Ето в C можно говорить о переменнои самои по себе, в Java есть обekты, а переменная - ето одна из характеристиk об'ekта. Отделнии класс для етого не нужен, тем более не надо исползовать Singleton pattern. Когда я пишу Lock Manager для базы данних, мне надо точно знат что такоы обekт может быт тол'ко один. Тогда я пишу его как Singleton; если kлиент пытаетса сделать 2 LockManager'a, конструkтор бросит Exception.

Если хотите иметь константу - обявите ее public final static. Доступ к неи будет через MyClass.MY_CONSTANT. Static variable характеризует kласс как елое. Доступ к не может быт MyClass.myStaticVariable если она public. Вообше же лучсе написат getter / setter методы. Для static переменноы луче чтобы они были public static а переменная private. Для instance переменных ети методы static быт не должны, зато переменная должна быть private (ето не требование, но обычно все instance variables - private)

PS. Uzh luchse pisat' na translite



--------------------

PM   Вверх
Stvan
Дата 13.5.2004, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 28.10.2003

Репутация: нет
Всего: нет



2DomesticCat
Любишь ты углубляться в терминологию smile.gif
Чем вот это:
Цитата
Если хотите иметь константу - обявите ее public final static. Доступ к неи будет через MyClass.MY_CONSTANT. Static variable характеризует kласс как елое. Доступ к не может быт MyClass.myStaticVariable если она public. Вообше же лучсе написат getter / setter методы. Для static переменноы луче чтобы они были public static а переменная private. Для instance переменных ети методы static быт не должны, зато переменная должна быть private (ето не требование, но обычно все instance variables - private)

отличается от этого:
Цитата
1. Можно описать ее как статическую внутри какого-то класса и использовать.


О терминологии можно спорить долго, в яве действительно нет глобальных переменных, но есть способы их использовать smile.gif
PM MAIL   Вверх
Domestic Cat
Дата 13.5.2004, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
Чем вот это: ..... отличается от этого:


Ya sobstvenno otvechal na vopros

Цитата
А где хранить переменную, если она используется в программе в разных местах, причем во многих ?






--------------------

PM   Вверх
Stvan
Дата 14.5.2004, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 28.10.2003

Репутация: нет
Всего: нет



Спасибо за подробный ответ.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.