powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Изолированные классы
41 сообщений из 41, показаны все 2 страниц
Изолированные классы
    #40018132
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, всех с пятницей)
Натолкнулся недавно на понятие изолированные классы, почитал, посмотрел примеры, немного не вкурил.
Можете дошкольнику объяснить на пальцах что это такое и какая у них сфера применения?)
...
Рейтинг: 0 / 0
Изолированные классы
    #40018134
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как этот термин звучал в англоязычном варианте?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018136
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sealed?

для чего, написано в первоисточнике

https://openjdk.java.net/jeps/360 Goals

Allow the author of a class or interface to control which code is responsible for implementing it.
Provide a more declarative way than access modifiers to restrict the use of a superclass.
Support future directions in pattern matching by underpinning the exhaustive analysis of patterns.

Non-Goals

It is not a goal to provide new forms of access control such as "friends".
It is not a goal to change final in any way.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018137
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://habr.com/ru/company/otus/blog/527928/ Запечатанные классы
...
Рейтинг: 0 / 0
Изолированные классы
    #40018141
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как этот термин звучал в англоязычном варианте?


Sealed.

Вадя уже скинул ссылку, читаю, идея пока ускользает.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018143
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я помню этот термин. Я его читал у Хорстмана в его Scala-книжке.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018146
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Брайн Гоетс его предложил в 2019 году и получается что в JDK-15 уже имплементировано
судя по этой бумажке.

https://openjdk.java.net/jeps/360
...
Рейтинг: 0 / 0
Изолированные классы
    #40018174
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
Я почитал, там один из примеров понятен, одно из назначений такого типа класса-
Изолированный класс позволяет указывать, какие классы ( по аналогии с implements, где мы перечисляем обязательные к реализации методы) могут его наследовать. Это понятно, в принципе полезно. Но дальше начинается кислота
...
Рейтинг: 0 / 0
Изолированные классы
    #40018176
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если лично вам не требуется сложный дизайн иерархии классов - это ещё ничего не значит.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018181
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Если лично вам не требуется сложный дизайн иерархии классов - это ещё ничего не значит.


Согласен, более того, даже если вам все таки требуется сложный дизайн иерархии классов-- это тоже ещё ничего не значит. О_О

Я в джаве относительно новичок, у меня иерархия глубиной дай бог классов в 3

Имею в виду именно структурное взаимодействие. Понимаю о чем вы.

Тяжело без крупных проектов и практики в общем втащить это понятие)
...
Рейтинг: 0 / 0
Изолированные классы
    #40018184
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти многие пропозиции в JCP как и в комитетах С++ появляются не из космоса.
Вся функциональщина (lambda, e.t.c.) была создана еще в середине 20-го века. И многие идеи
которые кажутся новыми на самом деле уже много раз пережевывались в других
языках и системах.

Мне тут чем интересна отсылка к Scala. Книга 2013 года. Фича Sealed уже существовала.
И я думаю интересно проследить ее генезис.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018186
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не ну вовремя чо, и 10 лет не прошло
По иронии судьбы сделали sealed в java когда в скале сделали им нормальную замену в виде енумов(единственное что было хуже в скале чем в джаве).Если честно не понимаю смысла совсем, учитывая что алгебраические типы данных вряд-ли взлетят, паттерн матчинг тоже кастрированный, да и реально в джаве крутые енумы, нафиг огород городить..
Goetz вроде умный мужик же, но все никак не поймет что нету особого смысла пытаться делать java более функциональной не убирая мутабельность. А мутабельность не ограничить из-за обратной совместимости. С опшионалом обосрались, стримы тоже такое себе.. единственное что лямбды сделали более менее, но и те из-за слабого inference корявенькие. Теперь вот обсер с паттерн матчингом и sealed. Хотя вот рекорды смотрятся ещё симпатично, если бы не невозможность добавлять методы и поля
Короче джава медленно но верно превращается в винегрет возможностей, но в отличие от скалы без связующей парадигмы. Переходили б уже на Котлин что-ли и не мучали старушку джаву
...
Рейтинг: 0 / 0
Изолированные классы
    #40018187
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте придумаем софистический пример.

Я вот только что придумал.

