powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как реализовать "указатель" на класс
40 сообщений из 40, показаны все 2 страниц
как реализовать "указатель" на класс
    #38079711
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как мне сделать так , что бы поменять класс только в одном месте, и что бы оно везде стало нормуль.
были бы узазатели на класс. кинул бы где недо , и делов. а как без указалей лучше сделать

пусть есть класс Person
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class Person 
{ public int id
   public string Name;
}
class TopManager
{   public Person[] toper;
}
class BestWorker
{   public Person[] bester;
}


и типа если мне надо заменить/подменить экземляр класса Person во всех классах куда он входит то мне тупо надо обойти все
нужные классы, найти нужный экземпляр и заменить на новый.
( Вариант с заменой значений , а не заменой класса не годится)

как такое лучше реализовать. ( или опять придётся делать класс-посредник, эмулятор указателя.)
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079718
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что такое указатель на класс?
термин класс существует только во время разработки, это абстракция.
во время выполнения никаких классов нет.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079729
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er( Вариант с заменой значений , а не заменой класса не годится)
А toper - это массив чего? Значений, объектов, экземпляров или классов?
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079735
sld
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sld
Гость
возможно стоит использовать интерфейсы
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079753
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sld,

Как именно?
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079771
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonА toper - это массив чего? Значений, объектов, экземпляров или классов?
ну если не совсем понятно , вот более понятный пример

Код: c#
1.
2.
3.
4.
5.
6.
class Point
{ public float X,Y;
}
class Line
{ public Point P0,P1;
}



любая линия опирается на точки.
если 2 линии входят имеют одну общую точку , то это должен быть один и тот экземпляр класса Point.
так вот было 2 паралельные линии (100,100)(200,100) и (100,200)(200,200).
создано 4 экземпляра класса Point.
потом потребовалось линии соединить в координате (100,100). станет 3 точки , одна выбрасывается. и вот та, которая выбрасывается, должна быть заменена на другую. не получить новое значение , а именно заменить ( иначе будет 2 точки с одинаковым значением - очень плохо).

заменять точку , пробегаясь по всем линиям плохое решение.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079775
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sldвозможно стоит использовать интерфейсы
это не решение.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079781
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erдолжна быть заменена на другую. не получить новое значение , а именно заменитьобычное присваивание.
Point P0 - это ведь ссылка на экземпляр Поинт
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079800
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечобычное присваивание.
этот вариант хорош, но! если линий миллион , да и не только линий , а и других графических примитивов, то простое присваивание это уже банальный перебор. точка то не знает , кто на неё ссылается, в какие множества она входит.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079811
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erЯростный Мечобычное присваивание.
этот вариант хорош, но! если линий миллион , да и не только линий , а и других графических примитивов, то простое присваивание это уже банальный перебор. точка то не знает , кто на неё ссылается, в какие множества она входит.
если каждая точка создавалась с помощью new, то да это будут разные указатели
и как их все обновить, кроме как в цикле сказать сложно
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079823
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создай себе коллекцию точек, и добавляй туда только новые точки,
по мере создания, если требуемая точка уже была создана бери её из коллекции.
Тогда у тебя все одинаковые точки будут ссылкой на один и тот же объект,
и ты сможешь менять их одновременно везде.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079831
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er
любая линия опирается на точки.
если 2 линии входят имеют одну общую точку , то это должен быть один и тот экземпляр класса Point.
так вот было 2 паралельные линии (100,100)(200,100) и (100,200)(200,200).
создано 4 экземпляра класса Point.
потом потребовалось линии соединить в координате (100,100). станет 3 точки , одна выбрасывается. и вот та, которая выбрасывается, должна быть заменена на другую. не получить новое значение , а именно заменить ( иначе будет 2 точки с одинаковым значением - очень плохо).

заменять точку , пробегаясь по всем линиям плохое решение.

ну если не совсем понятно , вот более понятный пример

P1 = {100, 100} // P1.x и P1.y
P2 = {100, 200}
P3 = {200, 100}
P4 = {200, 200}

L1 = {P1, P2} // L1.start и L2.end
L2 = {P3, P4}

// ЗАМЕНЯЕМ в L2 точку P3 на P1:
L2.start = P1

// Стало:
L1 = {P1, P2}
L2 = {P1, P4}

Где же по-вашему мы создали новую точку?! Таки заменили.
И, главное, как же по-вашему без строчки L2.start = P1 иначе произвести замену?

Я так понял, что вы представили себе, как не точку в прямой меняете (согласно постановке задачи), а вместо этого меняете координаты точки, которая стала лишней. И полагаете, что каким-то чудесным образом компьютер должен сам решить, что раз у ней новые координаты совпали с точкой P1, то и надо ее заменить на P1 автоматически. Ну разумеется, что для такого поведения вы должны соорудить прослойку, которая будет это делать. Компьютер же - не координатная плоскость с точками. Для него пара чисел - это просто пара чисел. А пары чисел, находящиеся в разных местах памяти - это разные пары чисел, в разных местах памяти. Вы в своем воображении перетянули одну точку на другую и для вас они обе стали одной.

Разумеется, комп этому надо научить. Если действительно надо. И да, это будет что-то типа хранилища точек. А уже на них будут ссылаться линии и прочие абстракции. Тогда вы надцатой точке меняете координаты на новые, а по линиям, которые на нее ссылаются, не шастаете.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079837
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETи как их все обновить, кроме как в цикле сказать сложно

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class Point
{ public float X,Y;
}
class ZPoint
{
  private Point realpoint;
  public float X{ get{return realpoint.X}}
  public float Y{ get{return realpoint.Y}}
}
class Line
{ public ZPoint P0,P1;
}



заменив в ZPoint значение realpoint всё будет хорошо. все линии будут ссылатся на то , что нужно. и не надо никаких цыклов и сложностей с разными примитивами.
но эти посредники - это же такой костыль.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079845
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er.NETи как их все обновить, кроме как в цикле сказать сложно

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class Point
{ public float X,Y;
}
class ZPoint
{
  private Point realpoint;
  public float X{ get{return realpoint.X}}
  public float Y{ get{return realpoint.Y}}
}
class Line
{ public ZPoint P0,P1;
}



заменив в ZPoint значение realpoint всё будет хорошо. все линии будут ссылатся на то , что нужно. и не надо никаких цыклов и сложностей с разными примитивами.
но эти посредники - это же такой костыль.

Это какая-то ерунда.

Вот моё предложение 13633662
последующий постер его поддерживает
нужно хранилище точек
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079848
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erэтот вариант хорош, но! если линий миллион , да и не только линий , а и других графических примитивов, то простое присваивание это уже банальный перебор. точка то не знает , кто на неё ссылается, в какие множества она входит.
А откуда она взялась и с чего вдруг поменяла свои координаты?

Вот я в Кореле рисую. Тяну точку. Просто точку? Или точку конкретного многоугольника? Я же точно знаю, к чему она относится, а к чему нет? Так чего я буду перебирать всё?