(это в Scala)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
sealed class DayOfWeek {
  case class Mon() extends DayOfWeek
  case class Tue() extends DayOfWeek
  case class Wen() extends DayOfWeek
  case class Thi() extends DayOfWeek
  case class Fri() extends DayOfWeek
  case class Sat() extends DayOfWeek
  case class Sun() extends DayOfWeek
}
...
Рейтинг: 0 / 0
Изолированные классы
    #40018189
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин по теме то совсем забыл
В общем, тебе как обычному джава программисту этот sealed не впился. Это скорее задел на будущее, видимо в дальнейшем будут пытаться протянуть алгебраические типы данных и typeclass паттерн. На данный момент вижу два более мене осмысленных применения sealed
1) Для особо упоротых это возможность дать понять JVM что вариантов реализации мало и компилятор может соптимизмровать на времени вызова подставив би- либо триморфный вызов вместо динамического диспатча. Ключевое слово упоротых
2) Если делаешь паттерн матчинг на объекте с типом интерфейса и не предоставляет ветку для какого-либо подкласса то компилятор сгенерирует ворнинг, мол лажа у тебя и этот подкласс никак не обрабатывается. Почему нельзя просто взять енум остаётся загадкой
...
Рейтинг: 0 / 0
Изолированные классы
    #40018190
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

И чем энум не устраивает?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018191
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
mayton,

И чем энум не устраивает?

Погоди. Дай закончу.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018192
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так. 100% детерминизм матчинга. И этот матчинг в фазе компилляции
уже проверен. В нем не будет новых и неизвестных классов и мы никогда
не получим ошибку даункастинга к неизвестному новому наследнику.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  sealed class DayOfWeek
    case class Mon() extends DayOfWeek
    case class Tue() extends DayOfWeek
    case class Wen() extends DayOfWeek
    case class Thi() extends DayOfWeek
    case class Fri() extends DayOfWeek
    case class Sat() extends DayOfWeek
    case class Sun() extends DayOfWeek

  def main(arg: Array[String]): Unit = {
    def whatToDo(dayOfWeek: DayOfWeek): String = dayOfWeek match {
      case Sat() => "Hurray!"
      case Sun() => "Yahoo!"
    }
  }
...
Рейтинг: 0 / 0
Изолированные классы
    #40018194
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И здесь не нужен полиморфизм. Оптимизирующий компиллятор (не Java а другой) может
использовать широкий спектр подходов чтобы вообще его убрать. ООП приходит смерть.
На арену выходит ФП.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018195
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя может я ошибаюсь. Может default case нужен. Но у нас -же пятница? не?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018196
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Так чем енам то не подходит?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018197
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дружище я на самом деле не силен во всех фичах Scala.

Давай я закину тебе еще идейку.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018199
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
object Main {

  sealed class DayOfWeek
    case class Mon() extends DayOfWeek
    case class Tue() extends DayOfWeek
    case class Wen() extends DayOfWeek
    case class Thi() extends DayOfWeek
    case class Fri() extends DayOfWeek
    case class Sat() extends DayOfWeek
    case class Sun(message : String) extends DayOfWeek

  def main(arg: Array[String]): Unit = {
    def whatToDo(dayOfWeek: DayOfWeek): String = dayOfWeek match {
      case Sat() => "Hurray!"
      case Sun(_) => "Hurray!"
      case _ => "Okay...:("
    }
  }

}
...
Рейтинг: 0 / 0
Изолированные классы
    #40018200
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Дружище я на самом деле не силен во всех фичах Scala.

Давай я закину тебе еще идейку.

Так мы про джаву же.
Про скалу все и так понятно, в общих чертах ты правильно описал. Только вот эту трихомандию с sealed по историческим причинам сделали потому что не было нормальных енумов. А в скале 3 их наконец-то запили Ржачно конечно получается
...
Рейтинг: 0 / 0
Изолированные классы
    #40018201
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
object Main {

  sealed class DayOfWeek
    case class Mon() extends DayOfWeek
    case class Tue() extends DayOfWeek
    case class Wen() extends DayOfWeek
    case class Thi() extends DayOfWeek
    case class Fri() extends DayOfWeek
    case class Sat() extends DayOfWeek
    case class Sun(message : String) extends DayOfWeek

  def main(arg: Array[String]): Unit = {
    def whatToDo(dayOfWeek: DayOfWeek): String = dayOfWeek match {
      case Sat() => "Hurray!"
      case Sun(_) => "Hurray!"
      case _ => "Okay...:("
    }
  }

}


Сильно сомневаюсь что джава версия паттерн матчинг а такое позволит. Именно про это я и веду речь, если поле message мутабельное это акций гемор
...
Рейтинг: 0 / 0
Изолированные классы
    #40018208
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я всем говорю - курите первоисточник. Всё что JCP предлагает - это вторичные пережованные идеи.
Очень мало в программировании нового в наше время. Можно назвать новым применение глубоких
нейросеток - но это мать ево НЕ программирование а математика. Там по настоящиму надо учиться.
И не спринг с хибернейтом.