А вот если наоборот - точки у вас главенствуют, а фигуры к ним привязаны. Тогда и структуры данных соответсвующим образом стройте. Т.е. "Сборище используемых точек" - это первое, что должно было у вас появится )) И это не класс-посредник, а одна из ключевых абстракций будет.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079850
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,
автора вместо этого меняете координаты точки
ну так в этом то весь и смысл.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079860
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETнужно хранилище точек+1
только тогда может возникнуть другая проблема - если, например, надо сдвинуть точку (5, 5), но для каких-то линий этого делать не нужно. Тогда придется им назначать новую точку.
к тому же если у нас уже есть (5, 4), то превращение (5, 5) в (5, 4) приведет к дублированию.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079862
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч.NETнужно хранилище точек+1
только тогда может возникнуть другая проблема - если, например, надо сдвинуть точку (5, 5), но для каких-то линий этого делать не нужно. Тогда придется им назначать новую точку.
к тому же если у нас уже есть (5, 4), то превращение (5, 5) в (5, 4) приведет к дублированию.
да это всё верно
только пока не надо грузить товарища )))
пусть он хотя бы поймёт чего ему предлагают сделать )
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079864
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вот только коллекция используемых точек не избавляет от появления дубликатов в процессе ИЗМЕНЕНИЯ координат. Точнее, в случае уникальной коллекции будем получать подзатыльник
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079866
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьху ты, у дураков мысли сходятся прям как эти самые точки )))
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079871
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonДа, вот только коллекция используемых точек не избавляет от появления дубликатов в процессе ИЗМЕНЕНИЯ координат. Точнее, в случае уникальной коллекции будем получать подзатыльник
ну а что коллекция будет не уникальна
и заменять будем точкой из коллекции если она там есть с нужными координатам
если нет то создаём новую
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079872
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечесли, например, надо сдвинуть точку (5, 5), но для каких-то линий этого делать не нужно.
это не существующий вариант.
.NETтолько пока не надо грузить товарища )))
пусть он хотя бы поймёт чего ему предлагают сделать )
предлагаемый вариант коллекции не избавляет от ситуации подмены точек. подмены! когда точка уже была , и её сместили в ту область пространства , которая "занята" другой точкой.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079876
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETпусть он хотя бы поймёт чего ему предлагают сделать )
Так проблема дублирования его как раз и волновала больше всего.

Короче говоря, как не реализуй, а все-равно найдутся операции, требующие перебора с целью изменения содержимого объектов. Чтобы минимизировать затратность таких операций - нужна грамотная иерархия или индексация, позволяющая не перебирать весь миллион объектов, когда в этом нет реальной необходимости.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079879
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon...требующие перебора с целью изменения содержимого объектов. Чтобы минимизировать затратность таких операций - нужна грамотная иерархия или индексация, позволяющая не перебирать весь миллион объектов, когда в этом нет реальной необходимости.
наличие указателя на класс полностью заменяет этот адовый поиск.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079881
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erкоторая "занята" другой точкой.
Вопрос в том, чем плохо наличие больше одной точки с одинаковыми координатами?
Если это не допустимо, то таки перебор. Если перебор оооочень тяжелый, то возможно придется для каждой точки кроме координат хранить еще "Массив объектов, которые на меня ссылаются". Но что это за задача, требующая такой избыточности?
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079887
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erналичие указателя на класс полностью заменяет этот адовый поиск.
Указателя на ОБЪЕКТ (экземпляр класса).

И не заменяет. Вместо шастания по линиям вы будете шастать по псевдо-точкам.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079896
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon Но что это за задача, требующая такой избыточности?
это общая задача о единоначалии. какие бы манипуляции о "объектом" я не производил, все остальные, кто на него ссылается слушаются безприкословно.
ну да ладно. видимо опять придётся впрягатся в костыли.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079917
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erЯростный Мечесли, например, надо сдвинуть точку (5, 5), но для каких-то линий этого делать не нужно.
это не существующий вариант.
beg-in-erкогда точка уже была , и её сместили в ту область пространства , которая "занята" другой точкой.любопытно!

Т.е. ситуация, когда из одной точки делаем две разных, исключена, зато две разные могут стать одинаковыми? В итоге рано или поздно придем к одной точке
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079924
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonВопрос в том, чем плохо наличие больше одной точки с одинаковыми координатами?будет непонятно, какую точку - А или В - использовать для нового объекта, если у них одинаковые координаты. При том что одна из них в дальнейшем может сдвинуться.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079967
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне не понятно вообще откуда всплыло это понятие "указатель на класс"
емнип, это что-то из smalltalk чтоли?
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079974
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETмне не понятно вообще откуда всплыло это понятие "указатель на класс"
емнип, это что-то из smalltalk чтоли?в Делфи вроде такое есть (по крайней мере в 6-м было).
хотя название топика неудачное.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38079996
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erEdd.Dragon Но что это за задача, требующая такой избыточности?
это общая задача о единоначалии. какие бы манипуляции о "объектом" я не производил, все остальные, кто на него ссылается слушаются безприкословно.
ну да ладно. видимо опять придётся впрягатся в костыли.

Они и так случшаются. Замена координат в объекте-точке - это манипуляция с объектом. В линиях для этого же ничего менять не надо.

А вот замена самого объекта - это манипуляция с двумя объектами. Один из которых - новый. Что странного в том, что придется пройтись по N объектам и вписать в них новенького? Ничего. Ровто то же самое ты делал, когда создавал миллион линий и каждой из них первый раз прописывал ссылки на точки.

Но создание было 1 раз. А слепка (по всей видимости) - это чуть ли не единственная и очень многократная операция у тебя. Потому нет ничего костыльного во введении промежуточного класса или массива. Главное, чтобы он не стал головной болью в других операциях.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38080020
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETмне не понятно вообще откуда всплыло это понятие "указатель на класс"
емнип, это что-то из smalltalk чтоли?

Я все до сих пор надеюсь что автор поведает, как он умудряется множественное наследование делать в .NET. А он утверждал что это возможно! ) Но на самом интересном исчез куда-то.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38080023
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

авторА вот замена самого объекта - это манипуляция с двумя объектами. Один из которых - новый. Что странного в том, что придется пройтись по N объектам и вписать в них новенького? Ничего. Ровто то же самое ты делал, когда создавал миллион линий и каждой из них первый раз прописывал ссылки на точки.
я мож малость неточно выразился.
"объект" был взят в кавычки - тут "Объект" это точка с конкретными координатами , без привязки к способу реализации.
манипуляции с "объектом" это любые действия связанные с точкой, вплоть до пересоздания класса Point. т.е. если вызвать new Point ( бывает и такая необходимость, например класс Point2, с дополнительными полями ) вообще ничего не должно будет изменится.

а пробегатся по всем примитивам это тоже утомительно. т.к. разные примитивы имеют разное количество точек. в частности линия 2 точки, квадрат 4, кривая безье 4, многогранник..... не конечно можно под них написать обходчик, но это тоже костыль.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38080026
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexxxxxЯ все до сих пор надеюсь что автор поведает, как он умудряется множественное наследование делать в .NET. А он утверждал что это возможно! ) Но на самом интересном исчез куда-то.
Lexxxx. я помню, помню. ща просто не до него.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38080029
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erманипуляции с "объектом" это любые действия связанные с точкой, вплоть до пересоздания класса Point. т.е. если вызвать new Point ( бывает и такая необходимость, например класс Point2, с дополнительными полями ) вообще ничего не должно будет изменится.

Это как так?! На кой хрен чем-то манипулировать если ничего не должно изменится?!
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38080030
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,
Point конечно абстрактно можно назвать объектом, но все таки это структура, со всеми вытекающими
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38080042
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиbeg-in-er,
Point конечно абстрактно можно назвать объектом, но все таки это структура, со всеми вытекающими
хорошо ,речь идёт не о System.Drawing.Point а о MyProject.Point
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38080052
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexxxxxЭто как так?! На кой хрен чем-то манипулировать если ничего не должно изменится?!
ну была обычная точка , у которой было всего 2 поля - координаты. и внезапно она стала волшебной - точкой поворота, вершиной или чем то ещё. тогда мы эту точку должны переопределить. но при этом те, кто на неё ссылается не должны пострадать.
...
Рейтинг: 0 / 0
как реализовать "указатель" на класс
    #38080059
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erа пробегатся по всем примитивам это тоже утомительно. т.к. разные примитивы имеют разное количество точек. в частности линия 2 точки, квадрат 4, кривая безье 4, многогранник..... не конечно можно под них написать обходчик, но это тоже костыль.
Так любой код можно назвать костылем, т.к. приходится что-то придумывать и описывать )))


beg-in-erну была обычная точка , у которой было всего 2 поля - координаты. и внезапно она стала
Другой точкой. Чтобы никто от этого в панику не впал, ты и ввел понятие "Morfable Point". Да, это костыль между твоими мыслями и данными в памяти машины.
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как реализовать "указатель" на класс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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