Что вообще вы можете назвать новым?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И тот паттерн-матчинг - не настоящий.

Вот настоящий. Это по идее Haskell. Но я пишу от руки поэтому оно нихрена не скомпилируется но идея такая.

Код: python
1.
2.
3.
4.
5.
data MyDataType = Sun | Mon | Tue ......

whatToDo(Sat) = "Hehe"
whatToDo(Sun) = "Hurray"
whatToDo(_) = "Ouch...:("



Тоесть я свёл все это дерьмо к декларации трех функций. А не к псевдо-switch оператору.

Больше нет ничего. Ни полиморфизьма. Ни объектов. Мир застывшей логики.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018210
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ну самое новое это наверное dependent types, хотя разрабатывать теорию начали давно, только недавно появилась реальная перспектива промышленного применения.
Из интересных идей также отмечу работу с памятью в Rust, которая безопасная управляемая и быстрая. И никаких gc.
Также интересна идея STM. Транзакционная память тоже немолодая идея, но наконец то его можно пробовать в реальных проектах.
Ну и касаемо больше fp - есть такой стиль написания программы как final tagless encoding, очень большой потенциал для убийства ООП.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018212
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае с Java может произойти не убийство а загрязнение языка. И я сочувствую новичкам
которые входят в язык. Им сложнее освоить базу. Она - расширяется и через 10 лет догонит С++.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018213
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
И тот паттерн-матчинг - не настоящий.

Вот настоящий. Это по идее Haskell. Но я пишу от руки поэтому оно нихрена не скомпилируется но идея такая.

Код: python
1.
2.
3.
4.
5.
data MyDataType = Sun | Mon | Tue ......

whatToDo(Sat) = "Hehe"
whatToDo(Sun) = "Hurray"
whatToDo(_) = "Ouch...:("



Тоесть я свёл все это дерьмо к декларации трех функций. А не к псевдо-switch оператору.

Больше нет ничего. Ни полиморфизьма. Ни объектов. Мир застывшей логики.


Ну скаловский паттерн матчинг конечно более развесистый но и более мощный чем у хаскеля. А вот что касается того что под соусом паттерн матчинг а пытаются всунуть в джаву.... Там да, бессмысленно и беспощадно, я о том и говорю. Лепят какие то полу-недо-фичи обрезанные и которые невозможно юзать в идиоматическом стиле и на мой взгляд только усложняют язык. Но видимо уплочено
...
Рейтинг: 0 / 0
Изолированные классы
    #40018214
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В случае с Java может произойти не убийство а загрязнение языка. И я сочувствую новичкам
которые входят в язык. Им сложнее освоить базу. Она - расширяется и через 10 лет догонит С++.

Угу, а загрязнение и приводит к смерти. Ниша сильно сузится. Вообще не понимаю стартов новых проектов на джаве. Не нравится скала или кложур - на тебе котлин
...
Рейтинг: 0 / 0
Изолированные классы
    #40018215
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мир Java ентерпрайза пока зиждется на строгом убеждении что write once ... works everywhere.
И пока это работает бинарникам ничего не грозит. Вот как долго без эволюции OpenJDK и Oracle
смогут удерживать JVM в состоянии поддержки. Старые фичи тянут на дно как гиря. Сама JVM
это по сути калькулятор Mk-60. Там даже нет намёка на команды поддержки SSE1/2/3, AVX.

Мы не можем собрать эффективный H.264 декодер видео на Java не потому что она плоха
а потому что у нас нет прямого управления фичами современного процессора. Я шутки
ради создал топик где я делаю интринзик на ассемблере x86 в Java коде но в этой шутке
я ждал реакции форума. Что скажут?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018233
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
у меня иерархия глубиной дай бог классов в 3
"Глубина наследования" и "сложность иерархии" - вещи сугубо "попиндикулярные". В контексте запечатанных (sealed) классов - особенно.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018235
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Ключевое слово упоротых
Т.е. чуть менее, чем все разработчики API. Java SE API - в том числе.

P.S.
Когда же вы все научитесь спокойно относиться к фичами и возможностям, которые не нужны лично вам ?..
...
Рейтинг: 0 / 0
Изолированные классы
    #40018236
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Что скажут?
Ровно то, что было сказано ещё в античное время: "Богу - богово, а кесарю - кесарево".
Для платформы, которая "бегает везде" нет смысла тянуть в язык фичу, доступную "почти нигде". Сначала - более-менее массовое внедрение и уже потом - поддержка платформы.
При этом, что характерно, никто не мешает сделать так, как вам хочется - собственно JVM требует для своей работы всего пяти классов. Всё остальное вы можете переделать. Если не создавать собственный компилятор - кое-что придётся оставить как есть.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018286
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
забыл ник
Ключевое слово упоротых
Т.е. чуть менее, чем все разработчики API. Java SE API - в том числе.

P.S.
Когда же вы все научитесь спокойно относиться к фичами и возможностям, которые не нужны лично вам ?..

Ну у нас тут все либо-писатели сидят конечно. Перефразируя, упоротого прикладного программиста, надеюсь стало легче.
Sealed в скале я использую уже 5 лет и в хвост и в гриву,
так что не надо мне рассказывать про нужнгсть. применение у этой фичи в основном такое -
1) замена энумам
2) более безопасный по отношению к рантайм ошибкам паттерн матчинг.
Оба этих кейса легко покрываются хорошо имплементированными энамами, что в джаве на редкость хорошо сделано.
Я конечно допускаю, что чего-то не понимаю и в этом случае тебе не составит труда привести пару кейсов для которых sealed просто необходим
...
Рейтинг: 0 / 0
Изолированные классы
    #40018292
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
не составит труда привести пару кейсов для которых sealed просто необходим
Закрыть реализацию.
Исторический пример - "Sealed: true" в манифесте jar-файла.
Зачем может быть нужно?
В java-классе доступ по умолчанию "в пределах пакета". Предположим, что я реализовал некий "чувствительный" класс, который используется другими классами в том же пакете. Работа с лицензиями или что-нибудь этакое. Наследоваться от такого класса бессмысленно - "важные" методы и переменные не имеют модификаторов доступа, а значит и у наследников не будет доступа "куда не надо".
Но, если "чужак" поместит в этот пакет собственный класс, то сможет получить "некие преференции", которых разработчик трудолюбиво его лишал. Просто создаём собственный класс в пакете разработчика, кладём его "рядышком" и - всё. "Взлом" делается на уровне скрипта запуска.
Если jar "запечатан", то классы любых его пакетов будут загружаться строго из одного места, а значит не будет работать или класс "взломщика" или класс разработчика.
Понятное дело, что такая "защита" тривиально обходится переупаковкой jar-файла, но во многих случаях и такой вариант "защиты" более чем достаточен.

Аналогично и с запечатанными классами. Есть интерфейс (абстрактный класс), который должен быть реализован (расширен) только разработчиком и никем кроме него. При этом разработчику требуется несколько реализаций. Запечатываем (только) интерфейс (класс) и получаем гарантию, что "никто кроме нас".
...
Рейтинг: 0 / 0
Изолированные классы
    #40018311
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Практический смысл так и остался непонятен. Насчёт интерфейсов - это по определению вещь, которая должна быть публично доступная и расширяемая. Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
Что касается классов - чем final не устраивает хз. В общем так ничего убедительного и не услышал.
Насчёт sealed пакетов, кстати интереснее - давно задумывался почему виртуальная машина даёт загружать пекедди с одинаковым именем с разных источников.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018319
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
А подумать? Ограничивается не доступ собственного (контролируемого) кода, а доступ "посторонних" к возможностям собственного кода.

P.S.
"Я ему - покажи. А он мне - в нашем клубе джентельменам верят на слово. И тут мне карта как попрёт"
...
Рейтинг: 0 / 0
Изолированные классы
    #40018340
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Практический смысл так и остался непонятен. Насчёт интерфейсов - это по определению вещь, которая должна быть публично доступная и расширяемая. Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
Что касается классов - чем final не устраивает хз.

Я вижу себе смысл не в секюрности а в создании непротиворечивой доменной модели.
Тоесть если вы определили sealed class Gender - то у вас будет строго детерминированный
набор типов Male, Female, Male-To-Female .e.t.c. сколько наша medical insurance system
поддерживает типов клиентов. И никто кроме архитектора не подкинет новых.

Это можно сказать так. Final class - это ограничитель по "вертикали" диаграмме наследования
а sealed - лимит по "горизонтали" или по quantity.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018342
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник

Насчёт sealed пакетов, кстати интереснее - давно задумывался почему виртуальная машина даёт загружать пекедди с одинаковым именем с разных источников.

Я думаю что фразу "дает загружать" надо расписать как некую последовательность шагов.
Или поисковых операций.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018638
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некоторые sealed scala classes:

Код: java
1.
2.
sealed trait Nothing
sealed trait Null



Код: java
1.
2.
3.
4.
private[immutable] sealed abstract class MapNode[K, +V] extends Node[MapNode[K, V @uV]] {
.....
sealed abstract class Stream[+A] extends AbstractSeq[A]
.....
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Изолированные классы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]